[#1] Header Structure - Ethernet, IP, TCP/UDP, ICMP, ARP

2026. 1. 10. 22:32·Network Concepts

왜 Header Structure를 공부해야 할까?

1. 네트워크 프로토콜들의 헤더 구조를 공부하는 것은 네트워크의 동작 원리를 이해하고, 문제를 해결하기 위함 입니다.

2. 네트워크라는 복잡한 시스템 내부에서 데이터가 어떻게, 왜 그렇게 움직이는지를 보다 직관적으로 이해할 수 있습니다.

3. 또한, WireShark를 활용해서 패킷을 분석하고, 문제 지점을 파악하여 트러블 슈팅을 원활히 할 수 있기 때문입니다.


Layer 2 Protocol

1. Ethernet Header 구조

1-1. Ethernet Frame의 역할

Ethernet은 데이터 링크 계층(Layer 2)에서 동작하며, 같은 네트워크 내에서 장치 간 통신을 담당합니다.

Ethernet 프레임은 MAC 주소를 기반으로 데이터를 전달하며, 네트워크의 가장 기본적인 전송 단위입니다.

1-2. Ethernet Header Structure

주요 필드 설명

  • Destination MAC Address (6 bytes): 목적지 장치의 MAC 주소를 나타냅니다.
  • Source MAC Address (6 bytes): 송신 장치의 MAC 주소입니다. 이를 통해 수신 측에서 응답을 보낼 수 있습니다.
  • Type/Length (2 bytes): 상위 계층 프로토콜을 식별합니다. 예를 들어 0x0800은 IPv4, 0x0806은 ARP, 0x86DD는 IPv6를 의미합니다.

1-3. Ethernet Frame 전체 구조

실제 Ethernet 프레임에는 헤더 외에도 Preamble(8 bytes), SFD(1 byte), User data(46-1500 bytes), FCS(4 bytes) 등이 포함됩니다. 전체 프레임 크기는 최소 64바이트에서 최대 1518바이트입니다.

 

  • Preamble (7 bytes): 프레임 시작을 알리는 신호입니다. 10101010 패턴이 7번 반복되며, 수신 측의 비트 동기화에 사용됩니다.
  • SFD (Start Frame Delimiter, 1 byte): 실제 프레임 데이터의 시작점을 표시합니다. 10101011 패턴을 사용합니다.
  • FCS (Frame Check Sequence, 4 bytes): CRC-32 알고리즘으로 생성된 오류 검출 값입니다. 전송 중 데이터 손상 여부를 확인하는 데 사용됩니다.

1-4. MTU (Maximum Transmission Unit, 최대 전송 단위)

네트워크에서 한 번에 전송할 수 있는 최대 패킷 크기를 의미합니다. 단위는 바이트(bytes)입니다.

여기서 Ethernet Frame의 최대 크기는 1518byte로 Header 14bytes + 데이터(MTU의 최댓값) 1500bytes + FCS 4bytes로 구성됩니다.

MTU가 크다면 많은 데이터를 보낼 수 있어 효율적이지만, 네트워크 장비 과부화가 발생할 수 있다는 단점이 존재합니다.

  • 단편화 (Fragmentation): 전송할 데이터가 MTU보다 크면 여러 개의 작은 패킷으로 나누어 전송하고, 수신 측에서 데이터를 복원합니다.
  • Jumbo Frame: MTU를 1500바이트 이상으로 설정한 프레임을 의미합니다. 일반적으로 9000 bytes까지 지원하며, 대용량 데이터 전송 시 효율성을 높일 수 있습니다.

2. ARP Header Structure

2-1. ARP의 역할

ARP(Address Resolution Protocol)는 IP 주소를 MAC 주소로 변환하는 프로토콜입니다. 같은 네트워크 내에서 통신할 때, 목적지의 MAC 주소를 알아내기 위해 사용됩니다.

2-2. ARP Header Structure

 

주요 필드 설명

  • Hardware Type (16 bits): MAC 주소의 타입을 나타냅니다. ex) Ethernet은 1
  • Protocol Type (16 bits): IP 주소의 타입을 나타냅니다. ex) IPv4는 0x0800
  • Hardware Address Length (8 bits): MAC 주소의 길이입니다. ex) Ethernet은 6바이트
  • Protocol Address Length (8 bits): IP 주소의 길이입니다. ex) IPv4는 4바이트
  • Operation (16 bits): ARP 메시지의 타입을 나타냅니다.
    • 1: ARP Request
    • 2: ARP Reply
    • 3: RARP Request
    • 4: RARP Reply
  • Sender Hardware Address (6 bytes): 송신자의 MAC 주소입니다.
  • Sender Protocol Address (4 bytes): 송신자의 IP 주소입니다.
  • Target Hardware Address (6 bytes): 수신자의 MAC 주소입니다. ARP Request에서는 0으로 설정됩니다.
  • Target Protocol Address (4 bytes): 수신자의 IP 주소입니다.

