CSE/Network

[혼공네트] Ch04. 전송 계층

Opal1031 2026. 4. 14. 15:03
※ 본 포스트는 [강민철, 『혼자 공부하는 네트워크』, 한빛미디어] 복습을 위해 작성된 글입니다.

※ 비영리적인 순수한 학습 기록용이며, 원저작물의 권리는 저자 및 출판사에 있습니다.

※ 저작권 문제가 있을 경우, 즉시 수정 또는 삭제하겠습니다.

1️⃣ 전송 계층 개요 : IP의 한계와 포트

01. 신뢰할 수 없는 통신과 비연결형 통신

  • IP의 특징 (한계)

    • 신뢰할 수 없는 프로토콜
      패킷이 수신지까지 제대로 전송되었다는 보장을 하지 않음

      • 최선형 전달 (Best Effort Delivery)
    • 비연결형 프로토콜
      Tx, Rx 간에 사전 연결 수립 작업을 거치지 않음

      • Rx를 향해 패킷을 보내기만 함
    • IP는 신뢰성 있는 전송보다 빠른 송수신이 우선시되는 경우가 있음

02. IP의 한계를 보완하는 전송 계층

  • 전송 계층
    L3 & L5 사이에서 IP의 한계를 극복하고, 포트 번호를 통해 응용 계층의 애플리케이션 프로세스들을 식별하는 역할을 수행

    • TCP 프로토콜

      • 연결형 통신이 가능하게 함
        호스트 사이에 회선을 설정하고, 해당 전송로를 이용해서 통신
      • 신뢰성 있는 통신
        패킷의 올바른 송수신을 위해 재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어등의 다양한 기능 제공
    • UDP 프로토콜

      • 신뢰할 수 없는 통신, 비연결형 통신 지원
      • TCP보다 비교적 빠른 전송

03. 응용 계층과의 연결 다리, 포트

  • 포트
    패킷이 특정 애플리케이션까지 전달되기 위해 필요한 식별 정보

    • L4에서는 포트 번호를 통해 특정 애플리케이션을 식별함
    • TCP / UDP 프로토콜 모두 Tx, Rx 포트 번호 포함
    포트 번호 포트 종류 설명
    0 ~ 1023 잘 알려진 포트 범용적으로 사용되는 앱 프로토콜 포트
    1024 ~ 49151 등록된 포트 흔히 사용되는 앱 프로토콜 포트
    49152 ~65535 동적 포트 특별히 관리되지 않는 포트

