Backend-RoadMap_인터넷 개념 정리

2023. 3. 21. 20:17CS/Backend-RoadMap

728x90

인터넷?

  • 컴퓨터들이 서로 통신 가능한 거대한 네트워크

네트워크

  • 서로 연결된 컴퓨터 또는 기타 장치 그룹

기본 개념 및 용어

  • 패킷 :
    • 인터넷을 통해 전송되는 작은 데이터 단위
  • 라우터 :
    • 서로 다른 네트워크 간에 데이터 패킷을 전달하는 장치
  • IP 주소:
    • 네트워크의 각 장치에 할당된 고유 식별자
  • 도메인 이름 :
    • 웹사이트를 식별하는 데 사용되는 사라미이 읽을 수 있는 이름
  • DNS :
    • 도메인 이름을 IP 주소로 변환하는 역할
  • HTTP :
    • Hypertext Transfer Protocol
    • client와 server 간에 데이터 전송하는데 사용되는 프로토콜
  • HTTPS :
    • client와 server 간의 보안 통신을 제공하는 데 사용되는 암호화된 버전의 HTTP
  • SSL/TSL : Secure Sockets Layer 및 Transport Layer Securty 프로토콜은 인터넷을 통한 보안 통신을 제공하는데 사용

OSI 7 계층

  • 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것

  • 1계층 - 물리계층(Physical Layer)
    • 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송
    • 데이터 전달만 수행
      • 데이터가 무엇인지, 에러가 있는지 상관 없음
    • 장비 종류
      • 통신 케이블, 허브 등
    • 통신 단위 : 비트
      • 0과 1로 표현
  • 2계층 - 데이터 링크 계층(DataLink Layer)
    • 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
    • 오류 찾기 및 재전송 기능 수행
    • 포인트 투 포인트 간 신뢰성있는 전송을 보장하기 위한 계층
    • CRC 기반 오류제어와 흐름 제어가 필요
      • CRC: Cyclic Redundancy Check, 순환 중복 검사
        • 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지 확인하기 위한 체크값을 결정하는 방식
    • 네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾고, 수정하는데 필요한 기능적 절차적 수단 제공
    • 직접 이어진 곳에만 연결 가능
    • Mac주소를 가지고 통신
    • 장비 종류
      • 브리지, 스위치
    • 전송 단위 : 프레임
    • 브릿지나 스위치를 통해 맥주소를 가지고 물리 계층에서 받은 정보를 전달
  • 3계층 - 네트워크 계층(Network Layer)
    • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)
    • 경로를 선택하고, 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 역할
    • 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층
    • 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질을 제공하기 위한 기능적, 절차적 수단을 제공
    • 라우팅, 흐름 제어, 세그먼테이션, 오류제어 등을 수행
      • 라우팅 : 네트워크에서 경로를 선택하는 프로세스
      • 흐름 제어: 송신 측과 수신 측의 버퍼 크기 차이로 인해 생기는 데이터 처리 속도 차이를 해결하기 위한 기법
      • 세그먼테이션 : 패킷의 크기를 일정하게 만드는 것
      • 오류제어: 전달 과정의 오류를 제어 하는 것
    • 데이터를 연결하는 다른 네트워크를 통해 전달함으로 인터넷이 가능하게 만드는 계층
    • 장비 종류:
      • 라우터, Layer 3 스위치
    • 전송 단위 : 패킷
  • 4계층 - 전송계층(Transport Layer)
    • 통신을 활성화 하기 위한 계층
    • 데이터 수신시 4계층에서 데이터를 합쳐서 5계층으로 전달
    • 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받을수 있도록 하여 상위 계층에서 데이터 전달의 유효성이나 효율성을 생각하지 않도록 함
    • 시퀀스 넘버 기반의 오류 제어방식 사용
    • 특정 연결의 유효성 제어, 일부 프로토콜은 상태 개념 존재, 연결 기반
      • 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송
    • 기능
      • 오류 검출 및 복구
      • 흐름제어
      • 중복검사
  • 5계층 - 세션계층(Session Layer)
    • 데이터가 통신하기 위한 논리적 연결
    • 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법 제공
    • 동시 송수신 방식, 반이중 방식, 전이중 방식의 통신과 함께 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행
    • 기능
      • 세션 설정, 유지, 종료, 전송 중단시 복구
  • 6계층 - 표현계층(Presentation Layer)
    • 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고 암호화
    • 코드 간 번역을 담당
    • 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 덜어준다
    • MIME 인코딩이나 암호화 등의 동작이 이루어짐
    • 데이터가 Text인지, GIP인지 등을 구분하는 역할 등을 수행
  • 7계층 - 응용계층(Application Layer)
    • HTTP, FTP, SMTP 등 프로토콜이 있음
    • 해당 통신 패킷들은 프로토콜에 의해 모두 처리됨
    • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
    • 네트워크 소프트웨어 UI부분, 사용자 입출력 부분