2-3. ARP 동작 과정

  1. ARP Request: 송신자가 목적지 IP에 해당하는 MAC 주소를 찾기 위해 브로드캐스트로 ARP Request를 전송합니다.
  2. ARP Reply: 해당 IP를 가진 장치가 자신의 MAC 주소를 포함한 ARP Reply를 유니캐스트로 응답합니다.
  3. ARP는 동일 네트워크에서만 동작하고, 다른 네트워크 ARP 진행 시에는 Router를 사용해야 합니다.
  4. ARP 동작 후 ARP-Table에 IP주소와 MAC주소가 쌍으로 저장됩니다.

2-4. WireShark 테스트

 

    • ARP Request

    • ARP Reply

 

2-5. GARP (Gratuitous ARP)

GARP란, ARP 프로토콜의 특수한 형태로 송신자가 자신의 IP 주소를 Target IP로 설정하여 ARP Request 또는 Reply를 모든 장치에 브로드캐스트로 전송하는 프로토콜입니다.

  • 이러한 GARP의 목적은 IP 중복 및 충돌 방지, 또는 ARP Table(ARP Cache)을 갱신하는데 있습니다.
  • 사용자의 PC가 IP를 할당 받았을 때, 자신의 IP가 중복되는지를 알아보기위해 자신의 IP를 요청함으로써 중복 및 충돌을 방지를 할 수 있습니다. (ACD, Address Conflict Detection)
  • 만약, IP 주소는 그대로이지만 MAC 주소가 변경 되었을 때 다른 장치들의 ARP 테이블을 강제로 업데이트 할 수도 있습니다.

2-6. GARP WireShark 테스트

 

  • GARP Reqeust


Layer 3 Protocol

1. IP Header Structure (IPv4)

1-1. IP 프로토콜의 역할

IP(Internet Protocol)는 네트워크 계층(Layer 3)에서 동작하며, 서로 다른 네트워크 간의 데이터 전송을 담당합니다. IP 헤더는 출발지와 목적지 IP 주소, 라우팅 정보 등을 포함합니다.

  • 라우팅과 IP의 연관성 : IP 주소는 패킷이 어디로 가야 하는지 알려주는 주소를 뜻하고, 라우팅은 라우터가 해당 IP 주소를 보고 패킷을 어느 방향으로 보낼지 결정하는 과정으로 둘의 연관성이 매우 깊습니다.

1-2. IPv4 Header Structure

 

