본문 바로가기

Information Network

Network Layer : ICMP




ICMP(Internet Control Message Protocol)

IP는 신뢰성 없는 비연결성 datagram의 전달을 제공한다. IP는 Best effort 전달 서비스를 통해 최초 발신지에서 최종 목적지까지 datagram을 전달한다. 그러나 여기에는 error control과, 보조 방법들의 부재 같은 약점이 있다.

ICMP는 IP의 단점을 보완하기 위해서 고안되어 IP에게는 동반자적인 protocol이라고 할 수 있다.





메시지 유형

ICMP message는 error reporting message(오류 보고 메시지)와 query message(질의 메시지)의 두 가지 큰 유형으로 나뉜다.

error reporting message는 IP packet을 처리할 때 router나 host가 만나게 되는 문제들을 보고한다.

쌍으로 만들어지는 query message는 host나 network adminstrator가 router나 다른 host로부터 특별한 정보를 얻을 수 있도록 도와준다. 예를 들어 노드는 그들의 주위의 존재를 알게 되고, host는 그들의 network에서 router의 존재를 알게 되어 router에 대해 학습할 수 있으며, router는 node가 message의 방향을 바꿀 수 있도록 도울 수 있다.





메시지 형식

ICMP message는 8byte의 header와 가변크기의 data field를 가지고 있다.
 







오류보고

ICMP의 가장 중요한 역할 중 하나는 error reporting이다. 비록 기술이 날로 발전하여 신뢰성 있는 전송매체를 제공하고 있지만 error는 여전히 존재하며, 이러한 error를 처리해야하는데 IP는 신뢰성이 없는 protocol이다. 그래서 ICMP는 이러한 단점을 부분적으로 보완해주기 위해 고안되었는데 error를 수정하지 않고 단지 보고(reporting)만 한다. error 수정 여부는 상위 protocol에서 책임지게 된다.

datagram에서 전송 경로에 대해 사용 가능한 정보는 단지 발신지와 목적지의 IP주소박에 없으므로 error reporting message는 항상 최초 발신지에게 전송된다.

ICMP는 error에 대한 다섯가지 유형이 header에 있다.



Destination unreachable(목적지 도달 불가) :  router가 datagram을 경로로 내보낼수 없거나 host가 datagram을 전달할 수 없을때 datagram은 폐기되고, router나 host는 datagram을 최초로 전송한 발신지에 목적지 도달불가 메시지를 전송한다.

Source quench(발신지 억제) : IP는 connectionless protocol로써 flow control기능이 없다. 때문에 IP의 동작에서 큰 문제나 혼잡을 발생시키기도 하는데, source quench message를 통하여 IP의 flow control이나 traffic control기능을 수행한다.

time exceed(시간 초과) : time exceed message는 두 가지 경우에 발생하는데, TTL값이 0이 되어 datagram이 폐기될 때, router에 의해 time exceed message가 원 발신지로 전송되어야만 하며, 두 번째는 message를 구성하는 모든 단편화된 조각들이 정해진 특정 시간 내에 목적지에 도착하지 못하였을 경우 발생한다.  

Parameter Problem : datagram의 header정보가 애매모호하면 인터넷을 통해 전송되는 datagram에 심각한 문제를 발생시킬수가 있기 때문에 router나 host에서 애매모호한 값을 발견하면 datagram을 폐기하고 발신지에 parameter message를 송신하게 된다.

Redirection : host가 다른 network로 datagram을 전송할 때 잘못된 router에 송신할 수도 있기 때문에 이런 경우 datagram은 잘못된 router에서 올바른 router로 datagram을 전송한다. 그리고 host의 routing table을 갱신하기 위해 host에게 redirection message를 송신하게 된다.






Query


error 보고 이외에도 ICMP는 일부 network의 문제를 진단할 수 있다. 아래 그림과 같이 네 쌍의 다른 message group인 query message를 통해 이러한 기능을 수행한다.


이 유형의 ICMP message에서 노드는 query message를 송신하고, 목적지 노드에 의해 특정한 형식의 답변 message를 수신하게 된다. query message는 IP packet에 의해 capsulation되고, 차례로 데이터링크층 frame으로 capsulation된다. 그러나 이 경우에, 원래의 IP byte는 아래 그림에서 보는 바와 같이 message에 포함되지 않는다.



Echo-request & Echo-reply(반향요청, 반향응답) :  이는 Network 진단을 목적으로 고안되어 host들과 router들 간에 통신을 할 수 있는지를 결정하는데 사용된다.


Timestamp request & Timestamp reply(타임스탬프 요청과 응답) : Host와 Router는 두 시스템 간에 IP datagram이 순회하는 데 필요한 round-trip 시간을 결정하는 데 time stamp request와 time stamp reply message를 활용한다. 또한 두 장치간의 동기를 맞추는 데에도 사용할 수 있다.

Address-mask request & Address-mask reply : mask를 알기 위해서 host는 address mask request message를 LAN에 있는 host에게 보낸다. 만약 host가 router의 주소를 알고 있으면, router에서 즉시 응답이 보내진다. 만약 알지 못하면 message는 broadcast된다. address mask request message를 수신한 router는 host의 필요한 mask를 주기 위해 address mask reply message로 응답한다.

Router solicitation & advertisement : host는 router가 살아 있는지 정상적인 기능을 하는지 알아야 할 필요가 있다. 이러한 경우 Router solicitation, Router advertisement message가 사용될 수 있다.
Host는 Router solicitation message를 broadcast한다. 해당 message를 수신한 router들은 router advertisement message를 이용하여 자신의 routing 정보를 broadcast한다.


Checksum : ICMP에서 검사합은 전체 message(header, data)에 검사된다.
 






Debugging tools(오류수정 도구)

오류수정을 위해 ICMP를 사용하는 Ping과 traceroute에 대하여 알아보자.

Ping
Ping program은 host가 동작하고 반응하는지 알아보기 위해 사용되는 program이다.

Traceroute
Traceroute 프로그램은 출발지에서 목적지까지의 packet의 경로를 추적하는 데 사용할 수 있다.