OSI 7계층 데이터 흐름

  • 1계층

  • 2계층

  • 3계층

  • 4계층

  • 5 ~ 7 계층

TCP/IP 4계층

  • 1계층 - 네트워크 엑세스 계층(NetworkAccess Layer)
    • OSI 7계층의 물리, 데이터링크 계층에 해당
    • TCP/IP 패킷을 네트워크 매체로 전달
    • 네트워크 매체에서 TCP/IP 패킷을 받음
    • 에러 검출 기능, 패킷의 프레임화
    • 네트워크 접근 방법, 프레임 포맷, 매체에 대해 독립적으로 동작하도록 설계
    • 물리적 주소로 MAC 사용
    • LAN, 패킷망 등에 사용
  • 2계층 - 인터넷 계층(InternetLayer)
    • OSI 7 계층의 네트워크 계층에 해당
    • addressing, packaging, routing 기능 제공
    • 네트워크상 최종 목적지까지 정확하게 연결되도록 연결성 제공
    • 프로토콜 :
      • IP, ARP, RARP
  • 3계층 - 전송 계층(Transport Layer)
    • OSI 7계층의 전송 계층에 해당
    • IP와 PORT를 이용하여 프로세스와 통신
    • 애플리케이션 계층의 세션과 데이터그램 통신 서비스 제공
    • 통신 노드간의 연결 제어
    • 신뢰성 있는 데이터 전송
    • 프로토콜 :
      • TCP, UDP
  • 4계층 - 응용계층(Application Layer)
    • OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당
    • 프로그램이 직접 상호작용하는 레이어
    • 데이터를 처음으로 받는 곳
    • 다른 계층의 서비스에 접근할 수 있게 하는 애플리케이션 제공
    • 애플리케이션들이 데이터를 교환하기 위해 사용하는 프로토콜 정의
    • 프로토콜
      • HTTP, SMTP, FTP, SSH 등
    • TCP/UDP 기반 응용 프로그램 구현시 사용