주요 필드 설명

  • Version (4 bits): IP 버전을 나타냅니다. IPv4는 4, IPv6는 6입니다.
  • IHL (Internet Header Length, 4 bits): IP 헤더의 길이를 32비트 단위로 표시합니다. 최소값은 5(20바이트)이며, 옵션이 있으면 증가합니다.
  • Type of Service (8 bits): QoS를 위한 필드로, 패킷의 우선순위와 처리 방식을 지정합니다. 현재는 DSCP(Differentiated Services Code Point)와 ECN(Explicit Congestion Notification)으로 세분화됩니다.
  • Total Length (16 bits): IP 헤더와 데이터를 포함한 전체 패킷의 길이입니다. 최대값은 65,535바이트입니다.
  • Identification (16 bits): 단편화된 패킷들을 재조립할 때 사용되는 고유 식별자입니다.
  • Flags (3 bits): 패킷 단편화 관련 플래그입니다.
    • Bit 0: 예약(항상 0)
    • Bit 1 (DF - Don't Fragment): 단편화 금지
    • Bit 2 (MF - More Fragments): 추가 단편 존재 여부
  • Fragment Offset (13 bits): 단편화된 패킷의 위치를 8바이트 단위로 표시합니다.
  • Time to Live (8 bits): 패킷의 수명을 나타냅니다. 라우터를 거칠 때마다 1씩 감소하며, 0이 되면 패킷이 폐기됩니다. 라우팅 루프를 방지합니다.
  • Protocol (8 bits): 상위 계층 프로토콜을 식별합니다. TCP는 6, UDP는 17, ICMP는 1입니다.
  • Header Checksum (16 bits): IP 헤더의 오류 검출을 위한 체크섬입니다. 데이터는 검사하지 않습니다.
  • Source IP Address (32 bits): 송신자의 IP 주소입니다.
  • Destination IP Address (32 bits): 수신자의 IP 주소입니다.
  • Options (가변 길이): 보안, 라우팅, 타임스탬프 등의 추가 정보를 담을 수 있습니다. 실무에서는 거의 사용되지 않습니다.

1-3. WireShark 테스트

  • Internet Protocol Version 4

2. ICMP Header Structure

2-1. ICMP의 역할

ICMP(Internet Control Message Protocol)는 네트워크 진단과 오류 보고를 위한 네트워크 계층(Layer 3)의 프로토콜입니다. ping, traceroute 같은 도구에서 사용되며, 네트워크 상태를 확인하는 데 필수적입니다.

2-2. ICMP Header Structure

 

주요 필드 설명

  • Type (8 bits): ICMP 메시지의 종류를 나타냅니다.
    ICMP 메시지 유형 설명
    Type 8 / 0 - Echo Request / Echo Reply 네트워크 연결 상태 확인 (ping 명령어)
    Type 3 - Destination Unreachable 목적지 IP에 도달할 수 없음
    Type 5  - Redirect  더 나은 라우팅 경로 안내
    Type 11 - Time Exceeded  TTL 초과로 패킷이 폐기됨 (traceroute에서 사용)
  • Code (8 bits): Type에 대한 세부 정보를 제공합니다. 예를 들어, Type 3 (Destination Unreachable)의 경우 Code 0은 네트워크 도달 불가, Code 1은 호스트 도달 불가를 의미합니다.
  • Checksum (16 bits): ICMP 메시지의 오류 검출을 위한 체크섬입니다.
  • Rest of Header - Unused (32 bits): Type과 Code에 따라 다른 정보를 담습니다. Echo Request/Reply의 경우 Identifier와 Sequence Number가 포함됩니다.

2-3. ICMP Echo Request/Reply (Ping) 구조

Ping 명령어 실행 시, Identifier는 프로세스를 식별하고, Sequence Number는 각 요청을 구분합니다.

2-4. WireShark 테스트

  • ICMP Request

  • ICMP Reply


Layer 4 Protocol

1. TCP Header Structure

1-1. TCP의 역할

TCP(Transmission Control Protocol)는 전송 계층(Layer 4)에서 신뢰성 있는 연결 지향 통신을 제공합니다. 순서 보장, 흐름 제어, 오류 제어 기능을 제공하여 데이터의 정확한 전송을 보장합니다.

1-2. TCP Header Structure

 

주요 필드 설명

  • Source Port (16 bits): 송신 측 애플리케이션의 포트 번호입니다.
  • Destination Port (16 bits): 수신 측 애플리케이션의 포트 번호입니다.
  • Sequence Number (32 bits): 전송하는 데이터의 순서 번호입니다. 연결 설정 시 초기 시퀀스 번호(ISN)가 랜덤하게 결정됩니다.
    • 0과 1같은 고정 값이 아니라 ISN(Initial Sequence Number)를 사용하는 이유는 시퀀스 예측을 통한 보안상의 공격을 예방하기 위해서 입니다.
  • Acknowledgment Number (32 bits): 다음에 받을 것으로 예상되는 시퀀스 번호입니다. ACK 플래그가 설정된 경우에만 유효합니다.
  • Data Offset (4 bits): TCP 헤더의 길이를 32비트 단위로 나타냅니다. 최소값은 5(20바이트)입니다.
  • Reserved (3 bits): 미래 사용을 위해 예약된 필드로 0으로 설정됩니다.
  • Flags (9 bits): TCP 연결 상태와 제어를 위한 플래그들입니다.
    • URG: Urgent Pointer 필드 유효
    • ACK: Acknowledgment 필드 유효
    • PSH: 즉시 상위 계층으로 전달
    • RST: 연결 강제 종료
    • SYN: 연결 설정 요청
    • FIN: 연결 종료 요청
  • Window (16 bits): 수신 가능한 데이터 크기를 바이트 단위로 나타냅니다. 흐름 제어에 사용됩니다.
  • Checksum (16 bits): TCP 헤더와 데이터의 오류 검출을 위한 체크섬입니다.
  • Urgent Pointer (16 bits): URG 플래그가 설정된 경우, 긴급 데이터의 위치를 나타냅니다.
  • Options (가변 길이): MSS(Maximum Segment Size), Window Scale, SACK(Selective Acknowledgment) 등의 여러가지 추가 정보를 담습니다.

1-3. TCP 3-Way Handshake와 헤더

TCP 연결 설정 과정에서 헤더의 플래그 필드가 중요한 역할을 합니다.

  1. SYN: 클라이언트가 SYN 플래그를 설정하여 연결 요청
  2. SYN-ACK: 서버가 SYN+ACK 플래그를 설정하여 응답
  3. ACK: 클라이언트가 ACK 플래그를 설정하여 연결 확립

1-4. WireShark 테스트

    • Transmission Control Protocol

2. UDP Header Structure

2-1. UDP의 역할

UDP(User Datagram Protocol)는 TCP와 달리 비연결성 프로토콜로, 신뢰성보다는 속도와 효율성을 중시합니다. 실시간 스트리밍, DNS 조회, VoIP 등에 주로 사용됩니다.

2-2. UDP Header Structure

 

주요 필드 설명

  • Source Port (16 bits): 송신 측 포트 번호입니다. 필요 없는 경우 0으로 설정할 수 있습니다.
  • Destination Port (16 bits): 수신 측 포트 번호입니다.
  • Length (16 bits): UDP 헤더와 데이터를 포함한 전체 길이입니다. 최소값은 8바이트입니다.
  • Checksum (16 bits): 오류 검출을 위한 체크섬입니다. IPv4에서는 선택사항이지만, IPv6에서는 필수입니다.

2-3. WireShark 테스트

  • User Datagram Protocol

2-4. TCP vs UDP 헤더 비교

TCP 20 bytes 60 bytes (Options 포함)
UDP 8 bytes 8 bytes (고정)

TCP 헤더가 최소 20바이트인 반면, UDP 헤더는 단 8바이트로 매우 간단합니다.

이는 UDP가 연결 관리, 흐름 제어, 순서 보장 등의 기능을 제공하지 않기 때문입니다.

'Network Concepts' 카테고리의 다른 글

[Network] Port Mirroring - SPAN / RSPAN / ERSPAN  (0) 2026.02.22
[Network] TWAMP와 OWAMP  (0) 2026.01.13
[Network] Backhaul과 Fronthaul이란 무엇일까?  (0) 2025.12.30
[Network] FTTH - Fiber To The Home  (0) 2025.12.29
[Network] VXLAN과 EVPN은 무엇일까?  (0) 2025.12.07
'Network Concepts' 카테고리의 다른 글
  • [Network] Port Mirroring - SPAN / RSPAN / ERSPAN
  • [Network] TWAMP와 OWAMP
  • [Network] Backhaul과 Fronthaul이란 무엇일까?
  • [Network] FTTH - Fiber To The Home
김슭삵
김슭삵
Layer By Layer. 한 층씩 성장 해가는 네트워크와 서버의 학습 공간
  • 김슭삵
    Layer By Layer
    김슭삵
  • 전체
    오늘
    어제
    • 분류 전체보기 (49)
      • Network Concepts (36)
      • Network Practice (12)
      • Linux (0)
      • AWS & Cloud (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ACL
    Etherchannel
    TCP/IP
    ERSPAN
    vlan
    wireshark
    Port Mirroring
    ROAS
    Network
    ARP
    Cisco
    HSRP
    RSPAN
    dns
    dhcp
    dai
    LACP
    gns3
    WLAN
    Nat
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
김슭삵
[#1] Header Structure - Ethernet, IP, TCP/UDP, ICMP, ARP
상단으로

티스토리툴바