콘텐츠로 이동

TCP IP

TCP/IP

TCP/IP 4계층 vs OSI 7계층

  • TCP/IP 4계층
    • 어플리케이션 계층: FTP, HTTP, SSH, SMTP, DNS
    • 전송 계층: TCP, UDP
    • 인터넷 계층: IP, ARP, ICMP / 패킷을 수신해야 할 상대의 주소를 지정하여 데이터 전달
    • 링크 계층: 전선, 광섬유, 무선 등으로 실질적 데이터 전달
  • OSI 7계층
    • 어플리케이션 계층
    • 프레젠테이션 계층
    • 세션 계층
    • 전송 계층
    • 네트워크 계층
    • 데이터 링크 계층
    • 물리 계층
  • 특정 계층이 변경되었을 때, 다른 계층이 영향을 받지 않도록 설계

전송 계층

  • TCP
    • 패킷 사이의 순서를 보장하고 연결 지향 프로토콜 사용
    • 신뢰성 있는 패킷 연결 구축
    • 가상회선 패킷 교환 방식
      • 각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 '순서대로' 도착하는 방식
  • UDP
    • 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 방식
    • 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 '순서가 다를 수'있는 방식을 뜻함

TCP 연결/해제

  • TCP 연결 수립 과정 (3-way-handshake)
    • 신뢰성이 구축되고 데이터 전송을 시작 1. SYN
      • 클라이언트 --(클라 ISN, SYN)--> 서버
      • ISN: 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호 2. SYN+ACK
      • 서버 : 클라이언트의 SYN 수신
      • 서버 --(서버 ISN, 승인번호[클라 ISN + 1])--> 클라이언트 3. ACK
      • 클라이언트 --(승인번호[서버 ISN + 1])--> 서버
  • TCP 연결 해제 과정 (4-way-handshake)
    1. 클라이언트가 연결 닫으려고 FIN 서버로 전송
      • 클라: FIN_WAIT_1 변경
    2. 서버는 클라이언트로 ACK 승인 세그먼트 보냄
      • 서버: CLOSE_WAIT 변경
      • 클라: FIN_WAIT_2 변경
    3. 서버는 클라이언트로 FIN 세그먼트 보냄
    4. 클라이언트 TIME_WAIT 상태로 변경, 클라이언트가 서버로 ACK 전송
      • 서버: CLOSED 변경
      • 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결 해제
      • TIME_WAIT: 소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태
      • 지연 패킷의 문제점을 해결

계층 간 데이터 송수신 과정

  • PC1 ----------- PC2
    • 어플리케이션 계층 : 메시지
    • 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
    • 인터넷 계층 : 패킷
    • 링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)
  • 캡슐화 과정
    • 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정

네트워크 기기

  • 계층별 처리 기기
    • 어플리케이션 계층: L7 스위치, (L4 스위치)
    • 인터넷 계층: 라우터(L3 스위치)
    • 데이터 링크 계층: L2 스위치, 브리지
    • 물리 계층: NIC, 리피터, AP
  • [어플리케이션 계층 처리 기기]
    • L7 스위치
      • 로드 밸런서
      • 서버의 부하를 분산하는 기기
      • URL, 서버, 캐시, 쿠키들을 기반으로 트래픽 분산
      • 불필요한 외부 데이터 거르기
      • AWS ALB (Application Load Balancer)
    • L4 스위치
      • 인터넷 계층을 처리하는 기기
      • 메시지를 기반으로 인식하지 못하고 IP/Port 기반으로 트래픽을 분산
      • AWS NLB (Network Load Balancer)
  • [인터넷 계층 처리 기기]
    • 라우터 (L3 스위치)
      • 여러 개의 네트워크를 연결/분할/구분 시켜주는 역할
      • 타 네트워크에 존재하는 장치끼리 서로 데이터 주고 받을 때 패킷 소모 최소화 & 경로 최적화
  • [데이터 링크 계층을 처리하는 기기]
    • L2 스위치
      • 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리, 연결된 장치로 부터 패킷 왔을 때 패킷 전송 담당
      • 단순히 패킷의 MAC 주소를 읽어서 스위칭하는 역할
    • 브리지
      • 두 개의 근거리 통신망을 상호 접속할 수 있도록 하는 통신망 연결 장치
  • [물리 계층을 처리하는 기기]
    • NIC(LAN 카드)
      • 네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드
      • 고유의 식별번호인 MAC 주소가 있음
    • 리피터
      • 약해진 신호 정도를 증폭하여 다른쪽으로 전달
    • AP
      • 패킷을 복사하는 기기