프로토콜

  • 프로토콜 :
    • 장치와 시스템 간에 정보가 교환되는 방식을 정의하는 일련의 규칙 및 표준
    • 컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 정해놓은 약속, 규약
  • 프로토콜의 요소
    • 구문
      • Syntax
      • 데이터의 형식이나 신호
      • 부호화 방법 등을 정의
    • 의미
      • Semantics
      • 오류 제어, 동기 제어, 흐름 제어 등 각종 제어 절차에 관한 제어 정보를 정의
    • 순서
      • Timing
      • 송/수신자 간 혹은 양단의 통신 시스템과 망 사이의 통신 시스템과 망 사이의 통신 속도나 순서등을 정의
  • 프로토콜의 기능
    • 세분화(or 단편화)와 재합성
      • 대용량 크기의 파일은 작은 단위로 나누어 보내고 수신측에서는 재조합 필요
    • 캡슐화
      • PDU는 SDU와 PCI로 구성
      • 정보들을 붙이는 것이 캡슐화
      • PDU:
        • 프로토콜 데이터 단위
        • 데이터가 전송될 때 일정 크기의 데이터 블록
      • SDU
        • 전송하려는 데이터
      • PCI
        • 제어정보 의미
        • 주소, 오류 검출 코드, 프로토콜 제어 정보 등
    • 연결제어
      • 연결 지향형 데이터 전송
        • 두 시스템이 서로 데이터를 교환할 때 연결을 설정하는 경우 연결 설정, 데이터 전송, 연결 해제 3단계로 구성
        • ex) TCP
      • 비연결 지향형 데이터 전송
        • 연결을 설정하지 않는 경우
        • 이렇게 전송되는 데이터를 데이터그램
        • ex) UDP
    • 오류 제어
      • SDU나 PCI가 잘못되었을 경우 이를 발견하는 기법
        • SDU : 전송하려는 데이터
        • PCI : 제어정보
      • 패리티 비트, 잉여도 검사를 통해 발견 가능
      • 순서 검사나 일정시간 안에 패킷을 받지 못하면 재전송 요구 방식으로 이루어짐
    • 흐름제어
      • 송신측 개체로부터 오는 데이터의 양이나 속도를 조절하는 기능
      • 기법:
        • 정지-대기:
          • 패킷에 대한 응답 후에 다음 패킷을 보냄
        • 슬라이딩 윈도우:
          • 가용 데이터 분량의 패킷을 한번에 보낸 후 응답 패킷을 받으면 다시 그만큼 데이터를 한번에 보내는 방식
    • 동기화
      • 데이터를 전송할 때 각 객체는 타이머 값이나 윈도우 크기 등을 기억해야하는데, 이런 값을 공유하는 것
    • 순서 설정
      • PDU가 전송될 때 보내지는 순서를 명시하는 기능
      • 연결 지향형에만 사용
      • 순서 지정 이유는 흐름 제어, 오류 제어 등을 위해 사용
      • PDU는 상대한테 보내면 상대는 순서에 맞게 데이터를 재구성하고 오류가 있는 경우 재전송 요청
        • PDU : 프로토콜 데이터 단위
        • 연결 지향형: ex)TCP
    • 주소 설정
      • 한 개체가 상대 개체에 데이터를 전송하려면 상대의 이름을 알아야함
      • 프로토콜에는 각 전송 계층에 맞는 주소를 지정하는 기능이 있음
    • 다중화
      • 통신 선로 하나에서 여러 시스템이 동시에 통신할 수 있는 것
    • 전송 서비스
      • 우선순위 결정, 서비스 등급과 보안 요구 등을 제어하는 서비스
  • 프로토콜 사용 이점
    • 서로 다른 제조업체 및 공급업체의 장치와 시스템이 서로 원활하게 통신 할 수 있음
  • 프로토콜의 종류
    • IP
      • 데이터 패킷을 올바른 대상으로 라우팅 하는 역할
    • TCP 및 UDP
      • 패킷이 안정적이고 효율적으로 전송되도록 하는 역할
    • DNS
      • 도메인 이름을 IP 주소로 변환하는 데 사용
    • HTTP
      • 클라이언트와 서버 간 데이터 전송하는 데 사용
    • ARP, ICMP, SNMP, SMTP, POP, FTP, TFTP, DHCP 등의 프로토콜 존재

IP 주소 및 도메인 이름

  • IP 주소:
    • 네트워크의 각 장치에 할당된 고유 식별자
    • 데이터를 올바른 대상으로 라우팅하여 정보가 의도한 수신자에게 전송되도록 하는 데 사용
    • IPv4, IPv6
    • ex) 192.168.1.1
  • 도메인 이름:
    • 웹 사이트 및 기타 인터넷 리소스를 식별하는데 사용되는 사람이 읽을 수 있는 이름
    • 일반적으로 마침표로 구분된 두개 이상의 부분으로 구성
    • ex) google.com
  • DNS:
    • 도메인 이름을 IP 주소로 변환하는 역할을 하는 인터넷 인프라의 중요한 부분
    • 웹 브라우저에 도메인 이름 입력 → DNS 서버에 DNS 쿼리 송신 → 해당 IP 주소를 사용하여 웹 사이트 및 리소스에 연결

