핵심 인사이트 (3줄 요약)
- 본질: 전송 계층(Transport Layer, 4계층)은 목적지 컴퓨터(IP)까지 택배를 배달하는 3계층의 임무를 넘겨받아, 그 컴퓨터 안에 켜져 있는 "수십 개의 프로그램 중 어느 프로그램(카카오톡? 크롬?)에게 이 택배를 뜯어줄 것인가"를 정확히 분류해 내는 종단 간(End-to-End) 배달의 최종 책임자다.
- 다중화와 역다중화 (포트 번호의 기적): 내 PC에서 롤도 하고, 유튜브도 보고, 카톡도 동시에 할 수 있는 이유는 전송 계층이 데이터 겉면에 **포트 번호(Port Number)**라는 식별 스티커를 붙여서 한 가닥의 랜선(IP)으로 뭉쳐서 보내고(다중화), 받을 때 스티커를 보고 다시 각 프로그램으로 정확히 찢어주기(역다중화) 때문이다.
- 통신의 신뢰성 통제: 3계층(IP)은 패킷이 가다가 죽든 말든 책임지지 않는 무책임한 배달부다. 전송 계층(특히 TCP)은 패킷이 분실되면 다시 보내라 하고(오류 제어), 상대방이 체할 것 같으면 천천히 보내고(흐름 제어), 길이 막히면 속도를 줄이는(혼잡 제어) 네트워크의 진정한 지휘관이다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: OSI 7계층 중 4계층에 해당하며, 종단(End-to-End, 송신자 프로세스와 수신자 프로세스) 간의 논리적 통신을 제공하고 투명하고 신뢰성 있는 데이터 전송을 보장하는 계층. (대표 프로토콜: TCP, UDP).
-
필요성: 3계층(IP)의 능력은 딱 "우리 집 컴퓨터에서 저기 미국 구글 컴퓨터 앞마당까지 데이터를 던져놓는 것"까지다. 그런데 내 컴퓨터 안에는 크롬 브라우저 창이 10개 떠 있고, 카카오톡이 켜져 있다. IP가 구글에서 데이터를 받아오긴 했는데, 이게 유튜브 영상 데이터인지 카톡 메시지인지 구별할 길이 없다! "컴퓨터 대 컴퓨터(Host-to-Host)의 통신을 넘어, 프로그램 대 프로그램(Process-to-Process)의 정밀한 통신 채널을 뚫어주자!" 이것이 전송 계층이 탄생한 이유다.
-
💡 비유: 전송 계층은 거대한 아파트(PC)의 **"1층 우편물 분류 직원"**과 같습니다.
- 3계층 (IP): 우체국 트럭이 "서울시 강남구 래미안 아파트(IP 주소)" 앞마당에 택배 100상자를 훅 던져놓고 갑니다.
- 4계층 (전송 계층): 1층 직원이 택배 상자를 까보고, 겉면에 적힌 **"101호(크롬), 102호(카카오톡)"라는 호수(포트 번호)**를 보고 정확한 집 앞까지 배달을 완료해 줍니다.
- 만약 중간에 택배가 파손되었으면, 직원이 우체국에 전화를 걸어 "택배 부서졌으니 다시 보내라(오류 제어)!"라고 따져줍니다.
📢 섹션 요약 비유: 전송 계층은 단순히 물건을 나르는 화물차(IP)가 아니라, 화물칸 안의 물건이 깨졌는지 꼼꼼히 확인하고(오류 제어), 받는 사람의 손아귀(프로세스)에 정확히 쥐여줄 때까지 끝까지 책임지는 우체국 특급 배송 서비스입니다.
Ⅱ. 전송 계층의 3대 핵심 임무 (Deep Dive)
1. 다중화(Multiplexing)와 역다중화(Demultiplexing)
현대 컴퓨터가 멀티태스킹 통신을 할 수 있는 1등 공신이다.
- 다중화 (보낼 때): 내 PC에서 롤(포트 8000), 크롬(포트 80), 카톡(포트 9000) 데이터가 동시에 뿜어져 나온다. 전송 계층은 이 세 개의 데이터를 하나의 3계층 IP 튜브(내 공인 IP) 안으로 꽉꽉 압축해서 쑤셔 넣는다.
- 역다중화 (받을 때): 목적지 서버의 전송 계층이 이 튜브를 터뜨려 내용물을 쏟아낸 뒤, 포트 번호를 돋보기로 보고 "아! 이건 80번이니까 웹서버 프로세스한테 던지고, 8000번이니까 게임 서버 프로세스한테 던져라!" 라며 완벽하게 가르마를 타준다.
┌─────────────────────────────────────────────────────────────┐
│ 포트 번호를 이용한 다중화/역다중화 도식 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 내 PC (클라이언트) ] [ 구글 서버 ] │
│ │
│ (크롬) :8081 ──┐ ┌── :80 (웹 서버) │
│ (카톡) :9091 ──┼──▶ [ 인터넷 망 ] ──▶──┼── :443 (보안웹 서버)│
│ (게임) :7071 ──┘ (하나의 IP 튜브) └── :53 (DNS 서버) │
│ ▲ (다중화) ▲ (역다중화) │
│ │
│ ▶ "랜선(IP)은 하나지만, 그 속에는 수만 개의 독립된 차선(Port)이 │
│ 존재하여 프로그램들이 절대 서로 충돌하지 않고 쾌속 질주한다!" │
└─────────────────────────────────────────────────────────────┘
2. 신뢰성 통제 (오류/흐름/혼잡 제어)
3계층이 무책임하게 버린 데이터를 전송 계층(특히 TCP)이 수습한다.
- 오류 제어 (Error Control): 패킷 번호를 매겨놓고 기다리다가, 5번 패킷이 안 오면 "야! 5번 다시 보내!"라고 재전송(Retransmission)을 요구한다.
- 흐름 제어 (Flow Control): 내 컴퓨터 RAM(버퍼)이 꽉 찼는데 서버가 데이터를 쏟아부으면 버려진다. "야, 나 체할 것 같아! 천천히 좀 보내(Window Size 조절)!"라고 송신자의 속도를 제어한다.
- 혼잡 제어 (Congestion Control): 너와 나 사이의 문제가 아니라 인터넷망 자체가 꽉 막혔을 때, "망 터지겠다! 우리 다 같이 눈치껏 속도 좀 확 줄이자!"라며 통신량을 자체적으로 깎아버리는 공공의 이익을 위한 통제다.
3. 연결 지향(TCP) vs 비연결 지향(UDP)
전송 계층은 완벽한 보모 역할을 하는 깐깐한 TCP와, 포트 번호만 딱 던져주고 3계층처럼 무책임하게 빤스런하는 가벼운 UDP, 두 가지 극단적인 선택지를 애플리케이션 개발자에게 제공한다. (개발자는 자기 앱 특성에 맞춰 둘 중 하나를 고르면 된다).
📢 섹션 요약 비유: 전송 계층의 다중화/역다중화는 공항의 **"수하물 분류 벨트"**입니다. 수백 대의 비행기에서 쏟아져 나온 가방(IP 패킷)들을 하나의 거대한 벨트에 올려놓지만, 스캐너가 가방 겉면에 붙은 바코드(Port 번호)를 읽고 정확하게 1번 출구, 2번 출구로 가방을 밀어내어 주인을 찾아줍니다.