컴퓨터과학/네트워크

[네트워크] TCP/IP 헤더와 패킷의 구조

깃짱 2025. 9. 13. 10:00
반응형
반응형

🌏 TCP/IP 헤더와 패킷

TCP/IP 네트워크를 이해하기 위해서는 패킷(packet) 이라는 단위와, 이를 구성하는 헤더(header) 구조를 먼저 살펴봐야 네트워크에서 실제 데이터가 어떻게 나누어지고 전송되는지를 알 수 있습니다.

✅ 패킷(Packet)

네트워크에서 전송되는 데이터의 최소 단위

단순히 데이터(payload)만 존재하지 않고, 그 앞에는 다양한 제어 정보를 담은 헤더(header) 가 붙습니다.

[ 링크 계층 헤더 | 네트워크 계층 헤더 | 전송 계층 헤더 | 데이터(payload) ]
  1. Payload (데이터)
    • 우리가 실제로 보내려는 내용물
    • 예시
      • HTTP라면 GET /index.html HTTP/1.1 같은 요청 메시지
      • 이메일이라면 Subject: Hello 같은 본문
      • 파일 전송이라면 파일 조각 데이터
  2. Header (메타데이터)
    • 데이터가 잘 전달되도록 붙여진 주소 + 제어 정보
    • 누가 보냈는지, 어디로 가는지, 어떤 방식으로 전송하는지, 오류가 있는지 등을 담음
    • TCP/IP 계층별 메타데이터
      • 링크 계층 헤더: 출발지/목적지 MAC 주소
      • IP 헤더: 출발지/목적지 IP 주소, TTL, 프로토콜 번호
      • TCP 헤더: 출발지/목적지 포트 번호, 시퀀스 번호, ACK, 플래그(SYN, ACK 등)
      • UDP 헤더: 출발지/목적지 포트 번호, 길이, 체크섬

즉, 데이터를 전송할 때 캡슐화(encapsulation) 과정이 발생하여, 상위 계층의 데이터가 하위 계층의 헤더와 합쳐져 내려가는 구조입니다.

✅ TCP/IP 계층과 헤더 구조

TCP/IP는 4계층 모델로 흔히 구분합니다. 각 계층에서 붙는 헤더를 정리하면 다음과 같습니다.

  1. 링크 계층 (Ethernet, Wi-Fi 등)
    • 헤더: MAC 주소(출발지/목적지), 타입, CRC 등
    • 예시: Ethernet 프레임 헤더 (14바이트)
  2. 네트워크 계층 (IP)
    • 대표 프로토콜: IPv4, IPv6
    • 헤더: 출발지/목적지 IP 주소, TTL, 프로토콜 번호, 헤더 체크섬 등
    • IPv4 기본 헤더 크기: 20바이트 (옵션 포함 시 최대 60바이트)
    • IPv6 기본 헤더 크기: 40바이트 (확장 헤더 구조 존재)
  3. 전송 계층 (TCP/UDP)
    • TCP 헤더 (20~60바이트) ⇒ 더 많은 정보
      • 출발지/목적지 포트
      • 시퀀스 번호(Sequence Number)
      • 확인 응답 번호(Acknowledgment Number)
      • 플래그 (SYN, ACK, FIN 등)
      • 윈도우 크기(Window Size)
      • 체크섬(Checksum)
      • 옵션 (MSS, 윈도우 스케일 등)
    • UDP 헤더 (8바이트 고정)
      • 출발지/목적지 포트
      • 길이 (Length)
      • 체크섬 (Checksum)
  4. 응용 계층 (HTTP, DNS, SMTP 등)
    • 헤더: 프로토콜별 정의
    • 예: HTTP 헤더에는 Host, User-Agent, Content-Type, Cookie 등이 포함

✅ IPv4 패킷 구조 예시

예를 들어, 웹 브라우저에서 http://example.com에 접속할 때 패킷은 다음과 같은 구조를 가집니다.

  • Ethernet 헤더: 목적지/출발지 MAC 주소
  • IPv4 헤더: 목적지 IP = 93.184.216.34, 출발지 IP = 내 PC의 IP
  • TCP 헤더: 목적지 포트 = 80, 출발지 포트 = 임의 포트(에페메럴 포트)
  • HTTP 요청 데이터: GET / HTTP/1.1

✅ TCP 헤더 필드 상세

TCP는 연결 지향적이며 신뢰성을 보장합니다. 따라서 헤더에 다양한 제어 정보가 포함됩니다.

필드 설명
Source Port 출발지 포트 번호
Destination Port 목적지 포트 번호
Sequence Number 송신 바이트 스트림에서의 순서
Acknowledgment Number 수신 확인 번호 (ACK)
Data Offset 헤더 길이
Flags SYN, ACK, FIN, RST, PSH, URG 등 제어 비트
Window Size 수신 버퍼 크기 (흐름 제어)
Checksum 오류 검출
Urgent Pointer 긴급 데이터 표시
Options MSS, 윈도우 스케일, 타임스탬프 등
0      4       8              16            24            32
+------+-------+---------------+---------------------------+
|   Source Port   |   Destination Port                     |
+---------------------------------------------------------+
|                 Sequence Number                         |
+---------------------------------------------------------+
|              Acknowledgment Number                      |
+--------+------+--------+-------------------+------------+
| DataOff| Res. | Flags  |   Window Size                  |
+--------+------+--------+--------------------------------+
|   Checksum     |  Urgent Pointer                        |
+---------------------------------------------------------+
|   Options (if any)                                      |
+---------------------------------------------------------+

✅ UDP 헤더 구조

UDP는 단순하고 가벼운 프로토콜입니다. 헤더는 단 8바이트로 구성됩니다.

0      8      16     24     32
+------+-------+------+------+
| Source Port  | Destination Port |
+--------------+-----------------+
| Length       | Checksum        |
+--------------+-----------------+
| Data (Payload)                 |
+--------------------------------

 

 

 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 

반응형