HTTP, HTTPS

  • 인터넷 기반 서비스에서 가장 일반적으로 사용되는 프로토콜
  • HTTP:
    • Hypertext Transfer Protocol
    • 클라이언트와 서버 간에 데이터를 전송하는 데 사용되는 프로토콜
    • 웹사이트 방문 → 웹 브라우저가 서버에 HTTP 요청하여 웹 페이지 및 리소스 요청 → 서버는 요청된 데이터를 포함하는 HTTP 응답을 클라이언트로 전송
  • HTTPS:
    • HTTP Secure
    • SSL/TLS(Secure Sockets Layer/Transport Layer Security) 암호화를 사용하여 클라이언트와 서버 간에 전송되는 데이터를 암호화 하는 보다 안전한 버전의 HTTP
    • 추가 보안 계층을 제공하여 중요 정보 보호하는데 도움

TCP/IP

  • 인터넷 기반 서비스에서 사용되는 기본 통신 프로토콜
  • 서로 다른 장치에서 실행되는 응용 프로그램 간에 안정적이고 순서가 있으며 오류가 확인된 데이터 전달을 제공
  • 주요 필요 개념:
    • 포트:
      • 장치에서 실행중인 서비스를 식별하는 데 사용
      • 각 서비스에는 고유한 포트 번호가 할당되어 데이터를 올바른 대상으로 보낼 수 있음
    • 소켓
      • 통신을 위한 특정 끝점을 나타내는 IP주소와 포트 번호의 조합
      • 장치간 연결을 설정하고 응용 프로그램 간에 데이터를 전송하는 데 사용
    • 연결
      • 두 장치가 서로 통신하려 할 때 두 소켓 사이에 연결이 설정됨
      • 연결 설정 프로세스 중에 장치는 연결을 통해 데이터를 전송하는 방법을 결정하는 최대 세그먼트 크기 및 창 크기와 같은 다양한 매개 변수를 설정
    • 데이터 전송
      • 연결이 설정되면 각 장치에서 실행 중인 애플리케이션 간에 데이터를 전송할 수 있음
      • 데이터는 일반적으로 세그먼트로 전송
      • 각 세그먼트에는 시퀀스 번호와 기타 메타데이터가 포함되어 안정적인 전달 보장

SSL/TLS로 인터넷 통신 보안

  • SSL/TLS :
    • 인터넷을 통해 전송되는 데이터를 암호화하는 데 사용되는 프로토콜
    • 웹 브라우저, 이메일 클라이언트 및 파일 전송 프로그램 등에 대한 보안 연결을 제공하는 데 사용
  • 목적
    • 사용자 데이터 보호
    • 인터넷 통신을 통한 애플리케이션 통신의 무결성 및 기밀성 보장
  • 필요 주요 개념
    • 인증서
      • 클라이언트와 서버 간의 신뢰를 설정하는 데 사용
      • 서버 ID에 대한 정보가 포함
      • 신뢰성을 확인하기 위해 신뢰할 수 있는 제 3자가 서명
    • handshake
      • 핸드셰이크 프로세스 중에 클라이언트와 서버는 보안 연결을 위한 암호화 알고리즘 및 기타 매개 변수를 협상하기 위해 정보를 교환
    • 암호화
      • 보안 연결이 설정되면 합의된 알고리즘을 사용하여 데이터를 암호화하고 클라이언트와 서버 간에 안전하게 전송가능

참고자료

https://cs.fyi/guide/how-does-internet-work

https://usefultoknow.tistory.com/entry/프로토콜Protocol이란-or-통신규약

https://shlee0882.tistory.com/110

https://lxxyeon.tistory.com/155

https://www.youtube.com/watch?v=1pfTxp25MA8

'CS > Backend-RoadMap' 카테고리의 다른 글

Backend-RoadMap_Web Security Knowlege  (0) 2023.04.11
Backend-RoadMap_APIs  (0) 2023.03.27
Backend-RoadMap_Scaling Databases  (0) 2023.03.23
Backend-RoadMap_About Database  (0) 2023.03.23
Backend_Roadmap_OS(+파일시스템)  (0) 2023.03.22