본문 바로가기
컴퓨터 지식/네트워크&프로토콜

[네트워크📶] ICMP란 / ICMP Type / ICMP에 대해 ✨

by 서상혁 2020. 6. 10.

.

ICMP(Internet Control Message Protocol)란

 

 

이름 그대로 여러 정보를 전달하거나 컨트롤하는 용도로 사용되는 프로토콜입니다.

계층 : 네트워크 Layer

주 용도 :

 1. Error 알림

  - 패킷 전송이 실패했을 때 에러가 났음을 알림과 동시에, 해결 가능한 힌트를 제공합니다. 

 2. 진단/ 정보전달 메세지 ( 예 : ping 123.0.0.1 )

  - ping, tr aceroute 명령 등등 진단과 정보전달을 하는데에 사용합니다.

 

ICMP Message Format

 

ICMP 의 패킷 형태는 간단합니다. 

 

Type : ICMP 패킷의 종류를 의미하며 Code는 Type을 좀더 자세히 분류합니다.

Checksum : 코드에 오류가 없는지 확인하는 용도의 Checksum이며,

Additional header field : Type에 따라 쓸수도 있고, 안쓸수도 있는 부분입니다. 안쓴다면 0으로 가득차 있습니다.

PayLoad : 직접적인 데이터 내용입니다.

 

 

ICMP 주요 Type들

 

 


 

ICMP 진단/정보 타입 메세지

 

청록색으로 되어 있는 타입들은 진단, 정보관련 ICMP 메세지입니다.

대표적으로 Ping, Tracert/Traceroute가 있죠.

 

몇 가지 주요 메세지에 대해서만 알아 봅시다!

 

Ping 은 Type 8인 ICMP 메세지로 요청하며, 특정 IP와의 통신이 가능한지를 Type 0 메세지를 통해 반환합니다.  

Traceroute는 해당 IP까 거친 라우팅 경로를 반환해줍니다.

 

 

* Traceroute / Tracert 작동방식

https://programming119.tistory.com/154

 

[네트워크📶] Tracert 작동원리 / Traceroute 작동 방식 ✨

들어가기 앞서 Traceroute는 ICMP Error메세지를 통해 진행됩니다. ICMP 프로토콜의 원리를 알고 계시면 좋습니다. 링크 : Traceroute / Tracert 작동방식 특정 IP까지의 라우팅 경로를 알고 싶을때, 운영체제�

programming119.tistory.com


ICMP 에러 타입 메세지

 

먼저 주의하고 넘어가야 할 점은, IP의 특징 중의 하나인  Best Effort 하다는 점입니다.

IP 메세지는 본인이 할 수 있는 선에서 최선의 노력만 하지, 실패한다고 성공할 때 까지 하던가, 반드시 해결책을 보장해준다던가 하지 않습니다. 🤔

그러한 맥락에서, ICMP 에러 타입 메시지도, Error의 정보는 전달해주지만, source의 문제가 아닌 이상, 보내지지 않습니다.

 

에러 타입의 주요 Type들에 대해 알아봅시다!

 

 

IP datagram 이 문제가 있는 경우에도 ICMP 에러가 보내지지 않는 경우

 

- ICMP Error 메세지의 Error일 때.

- Checksum Error일 때

 (checksum Error는 source가 고칠 수 있는 경우가 아니므로)

- multicast/broadcast 전송의 에러일 경우

 ( 너무 많은 Error 가 전달될 수 있기에)

- Source 0.0.0.0 으로부터 온 경우

 (인터페이스가 아직 IP주소를 모른다, DHCP)

- killed IP source가 fragment 를 나르는 중이었을 경우.

 ( 2번째 fragment부터는 헤더에 대한 정보가 없고 data만 있다.)

 

 


 

에러 타입 3 : Destination Unreachable

Code 0 : Network 도달불가 (Network ID 문제) (Core router가 판단가능)

Code 1 : Host 도달불가 (Host ID 문제)

Code 2 : Protocol 도달불가 (Protocol 타입 문제)

Code 3 : Port 도달불가 (프로세스가 없다, 포트넘버가 잘못돼있다.)

Code 4 : fragment가 필요하나 DF 로 되어 있을 때. ( Path MTU 발견 및 수정할 정보 전송!)

등등 더 많은 코드가 있습니다.

 

에러 타입 4 : Source Quench

더이상 사용되지 않습니다.(deprecated)

이유 2가지:

1. TCP가 알아서 congestion control을 지원하기 때문에

2. UDP는 congestion control 따위 안합니다.

 

에러 타입 5 : Redirect

default router 가 지금 상황이 최적의 경로로 가는것이 아닌 것임을 알 때, 보내집니다.

(너 더 좋은 경로 있으니, 거기로 가. 지금 내 라우팅 경로는 삥 돌아가고 있어)

더 나은 게이트 웨이를 알려줍니다.

 

에러 타입 11 : Time Exceeded

두 '가지 경우에 발생합니다.

1. TTL 이 0 이 된 경우.

2. Fragment중 하나가 손실돼서, 다시  조합을 할 수 없을 경우.

 -> 이 경우는 보통 higher layer이 재전송합니다.

 

 

 


 

ICMPv6 

 

 

https://programming119.tistory.com/156?category=90492

 

 

[네트워크📶] ICMP in IPv6 / ICMPv6에 대해 ✨

ICMP란/ ICMP ipv4 https://programming119.tistory.com/155 [네트워크📶] ICMP란 / ICMP Type / ICMP에 대해 ✨ . ICMP(Internet Control Message Protocol)란 이름 그대로 여러 정보를 전달하거나 컨트롤하는 용..

programming119.tistory.com

 

 

 

 

 

 

출처 : 고려대학교 김효곤 교수님 '인터넷 프로토콜' 강의

728x90

댓글