ICMP(Internet Control Message Protocol)
통신흐름의 제어 역할을 하는 중요한 프로토콜. Router가 경로 설정을 할 수 없는 경우, Data를 전달할 수 없는 상황이 발생했을 경우, Router는 네트워크상의 문제를 피하거나 복구하도록 Source host에게 ICMP를 이용하여 통보한다. ICMP는 오류를 보고할 뿐이지 해결하지는 않는다.
ICMP의 역할
반향 |
IP노드의 진단도구 |
목적지 미도착 |
목적지 IP노드에 도착하지 않았다는 것을 나타내기위해 사용 |
출발지 억제 |
출발지 집중문제를 나타내기 위해 사용 |
재지정 |
대체 경로를 알리기 위해 라우터에 사용 |
시간초과 |
IP header TTL field 값의 만료를 나타내기 위해 사용 |
매개변수 문제 |
IP datagram 문제를 나타내기 위해 사용 |
타임 스탬프 |
인터넷에서 시간을 재기 위해 사용 |
주소 마스크 |
네트워크의 서브넷 마스크 정보를 입수하기 위해 사용 |
상황에 따른 ICMP의 패킷 구조도
① ICMP 기본형식
type, code값은 message구별을 나타낸다.
IP header 20 bytes |
ICMP message n bytes | |||
IP header 20 bytes |
type 1 byte |
code 1 byte |
checksum 2 bytes |
type과 코드에 관련된 내용들 m types |
IP datagram |
checksum은 ICMP message에 대한 확인 값이다. Message는 Type과 Code와 관련이 있는 내용이 들어간다. 다음은 위의 타입에 대한 내용이다.
IP header 20 bytes |
code(0-15) 1 byte |
checksum 2 bytes |
unused (must be 0) 4 bytes | ||
IP header + fist 64 bits of original IP datagram data |
② 목적지 미도착 메시지 포맷
Type값은 오류의 원인, Code는 구체적 이유를 말한다.
기본값의 설명은 아래표와 같다.
Type |
ICMP message |
Type |
ICMP message |
0 |
반향 응답 |
13 |
타임 스탬프 요청 |
3 |
목적지 미도착 |
14 |
타임 스탬프 응답 |
4 |
출발지 억제 |
15 |
정보 요청 |
5 |
재지정 |
16 |
정보 응답 |
8 |
반향 응답 |
17 |
주소 마스크 요청 |
11 |
시간 초과 |
18 |
주소 마스크 응답 |
12 |
비지능적 매게 변수(IP) |
Code |
설 명 |
0 |
IP 목적지 주소에 지정된 네트워크가 없을 때(라우터에서만 생성, 경로 설정 실패) |
1 |
데이터그램이 라우터에서는 성공적으로 전달되었지만 마지막 라우터가 호스트와 통신 불가 (발생이유: 호스트 종료, 구성 오류, IP 설정 오류(목적지 네트워크에 직접 연결하는 라우터 에서 발생) |
2 |
데이터그램이 목적지 호스트에 도착했지만 IP 데이터그램이 운반하고 IP 헤더의 프로토콜 필드로 식별된 상위 프로토콜을 사용할 수 없다는 뜻. TCP/IP 호스트에서 구현되는 공통의 상위 프로토콜은 TCP, UDP, OSPF임, IP header의 프로토콜 ID를 이용해 사용가능 여부 를 확인하여 문제를 해결할 수 있다. |
3 |
지정된 전송 계층 프로토콜(TCP, UDP)이 데이터그램을 개별화할 수 없고 송신자에게 알 릴 수 있는 다른 프로토콜 매커니즘을 가지고 있지 않을 경우 생성(예: 서버의 데몬 등) |
4 |
네트워크 인터페이스의 MTU size가 datagram의 크기보다 작기 때문에 datagram을 발생 해야 하는 라우터가 생성. 그러나 datagram header에 DF flag가 1로 설정되면 라우터는 datagram DF할 수 없다. DF flag는 TFTP파일 전송을 수행하는 디스크가 없는 WS의 시 스템 부트 메시지 다운로드를 위해 1로 설정 |
5 |
IP 출발지 경로 옵션을 사용하는 IP datagram에 대해 라우터에서 생성, 라우터는 datagram 삭제 |
6 |
라우터가 경로 설정표에서 목적지 네트워크를 알 수 없다는 것을 탐지했을 때 생성 |
7 |
라우터가 네트워크 인터페이스에 있는 데이터 링크층 소프트웨어를 통해 목적지 호스트가 없다는 것을 탐지했을 때 라우터에서 생성 |
8 |
라우터가 나머지 네트워크에서 호스트가 격리된 것을 탐지하면 생성, RFC1812에서 사용 못하도록 함 |
9 |
목적지 네트워크와의 통신이 관리상 금지됨 |
10 |
목적지 호스트와의 통신이 관리상 금지됨 |
11 |
라우터에서 경로 설정 테이블의 경로가 요청한 ToS값 또는 기본 ToS와 일치할 수 없기 때문에 datagram을 발송할 수 없을 경우 생성 |
12 |
목적지 호스트에 도달할 수 없을 경우(Code 11과 유사) |
13 |
통신 방화벽 때문에 관리상 금지됨 |
14 |
호스트 우선권 위반(송신자 호스트에 대한 첫 번째 홉 라우터가 생성) |
15 |
우선권 효력이 차단됨(라우터에서 우선권을 낮게 보낸 datagram을 삭제하고 송신자에게 보낸 MSG) |
③ Time Exceeded Message
type(11) 1 byte |
code(0/1) 1 byte |
checksum 2 bytes |
unused (must be 0) 4 bytes | ||
IP header + fist 64bits of original IP datagram data |
시간 초과를 나타내는 값 11일 tpye의 값이다. 그리고 전송 중간에 TTL 값이 0이 되면 code값은 0이 되고, 재조합 과정중에 0이 되면 TTL 값은 1이 된다.
④ Source Quench Message
중간에 있는 router의 buffer가 꽉차서 더 이상 자료를 받을 수 없을 때 자료를 보내는 source host에 보내는 메시지이다.
type(4) 1 byte |
code(0) 1 byte |
checksum 2 bytes |
unused (must be 0) 4 bytes | ||
IP header + fist 64bits of original IP datagram data |
type에는 출발지에게 더 이상 메시지를 보내지 말라는 4값이 들어간다. 경로 설정이 잘못되었으니 경로 설정의 변경을 요청하는 값 0이 code값으로 들어간다.
⑤ Redirection Message
type(5) 1 byte |
code(0-3) 1 byte |
checksum 2 bytes |
unused (must be 0) 4 bytes | ||
IP header + fist 64bits of original IP datagram data |
재지정 값 5가 type의 값으로 설정되고, 대상이 네트워크일 경우 Code는 0, 호스트일 경우 1, 서비스와 네트워크일 경우 2, 서비스와 호스트일 경우 3의 값이 들어간다.
⑥ Echo Request and Echo Reply Message
type(0/8) 1 byte |
code(0) 1 byte |
checksum 2 bytes |
identifier 2 bytes |
sequence number 2 bytes | |
optional data |
ping 명령어에 사용한다. ping에 대한 응답을 할 때는 type값이 0이고, ping을 요청할 시에는 1이 type 값으로 들어간다. 이때 code값은 0이다.
'Network' 카테고리의 다른 글
IMS (IP Multimedia Subsystem) (0) | 2008.04.30 |
---|---|
OSI 7 Layer - 1 계층 (Physical layer) (0) | 2008.04.28 |
Baseband, Narrowband, Broadband (0) | 2008.04.28 |
TCP 헤더 구조 (0) | 2008.04.28 |
UDP 헤더 구조 (0) | 2008.04.28 |