
Transport 계층은 네트워크 통신의 핵심인 데이터 전송을 담당하며, 송신지와 수신지 간 신뢰성 있는 데이터 전송을 보장하거나 효율적이고 빠른 데이터 전송을 가능하게 합니다.
TCP/IP 모델의 3계층, OSI 7계층의 4계층에 해당합니다.
프로세스 간 데이터 전송
데이터 전송의 신뢰성 보장
TCP의 경우).데이터 분할 및 재조합
흐름 제어 (Flow Control)
오류 제어 (Error Control)
TCP의 경우).Port(포트)는 Transport 계층에서 데이터를 특정 응용 프로그램으로 전달하기 위해 사용하는 논리적 번호입니다.
HTTP(80), HTTPS(443), FTP(21), SMTP(25).MySQL(3306), PostgreSQL(5432).웹 브라우저를 통해 웹 페이지를 요청할 때, 브라우저는 HTTP 프로토콜(포트 80)을 통해 요청을 전송합니다.이메일 클라이언트는 SMTP(포트 25)를 사용하여 메일 서버에 이메일을 전송합니다.비디오 스트리밍 애플리케이션은 UDP를 통한 동적 포트를 사용하여 데이터를 송수신합니다.송신 측
포트 번호와 함께 송신.포트 번호를 통해 데이터를 목적지의 특정 애플리케이션에 전달.네트워크
IP 주소를 통해 데이터가 올바른 수신지 장치에 도달하도록 전달.수신 측
포트 번호를 확인하여 데이터를 올바른 응용 프로그램으로 전달.Transport 계층의 데이터 전송 방식은 주로 두 가지 주요 프로토콜로 나뉩니다:
TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)
TCP(Transmission Control Protocol)는 연결 지향형 프로토콜로, 데이터 전송의 신뢰성을 보장하기 위해 설계되었습니다.
TCP는 데이터를 전송하기 위해 헤더(header)를 추가하며, 이 헤더에는 연결과 데이터 전송을 위한 다양한 정보가 포함됩니다.

TCP 헤더는 최소 20바이트이며, 주요 필드는 다음과 같습니다:
| 필드 이름 | 크기 (비트) | 설명 |
|---|---|---|
| Source Port | 16 | 송신 측 포트 번호 |
| Destination Port | 16 | 수신 측 포트 번호 |
| Sequence Number | 32 | 데이터의 순서를 지정하는 번호 (전송된 바이트의 시작 번호) |
| Acknowledgment Number | 32 | 수신자가 다음에 받을 데이터의 순서를 지정하는 번호 |
| Header Length | 4 | TCP 헤더의 길이를 지정 (단위: 4바이트) |
| Flags | 9 | 연결 관리 및 데이터 흐름을 제어하는 플래그 (SYN, ACK, FIN 등) |
| Window Size | 16 | 송신자가 보낼 수 있는 데이터의 최대 크기 (흐름 제어에 사용) |
| Checksum | 16 | 데이터의 무결성을 확인하기 위한 값 |
| Urgent Pointer | 16 | 긴급 데이터의 위치를 지정 (URG 플래그와 함께 사용) |
TCP 연결은 송신자와 수신자 간의 3단계 과정(3-Way Handshake)을 통해 설정됩니다.

SYN (Synchronize)
클라이언트가 서버에 연결 요청을 보냅니다(SYN 플래그 설정).Sequence Number를 생성하여 함께 전송.SYN-ACK (Synchronize Acknowledgment)
서버가 연결 요청을 수락하고 응답합니다(SYN 플래그와 ACK 플래그 설정).클라이언트의 Sequence Number에 1을 더한 값을 Acknowledgment Number로 설정.ACK (Acknowledgment)
클라이언트가 서버의 응답을 확인하고 연결을 완료합니다(ACK 플래그 설정).서버의 Sequence Number에 1을 더한 값을 Acknowledgment Number로 설정.연결이 설정되면 클라이언트와 서버 간 데이터 전송이 시작됩니다.
TCP 연결 종료는 송신자와 수신자 간의 4단계 과정(4-Way Handshake)을 통해 이루어집니다.