04. 포트 기반 NAT

  • NAT 변환 테이블
    네트워크 내부에서 사용되는 사설 IP 주소와 외부에서 사용되는 공인 IP 주소를 변환하기 위해 사용

  • NARP (Network Address Port Translation
    포트를 활용하여 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유할 수 있도록 하는 NAT의 일종

    • 다수의 사설 IP 주소를 그보다 적은 수의 공인 IP 주소로 변환 가능

※ <좀 더 알아보기> - 포트 포워딩

  • 포트 포워딩
    네트워크 내 특정 호스트에 IP 주소와 포트 번호를 미리 할당하고, 해당 IP 주소:포트번호 로써 해당 호스트에게 패킷을 전달하는 기능

※ <좀 더 알아보기> - ICMP

  • Internet Control Message Protocol
    IP 패킷의 전송 과정에 대한 피드백 메시지를 얻기 위해 사용되는 프로토콜

    • 전송 과정에서 발생한 문제 상황에 대한 오류 보고
    • 네트워크에 대한 진단 정보

2️⃣ TCP와 UDP

01. TCP 통신 단계와 세그먼트 구조

  • TCP 통신 단계
    연결 수립 -> 데이터 송수신 -> 연결 종료

  • MSS (Maximum Segment Size)
    TCP로 전송할 수 있는 최대 페이로드 크기

    • 크기를 고려할 때 TCP 헤더 크기는 제외
  • TCP 세그먼트

    • 송/수신지 포트
      Tx, Rx 애플리케이션 식별 포트 번호가 명시되는 필드

    • 순서 번호
      송수신되는 세그먼트의 올바른 순서 보장하는 데이터

      • SYN 플래그가 1로 설정된 세그먼트 -> 초기 순서 번호
      • 순서 번호 = 초기 순서 번호 + 송신한 바이트 수
    • 확인 응답 번호
      다음으로 수신하기를 기대하는 순서 번호 명시

      • 세그먼트를 잘 수신한 뒤, ACK 플래그를 1로 설정
      • 다음으로 수신 받기를 희망하는 순서 번호 전송
    • 데이터 오프셋 / 예약

    • 제어 비트
      플래그 비트

      • ACK : 세그먼트의 승인을 나타내기 위한 비트
      • SYN : 연결을 수립하기 위한 비트
      • FIN : 연결을 종료하기 위한 비트
    • 윈도우
      수신 윈도우의 크기 명시

    • 체크섬 / 긴급 포인터 / 옵션

02. TCP 연결 수립과 종료

  • TCP 연결 수립 - 쓰리 웨이 핸드 셰이크
    세 개의 단계로 이루어진 TCP의 연결 수립 과정

    • 액티브 오픈 & 액티브 클로즈
  • TCP 연결 종료
    Tx, Rx가 FIN과 ACK를 각자 한 번씩 주고 받음

    • 액티브 클로즈 & 패시브 클로즈

03. TCP 상태

TCP 상태 종류
연결이 수립되지 않은 상태 CLOSED, LISTEN
연결 수립 상태 SYN-SENT, SYN-RECIVED, ESTABLISHED
연결 종료 상태 FIN-WAIT-1, CLOSE-WAIT, FIN-WAIT-2, LAST-ACK, TIME-WAIT

04. UDP 데이터그램 구조

  • 송/수신지 포트
    Tx, Rx의 포트 번호

  • 길이
    헤더를 포함한 UDP 데이터그램의 바이트

  • 체크섬
    전송 과정에서의 오류 발생 검사


3️⃣ TCP의 오류•흐름•혼잡 제어

01. 오류 제어 : 재전송 기법

  • 오류 제어

    • 중복된 ACK 세그먼트를 수신했을 때
      세그먼트의 순서 번호 중 일부 누락

    • 타임아웃이 발생했을 때
      재전송 타이머의 카운트 다운이 끝난 상황

  • 재전송 기법 : ARQ (Automatix Repeat Request)
    ACK & 타임아웃 발생을 토대로 문제를 진단하고, 문제가 생긴 메시지를 재전송함으로써 신뢰성을 확보

    • Stop-and-Wait ARQ
      제대로 전달했음을 확인하기 전까지는 메시지 전송 X

      • 네트워크 이용 효율 감소
    • Go-Back-N ARQ
      여러 세그먼트를 전송 하고, 도중에 잘못 전송된 세그먼트가 발생할 경우, 해당 세그먼트부터 전부 다시 전송

      • 파이프라이닝(Pipelining)
        연속해서 메시지를 전송할 수 있는 기술

      • 누적 확인 응답

    • Selective Repeat ARQ
      선택적으로 재전송

      • 개별 확인 응답

02. 흐름 제어 : 슬라이딩 윈도우

  • 흐름 제어

    • 호스트가 한 번에 받아서 처리할 수 있는 세그먼트의 양에는 한계가 있음

    • 이를 넘으면 일부 세그먼트가 처리되지 못할 우려 있음

    • 수신 버퍼
      수신된 세그먼트가 애플리케이션 프로세스에 의해 읽히기 전에 임시로 저장되는 공간

    • 버퍼 오버플로
      수신 버퍼의 크기보다 많은 데이터로 버퍼가 넘치는 상황

    • 슬라이딩 윈도우
      수신자의 처리 속도를 고려하여 파이프라이닝을 통해 송수신 윈도우가 점차 오른쪽으로 미끄러지는 것

03. 혼잡 제어

  • 혼잡 제어
    전송률이 크게 떨어지는 등의 현상을 제어하기 위한 기능

    • 혼잡 윈도우
      혼잡없이 전송할 수 있을 법한 데이터 양
  • 느린 시작 알고리즘
    혼잡 윈도우를 1부터 시작해 문제없이 수신된 ACK 세그먼트 하나당 1씩 증가시키는 방식

    • 느린 시작 임계치
      타임아웃 발생 / 혼잡 윈도우 >= 느린시작 임계치 / ACK 3회 중복
  • 혼잡 회피 알고리즘
    RTT마다 혼잡 윈도우를 1MSS씩 증가시키는 방식

  • 빠른 회복 알고리즘
    3번의 중복 ACK 세그먼트를 수신했을 때 느린 시작은 건너뛰고 혼잡 회피를 수행하는 알고리즘

※ <좀 더 알아보기> - ECN

  • 명시적 혼잡 알림 - ECN (Explicit Congestion Notification)
    혼잡을 피하기 위해 네트워크 중간 장치의 도움을 받는 방법

    • 일반적인 방식에 비해 혼잡 제어가 빠름

📚 회고

이번 4장에서는 전송 계층(L4) 을 다뤘다. '데이터 통신' 과목에서 ARQ 나 슬라이딩 윈도우를 비교적 깊게 공부했던 덕분에, 이번 장을 이해하는 데 많은 도움이 되었다. 또, 그 과정에서 예전에 배운 자료들을 다시 확인하며 자연스럽게 복습할 기회도 가졌다.

이제 개강과 함께 컴퓨터 네트워크 과목을 수강하게 된다. 이 과목은 '데이터 통신'이 주로 물리 계층(L1) 을 다뤘던 것과 달리, 그 이상의 계층들을 중심으로 학습하게 될 것이다. 앞으로 남은 마지막 5장까지 마무리하면서, 이번 공부가 수업을 이해하는 데 좋은 발판이 되길 기대한다.