찾고 싶은 내용이 있으시면 Ctrl + F로 찾아보시는 것을 추천해요.
혹여나 틀린 내용이 있다면, 댓글이나 이메일로 알려주시면 감사하겠습니다.
ICMP
Ineternet Control Mesaage Protocol 이라고 한단다. 오류 보고 프로토콜이라고 할 수 있는 ICMP는 라우터 - 라우터 혹은 라우터 - 호스트간 주고 받는다. 물론 ICMP 를 이용한 Ping 프로그램으로 호스트 간에도 사용하지만, 개인적으로는 오류 보고라는 관점에서 봤을 때 조금 다른 이야기라고 생각된다.
ICMP Header
ICMP header는 요렇게 생겼는데, 이 header는 별도로 IP header 대신에 들어간다거나 하는 것이 아니라, IP 패킷의 Payload로 들어간다.
이런 식으로 IP 헤더로 감싸져서 ICMP 메시지가 보내진다. 이러한 특성 때문에 ARP와 마찬가지로 2.5계층 프로토콜이라고도 한다. IP Header 에서 상위 프로토콜을 의미하는 protocol field도 ICMP(1)이 셋팅되어진다.
추가적으로, ICMP의 Data section에는 위와 같이 임의의 평문뿐 아니라, IP header와 TCP 혹은 UDP header가 같이 들어가는 경우도 있다.
RFC 792는 ICMP에 관한 내용인데 그 중 fragment 패킷에 대한 내용도 써있다.
Fragment 패킷에 대한 ICMP를 보내야하는 경우에는, 오직 첫 번째 Fragment 패킷에 대해서만 ICMP를 보낸다는 것이다. 별도의 이유는 써있지 않지만, 추측해보자면 ICMP 메시지를 받은 송신자가 패킷을 recovery하기 위해서는 무엇이 잘못되었는지 파악할 수 있어야하는데, ICMP의 Data Section에 있는 IP와 TCP 혹은 UDP header의 정보가 그 역할을 해준다.
ICMP는 첫 번째 Fragment가 아닌 다른 Fragment에서는 Header를 가져올 수 없기 때문에,
왜냐하면 IP 프로토콜을 사용하는 2계층에서는 3계층의 TCP / UDP 정보를 볼 수가 없다. 그래서 data의 앞 부분부터 28byte를 떼어오는 방식으로 상위 레이어의 header를 얻어낸다. 즉, 첫 번째 Fragment에만 상위 레이어의 header가 존재함을 이해 할 수 있다.
위에서 28byte는 Internet Header (20byte) + Original Data Datagram (8byte) 에 해당한다.
'네트워크 > 네트워크 용어 (DICT)' 카테고리의 다른 글
TCP Retransmission (0) | 2019.06.18 |
---|---|
TCP Protocol (0) | 2019.06.18 |
네트워크와 관련된 넓고 얕은 지식 (IP 프로토콜 편) (0) | 2019.04.10 |
네트워크와 관련된 넓고 얕은 지식 (ARP 편) (2) | 2019.04.10 |
네트워크와 관련된 넓고 얕은 지식 (IP 편) (0) | 2019.04.09 |