FIN (Finish)
송신자가 데이터 전송을 종료하려고 FIN 플래그를 설정하여 요청합니다.ACK (Acknowledgment)
수신자가 FIN 요청을 확인하고 ACK 플래그로 응답합니다.FIN (Finish)
수신자가 자신의 데이터 전송을 종료하려고 FIN 플래그를 설정하여 요청합니다.ACK (Acknowledgment)
송신자가 FIN 요청을 확인하고 ACK 플래그로 응답합니다.4-Way Handshake가 완료되면 TCP 연결이 종료됩니다.
TCP는 송신자와 수신자의 데이터 처리 속도를 조정하기 위해 흐름 제어를 수행합니다.
송신자가 수신 측에서 처리할 수 있는 데이터만큼만 전송.
윈도우 크기(Window Size) 필드에 저장되며, 송신자는 이 값을 기반으로 전송 속도를 조정합니다.TCP는 네트워크 혼잡 상태를 완화하고 효율적인 데이터 전송을 보장하기 위해 혼잡 제어(Congestion Control) 메커니즘을 제공합니다.
네트워크의 대역폭 상태를 고려하여 데이터를 조정하며, 주요 요소로 CWND, MSS, AIMD, Slow Start, Congestion Avoidance가 포함됩니다.CWND (Congestion Window)
- 혼잡 윈도우로,
송신자가 네트워크 혼잡 상태를 고려하여 데이터를 전송할 수 있는 크기를 결정합니다.- 네트워크 상태에 따라 동적으로 크기를 조정하며, 혼잡 제어의 핵심적인 변수입니다.
MSS (Maximum Segment Size)
- TCP 세그먼트의 최대 크기를 나타내며, 네트워크의
MTU(Maximum Transmission Unit)에 기반하여 설정됩니다.- 데이터가 MTU를 초과하지 않도록 세그먼트를 분할합니다.
AIMD의 느린 초기 송신을 빠르게 하기 위한 기술입니다.
혼잡 제어의 초기 단계로, CWND의 값을 작은 크기(1 MSS)로 설정하고, ACK를 받을 때마다 지수적으로 증가합니다.
CWND가 혼잡 임계값(ssthresh)에 도달하기 전까지는 계속해서 증가합니다.
특징: 네트워크 혼잡 가능성을 줄이기 위해 천천히 시작하되, 초기에는 빠르게 데이터 전송을 늘립니다.
동작 과정:
1. 첫 번째 ACK를 받으면 CWND를 1 MSS에서 2 MSS로 증가.
2. 이후 ACK를 받을 때마다 CWND를 두 배로 증가(2 → 4 → 8...).
CWND가 혼잡 임계값(ssthresh)에 도달하면, CWND를 선형적으로 증가시킵니다.AIMD 원칙의 Additive Increase를 적용하여 네트워크 혼잡 상태를 예방합니다.동작 과정:
- 각 RTT(Round Trip Time)마다 CWND를 1 MSS씩 증가.
- 예: CWND가 10 MSS이면 다음 RTT에 11 MSS로 증가.
HTTP, HTTPS는 TCP 기반으로 작동.SMTP, POP3, IMAP 모두 TCP를 사용.FTP, SFTP는 TCP를 통해 신뢰성 있는 데이터 전송을 보장.UDP(User Datagram Protocol)는 비연결형 프로토콜로, 데이터의 신속한 전송을 목표로 설계되었습니다.
TCP와 달리 신뢰성보다는 효율성을 중시하며, 오류 검출이나 데이터 순서 보장을 제공하지 않습니다.UDP 헤더는 8바이트로 구성되어 데이터 전송 효율이 높음.
UDP 헤더는 단순한 구조로 설계되어 있으며, 8바이트로 고정되어 있습니다.
| 필드 이름 | 크기 (비트) | 설명 |
|---|---|---|
| Source Port | 16 | 송신 측 포트 번호 |
| Destination Port | 16 | 수신 측 포트 번호 |
| Length | 16 | UDP 헤더와 데이터의 총 길이 |
| Checksum | 16 | 데이터의 무결성을 확인하는 값 |
UDP의 단순한 헤더 구조는 네트워크 리소스를 최소화하고 빠른 전송 속도를 가능하게 합니다.
빠른 데이터 전송
브로드캐스팅 및 멀티캐스팅 지원
UDP는 브로드캐스팅(Broadcasting)을 지원하여 동일 네트워크에 연결된 모든 컴퓨터에 데이터 송신 가능.단순한 구조
UDP는 데이터 유실을 허용하면서도 빠른 전송이 중요한 서비스에 주로 사용됩니다.
동영상 스트리밍
온라인 게임
VoIP (Voice over IP)
DNS (Domain Name System)
| 구분 | UDP | TCP |
|---|---|---|
| 연결 방식 | 비연결형(Connectionless) | 연결형(Connection-oriented) |
| 데이터 전송 속도 | 빠름 | 느림 (연결 설정 및 흐름 제어 과정 포함) |
| 신뢰성 | 신뢰성 없음, 데이터 유실 허용 | 신뢰성 보장, 데이터 손실 시 재전송 |
| 브로드캐스팅 | 지원 | 지원하지 않음 |
| 데이터 유실 | 일부 유실 가능, 전송 지속 | 데이터 유실 시 재전송 |
| 활용 사례 | 실시간 스트리밍, 온라인 게임, DNS | 웹 브라우징, 이메일, 파일 전송 등 |
신뢰성과 정확성이 중요한 경우 빠른 데이터 전송이 우선이며, 데이터 유실을 허용할 수 있는 경우 이번 포스팅에서는 네트워크 전송 계층의 핵심 요소인 TCP와 UDP를 자세히 살펴보았습니다.
Transport 계층은 송신자와 수신자 간 데이터를 효율적이고 신뢰성 있게 전달하는 역할을 합니다.
TCP는 연결 지향형 프로토콜로, 데이터의 순서 보장과 신뢰성 있는 전송을 제공하며, 흐름 제어와 혼잡 제어를 통해 네트워크 성능을 최적화합니다.
UDP는 비연결형 프로토콜로, 빠른 데이터 전송과 단순한 구조를 자랑하며, 동영상 스트리밍, 온라인 게임, VoIP와 같이 실시간 처리가 중요한 서비스에서 주로 사용됩니다.
TCP와 UDP의 선택 기준
신뢰성과 정확성이 중요한 경우 빠른 데이터 전송이 우선이며, 데이터 유실을 허용할 수 있는 경우 다음 포스팅에서는 응용 계층 프로토콜 중에서 HTTP 및 REST API와 HTTPS 프로토콜을 다루도록 하겠습니다.