인터넷에서 신뢰성 있는 통신을 책임지는 전송계층의 대표 프로토콜이 TCP입니다. 여기서는 TCP가 데이터를 어떻게 나누어 보내는지(세그먼트), 헤더 주요 필드(시퀀스·ACK·플래그·윈도우 등), 그리고 통신 단계(연결 수립 → 데이터 전송 → 연결 종료)를 간단히 정리합니다.

1. TCP vs UDP
- TCP: 연결형, 신뢰성 보장(재전송·흐름제어·혼잡제어)
- UDP: 비연결형, 신뢰성은 적지만 빠름(스트리밍, DNS 등에서 사용)
2. 세그먼트(segment)란?
- 전송계층(TCP)의 PDU(Protocol Data Unit) 입니다.
- 애플리케이션 데이터에 TCP 헤더를 붙인 단위가 세그먼트로, 이 세그먼트는 IP 헤더가 붙어 패킷이 되고, 이더넷 헤더가 붙어 프레임이 됩니다.
애플리케이션 데이터
↓ (TCP 헤더 추가)
[TCP 세그먼트]
↓ (IP 헤더 추가)
[IP 패킷]
↓ (데이터링크 헤더 추가)
[프레임]
3. MSS (Maximum Segment Size)
- MSS: TCP로 보낼 수 있는 최대 페이로드(데이터) 크기.
- 보통 **MTU(예: 이더넷 1500B)**에서 IP/TCP 헤더 길이를 뺀 값이 MSS(예: 1460B).
- 큰 데이터는 MSS 기준으로 잘려 여러 세그먼트로 전송됩니다.
4. TCP 세그먼트 주요 필드

- 출발/목적 포트: 애플리케이션(프로세스)를 구분
- 순서 번호(Sequence Number): 해당 세그먼트의 첫 바이트 번호(바이트 단위) — 재조립/정렬용
- 확인 응답 번호(Acknowledgment Number): 수신자가 다음에 기대하는 바이트 번호(수신 확인)
- 제어 비트(Flags): ACK, SYN, FIN, RST, PSH 등 — 상태/제어 정보
- 윈도우(Window): 수신자가 한 번에 받을 수 있는 여유 공간(흐름제어)
- 체크섬(Checksum), 옵션(예: MSS, 타임스탬프) 등
5. 순서 번호와 ACK
- 송신은 임의의 **초기 순서번호(ISN)**를 정하고 바이트마다 번호를 붙입니다.
- 예: ISN = 100
- 세그먼트 A: 500 바이트 → 순서번호 100
- 세그먼트 B: 다음 500 바이트 → 순서번호 600
- 세그먼트 C: 다음 500 바이트 → 순서번호 1100
[세그먼트 A] 100 ~ 599
[세그먼트 B] 600 ~ 1099
[세그먼트 C] 1100 ~ 1599
수신자는 마지막으로 정상 수신된 바이트 다음 번호(예: 8001)를 ACK로 보내며, 송신자는 그 ACK를 보고 재전송 여부를 결정합니다.
6. 제어 비트(플래그)의 의미
- SYN: 연결 수립 요청 (3-way handshake에서 사용)
- ACK: 수신 확인(확인 응답 번호가 유효할 때)
- FIN: 연결 종료 요청
- RST: 비정상적 연결 초기화(리셋)
- 기타: PSH, URG, CWR, ECE 등
정리하면
- 세그먼트 = TCP의 PDU. 세그먼트는 시퀀스 번호·ACK·플래그·윈도우 등으로 구성되어 신뢰성 있는 전송을 가능하게 한다.
- MSS로 나누어 보내고, 수신 확인(ACK)으로 손실을 복구한다.
- TCP는 연결 수립 → 데이터 전송 → 연결 종료의 단계로 동작하며, 이 과정에서 재전송·흐름·혼잡 제어가 핵심 역할을 한다.
'컴퓨터 과학 > 네트워크' 카테고리의 다른 글
| TCP 상태와 연결 과정 이해하기 (0) | 2025.10.04 |
|---|---|
| 전송 계층 핵심 정리 — TCP 집중 가이드 (0) | 2025.10.04 |
| IP의 한계와 ICMP의 역할: 비연결형 통신의 보완책 (0) | 2025.10.04 |
| 포트 포워딩(Port Forwarding): 외부에서 내부 네트워크에 접근하기 (0) | 2025.10.04 |
| 응용 계층을 식별하는 전송 계층: 포트의 역할 (0) | 2025.10.04 |