1. 네트워크 계층별 역할 및 통신 단위 정리
네트워크는 5개 계층(OSI 7계층 기준 응용/표현/세션을 응용 계층으로 통합)으로 구분되며, 각 계층마다 데이터 식별 대상과 통신 단위(PDU)가 다릅니다.
- 응용 계층 (Application Layer)
- 식별 대상: 애플리케이션 서비스
- 통신 단위: 메시지 (Message)
- 전송 계층 (Transport Layer)
- 식별 대상: 프로세스 (Process) — 포트 번호(Port Number)로 식별
- 통신 단위: 세그먼트 (Segment)
- 역할: 서로 다른 호스트 간에 동작하는 애플리케이션 프로세스 간 논리적 통신(Logical Communication)을 제공.
- 네트워크 계층 (Network Layer)
- 식별 대상: 호스트 (Host / 컴퓨터) — IP 주소로 식별
- 통신 단위: 데이터그램 (Datagram) / 패킷 (Packet)
- 역할: 호스트 대 호스트 간의 논리적 통신을 제공.
- 링크 계층 (Link Layer)
- 식별 대상: 노드 (Node) — MAC 주소로 식별
- 통신 단위: 프레임 (Frame)
- 역할: 인접한 노드 간 통신을 제공.
- 물리 계층 (Physical Layer)
- 통신 단위: 비트 (Bit)
- 역할: 실제 전기적/광학적 신호 전송.
💡 핵심 차이점
**IP(Network Layer)**는 목적지 **컴퓨터(Host)**까지 패킷을 배달하고, **TCP/UDP(Transport Layer)**는 해당 컴퓨터 내부에서 실행 중인 **특정 프로그램(Process)**까지 메시지를 정확히 전달합니다.
2. 전송 계층(Transport Layer)의 주요 기능
전송 계층은 하위 네트워크 계층의 한계를 보완하고 신뢰성 및 통신 효율성을 높이기 위해 다음과 같은 제어 기능을 수행합니다.
- 신뢰적 데이터 전송 (Reliable Data Transfer - rdt)
- 패킷 손실, 데이터 손상, 순서 뒤바뀜 등을 감지하여 재전송 및 순서 정렬을 수행.
- 흐름 제어 (Flow Control)
- 수신 측의 처리 능력에 맞춰 송신 측의 데이터 전송량을 조절하는 메커니즘 (수신 측이 주도).
- 혼잡 제어 (Congestion Control)
- 네트워크 도로망(고속도로 인터페이스 통제 비유)이 과부하되지 않도록 패킷 유입량을 네트워크 차원에서 제어.
- 제약 사항
- 패킷 교환망 특성상 엄격한 지연 시간(Delay)이나 대역폭(Bandwidth) 보장은 불가능합니다 (보장이 필요한 경우 서킷 교환망 사용).
3. TCP vs UDP 프로토콜 비교
| 구분 | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
| 연결 방식 | 연결 지향형 (Connection-Oriented, 3-Way Handshake) | 비연결형 (Connectionless) |
| 신뢰성 | 높음 (손실 시 재전송, 순서 보장, 오류 수정) | 낮음 (오류 검사 후 손상 시 알림 없이 버림) |
| 오버헤드 | 크고 복잡함 (상태 정보 유지, 헤더 크기 큼) | 작고 가벼움 (헤더 8바이트, 리소스 소모 적음) |
| 제어 기능 | 흐름 제어, 혼잡 제어, 순서 정렬 수행 | 제어 기능 없음 (속도 우선) |
| 주요 용도 | 웹(HTTP/HTTPS), 파일 전송(FTP), SSH, 이메일 | 스트리밍, 실시간 음성 통신(VoIP), DNS, 게임 트래픽 |
4. 멀티플렉싱(Multiplexing)과 디멀티플렉싱(Demultiplexing)
전송 계층이 여러 애플리케이션 프로세스의 데이터를 모아서 하위 계층으로 보내거나, 반대로 수신한 데이터를 올바른 프로세스로 전달하는 과정입니다.
Plaintext
[App Process 1] [App Process 2]
\ /
Socket Socket
\ /
[ Multiplexing ] (전송 계층: 여러 소켓의 데이터를 모아 하나의 세그먼트로 합성)
│
▼
[ Network Layer ]
│
▼
[ Demultiplexing ] (전송 계층: 수신한 세그먼트의 포트 번호를 확인해 올바른 소켓으로 분배)
/ \
Socket Socket
/ \
[App Process 1] [App Process 2]
- 멀티플렉싱 (Multiplexing - 송신 측):
- 여러 소켓(Socket)에서 들어오는 데이터에 출발지/목적지 포트 번호가 포함된 헤더를 붙여 하위 계층으로 전달하는 과정.
- 디멀티플렉싱 (Demultiplexing - 수신 측):
- 하위 네트워크 계층에서 올라온 세그먼트의 헤더 정보를 확인하여 올바른 프로세스의 소켓으로 분배하는 과정.
5. 소켓(Socket)과 포트 번호(Port Number)
- 소켓 (Socket):
- 애플리케이션 계층과 전송 계층 사이의 접점(인터페이스) 역할을 하는 유일한 식별 통로.
- 식별 체계:
- UDP 소켓: 목적지 IP 주소와 목적지 포트 번호 조합만으로 식별 (하나의 소켓으로 여러 클라이언트 응답 처리 가능).
- TCP 소켓: (출발지 IP, 출발지 Port, 목적지 IP, 목적지 Port)의 4가지 요소(4-tuple) 조합으로 유일하게 식별.
6. 핵심 요약
- 역할의 명확한 구분: IP는 목적지 컴퓨터(Host)를 찾아가고, TCP/UDP는 포트 번호(Port)를 기반으로 해당 컴퓨터 내의 특정 애플리케이션(Process)을 찾아갑니다.
- TCP의 가치: 데이터의 손실 없는 정확한 전달, 순서 보장, 네트워크 혼잡 방지를 도맡아 처리하므로 신뢰성이 필요한 주요 서비스에 사용됩니다.
- UDP의 가치: 구조가 간결하여 리소스 소모가 적고 속도가 빠르므로, 약간의 패킷 손실이 용인되는 실시간 미디어 스트리밍 등에 효율적입니다.