TCP 프레임 구조

TCP 프레임 구조

TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 연결 지향형 프로토콜입니다. 우리가 인터넷을 사용할 때, 웹사이트 접속, 이메일 전송, 파일 다운로드 등 대부분의 네트워크 통신에서 TCP가 중요한 역할을 합니다.

이번 글에서는 TCP 프레임(TCP 세그먼트)의 구조를 세부적으로 분석하고, 각 필드가 어떤 역할을 하는지 자세히 설명하겠습니다.

TCP 프레임이란?

TCP는 데이터를 세그먼트(Segment) 단위로 나누어 전송하며, 이 세그먼트가 바로 TCP 프레임입니다. TCP 프레임은 크게 두 부분으로 나뉩니다.

  • TCP 헤더(Header): 20~60바이트 크기로, 송수신 제어 정보를 포함

  • 데이터 영역(Data): 실제 전송할 데이터 (Payload)

TCP는 데이터가 손실되거나 순서가 바뀌지 않도록 흐름 제어, 오류 검출, 재전송 등의 기능을 포함하고 있습니다.

TCP 헤더 구조 (TCP Header Structure)

TCP 헤더는 20바이트(옵션 포함 시 최대 60바이트)이며, 아래와 같은 필드로 구성됩니다.

TCP 헤더 필드 상세 설명

필드명 크기 (비트) 설명
출발지 포트 번호 (Source Port) 16비트 데이터를 보내는 포트 번호
목적지 포트 번호 (Destination Port) 16비트 데이터를 받는 포트 번호
순서 번호 (Sequence Number) 32비트 바이트 단위의 순서 지정
확인 응답 번호 (Acknowledgment Number) 32비트 다음에 받을 바이트 번호
헤더 길이 (Data Offset) 4비트 헤더의 길이(4바이트 단위)
예약 (Reserved) 3비트 미래 사용을 위한 예약 필드
플래그 (Flags, Control Bits) 9비트 연결 설정/종료, 데이터 제어 등
윈도우 크기 (Window Size) 16비트 수신 가능한 데이터 크기
체크섬 (Checksum) 16비트 오류 검출을 위한 필드
긴급 포인터 (Urgent Pointer) 16비트 긴급 데이터의 위치 표시
옵션 (Options, Padding 포함) 0~40바이트 추가 기능 제공

TCP 플래그(제어 비트) 상세 설명

TCP 헤더에는 9개의 제어 비트(Flags)가 포함되어 있습니다.

플래그 비트 수 설명
URG 1비트 긴급 데이터(긴급 포인터 사용)
ACK 1비트 확인 응답(Acknowledgment)
PSH 1비트 데이터를 즉시 전달(버퍼링 방지)
RST 1비트 연결 강제 종료(Reset)
SYN 1비트 연결 설정(Handshake 시작)
FIN 1비트 연결 종료 요청
CWR 1비트 혼잡 제어 감소(Congestion Control)
ECE 1비트 혼잡 상태 탐지(Early Congestion Notification)
NS 1비트 ECN 관련 기능(실험적)

📌 주요 플래그 사용 예시

  • TCP 3-Way Handshake (연결 설정)

    1. 클라이언트 → 서버 : SYN

    2. 서버 → 클라이언트 : SYN + ACK

    3. 클라이언트 → 서버 : ACK

  • TCP 연결 종료 과정

    1. 클라이언트 → 서버 : FIN

    2. 서버 → 클라이언트 : ACK

    3. 서버 → 클라이언트 : FIN

    4. 클라이언트 → 서버 : ACK

TCP 데이터 영역 (Payload)

TCP 데이터 영역은 실제 애플리케이션이 전송하는 데이터를 포함하는 부분입니다.

  • 최대 크기: 65535 바이트 - (IP 헤더 + TCP 헤더)

  • MTU (Maximum Transmission Unit)에 따라 크기 조정

  • TCP는 데이터 손실을 방지하고, 순서를 보장함

TCP는 흐름 제어와 혼잡 제어 기능을 통해 데이터가 네트워크에서 안정적으로 전달되도록 보장합니다.

TCP 프레임 예시 (Packet 구조)

아래는 TCP 프레임의 구조를 시각적으로 표현한 예시입니다.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Source Port (16bit)      |   Destination Port (16bit)   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Sequence Number (32bit)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               Acknowledgment Number (32bit)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data Offset  | Reserved |   Flags   |     Window Size       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Checksum   |  Urgent Pointer  | (Options, if any)         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Data (Payload)                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

TCP vs UDP 비교

TCP와 UDP(User Datagram Protocol)는 대표적인 전송 계층 프로토콜입니다.

특징 TCP UDP
연결 방식 연결 지향(Connection-oriented) 비연결(Connectionless)
신뢰성 신뢰성 높음 (재전송, 순서 보장) 신뢰성 낮음 (손실 가능)
속도 느림 (오버헤드 존재) 빠름 (오버헤드 적음)
사용 사례 웹, 이메일, 파일 전송 스트리밍, VoIP, 온라인 게임

결론

TCP는 데이터 전송에서 신뢰성을 보장하는 중요한 프로토콜입니다.

  • 헤더 구조를 통해 데이터 순서를 보장하고 오류를 감지

  • 3-way Handshake를 통해 연결을 설정하고, 4-way Handshake를 통해 연결을 해제

  • 혼잡 제어, 흐름 제어 등을 통해 네트워크 안정성을 유지

TCP를 이해하면 네트워크 프로그래밍과 보안 분석에서 큰 도움이 됩니다. 앞으로 Wireshark 등을 활용해 실제 패킷을 분석해보는 것도 추천합니다!

TCP UDP 차이

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments