티스토리 뷰

IPv4 패킷구조와 프로토콜

 

위 두 그림에 대해서 미리 알고 있으면 좋다.


IPv4 헤더의 각 필드별 소개

  • VER: 인터넷 프로토콜의 버전을 의미한다. IPv4, IPv5, IPv6 등의 버전이 들어갈 수 있다.
  • HLEN: 헤더의 길이이다.
    • 헤더의 길이는 최소 20바이트부터 최대 60바이트의 크기를 가지기에 0부터 15까지의 수를 표현할 수 있는 4비트를 가지고 60바이트까지 표현하기 위해서 4를 곱한다.
    • IPv6에서는 헤더의 크기가 항상 320바이트이기에 이 필드가 없다.
  • Service type: IP 데이터그램의 서비스 형태를 알린다.이 필드를 통해 이 패킷이 얼마나 중요하고 긴급한 것인지를 알 수 있기에 QoS(Quality of Service)를 구현할 수 있다.
    • DSCP(6bit): 서비스 유형을 의미하는 필드
    • ECN(2bit): 경로의 혼잡 정보를 담는 필드, 지금은 쓰지 않는 필드
  • Total length: 헤더의 크기까지 포함한 IP데이터그램의 크기를 의미한다.
  • Identification: IP 데이터그램을 구분하기 위해서 쓴다.
    • 예를 들어 IP 데이터그램이 단편화(fragmentation)되었을 때 단편화된 데이터그램이 원래 어떤 데이터그램에 속해 있는 지를 알 수 있다.
    • IPv6에서는 라우터가 패킷을 단편화하지 않기 때문에 이 필드는 삭제되었다.
  • Flags: IP 데이터그램이 단편화됬는지를 나타내는 필드이다. 
  • Fragmentation offset: 단편화된 데이터그램의 순서를 나타낸다. 
  • Time to live(TTL): 패킷이 라우터를 거칠 때마다 이 필드의 값이 1씩 감소되며 0이 되면 버려진다. 
  • Protocol: IP 데이터그램의 데이터(페이로드)에 담겨져 있는 상위 계층의 프로토콜을 알려준다
  • Header checksum: Header 필드의 오류를 검출할 수 있는 정보가 담긴 필드이다.
  • Source IP address: 패킷을 보낸 노드의 IP 주소가 담긴다.
  • Destination IP address: 목적지의 IP 주소가 담긴다.

네트워크 통신에서는 전송할 데이터가 한번에 보낼 수 있는 단위를 벗어났을 때 데이터를 여러개의 패킷으로 분할(단편화)하여 보낸다.

 


🎈 IPv4 패킷 헤더가 실제로 어떻게 찍히는지 알아보기 위하여 WireShark 를 통하여 간단한 실험을 해보았다.

 

아래는 3000 byte 를 구글 IP 8.8.8.8 에 전송한 사진이다.

 

이런 식으로 찍히는 것을 확인할 수있다 (자세한 링크)

 

① Frame 해석기, ② Ethernet 해석기, ③ IPv4 해석기 이외에 ④ TCP 해석기, ⑤ HTTP 해석기 등이 있다고 한다.

 

Ethernet 해석기와 2계층 데이터프레임 패킷구조

Preamble과 FCS 는 WireShark에 찍히지 않는다

 

 

IPv4 해석기와 IPv4 패킷 구조

두 사진을 비교하니 실제로 그대로 찍히는 모습을 볼 수 있다. 🎉🎉


 

더 재밌는 것은 전송할 데이터를 여러개의 패킷으로 분할하여 보낸 것을 볼 수 있다.

 

식별자는 60270으로 같지만 Fragment Offset으로 순서가 구분됨.

 

 


Flags - 3BIT

  • Bit 0  -  예약됨 0으로 설정
  • Bit 1  -  단편화 비트가 아님 (0= 단편화 , 1=단편화가 아님)
  • Bit 2  -  더 단편화된 비트 (0=마지막 조각 , 1= 전송될 조각이 더있음)

Fragment Offset

각 프래그먼트의 원 데이터의 위치를 바이트 단위로 나타냄

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함