.
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
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
출처 : 고려대학교 김효곤 교수님 '인터넷 프로토콜' 강의
'컴퓨터 지식 > 네트워크&프로토콜' 카테고리의 다른 글
[네트워크📶] DNS란 / DNS Name Space / DNS Tree / TLD (0) | 2020.06.13 |
---|---|
[네트워크📶] ICMP in IPv6 / ICMPv6에 대해 ✨ (0) | 2020.06.12 |
[네트워크📶] Tracert 작동원리 / Traceroute 작동 방식 ✨ (0) | 2020.06.10 |
[네트워크📶] SMTP란 / SMTP Format / SMTP 명령어 (0) | 2020.06.02 |
[네트워크📶] DHCP 패킷 분석/ DHCP 특징 (0) | 2020.06.01 |
댓글