TCP IP 파이썬 활용

ICMP 헤더의 구조와 항목

웹하는빡통 2020. 6. 9. 15:10

전송 단위가 패킷인 ICMP 헤더의 길이는 8바이트(64BIT)이다. UDP 헤더와 마찬가지로 ICMP 헤더도 고정적이다. 

타입(Type) 항목과 코드(Code) 항목은 각각 8비트이고 오류 검사 항목은 16비트이다. 그리고 기타 항목은 32비트이다.(모든 항목이 8비트 배수 단위임) 이에 ICMP 헤더의 길이는 총 64비트다.  

 

그림 1-1

그림 1-1은 TCP/IP 응용 계층에서부터 시작하는 전송 단위를 보여준다. 이때 UDP 페이로드는 응용 계층에서 생성됐고, 실제 사용자의 정보를 담고있다. 

그림 1-2

반면 그림 1-2는 TCP/IP 네트워크 계층에서부터 시작하는 전송 단위를 보여준다.

이때 ICMP 페이로드는 네트워크 계층에서 생성됐고 TCP/UDP 페이로드와 달리 무의미한 문자열 정보를 담고 있다. 또한

라우팅을 위해 ICMP 헤더 앞에 IP헤더가 추가적으로 붙는다. 

 

위 예제와 같이 기타 항목에는 ID항목과 일련 번호 항목이 있는 것을 알 수 있다.  

 

각각 IP()/ICMP(), IP()/UDP()를 이용하여 UDP 헤더, TCP 헤더, IP 헤더, ICMP 헤더를 확인했다. 이외에도 ARP 헤더와 

Ethernet 헤더를 확인해 보자. 

 

먼저 ARP 헤더 정보이다. ARP 헤더의 길이는 28바이트(224Bit)로서 아래의 구성으로 이루어줬다. 

16비트 길이의 하드웨이 타입(Hardware Type)항목

16비트 길이의 프로토콜 타입 항목

8비트 길이의 하드웨어 주소 길이 항목

8비트 길이의 프로토콜 주소 길이 항목

16비트 길이의 연산 코드 항목

48비트 길이의 출발지 하드웨어 주소 항목

32비트 길이의 출발지 프로토콜 주소 항목

48비트 길이의 목적지 하드웨어 주소 항목

32비트 길이의 목적지 프로토콜 주소 항목 등 총 9개의 항목으로 이루어줬다.(모든 항목이 8비트 배수 단위임)

 

다음으로 이더넷 헤더는 아래 예제와 같다. 이때 IP/ICMP/ARP 프로토콜과 달리 이더넷 프로토콜의 전송 단위는 프레임이다. 참고로 ARP 프로토콜은 IP와 이더넷을 연결하는 프로토콜인 만큼 패킷과 프레임 사이에 있는 개념이지만 통상적으로 패킷으로 분류한다. 

 

이더넷 헤더의 길이는 14바이트(112Bit)로서 이더넷 헤더 구성 요소는 다음과 같다.

48비트 길이의 목적지 MAC Address 항목

48비트 길이의 출발지 MAC Address 항목

16비트 길이의 Type 항목으로 이루어진 구조다. 

 

마지막으로 해당 예제는 ARP 브로드캐스트 요청과 ARP 유니캐스트 응답등에서 볼 수 있는 구조이다.