ICMPv4
ICMP(Internet Control Message Protocol)는 IP 프로토콜의 오류 보고와 수정 및 호스트나 라우터의 동작 여부를 확인하기 위한 프로토콜이다. IP 패킷이 만기되어(TTL 필드가 0) 목적지에 도착하지 못할 때 라우터는 발신지에게 ICMP를 보낸다. 또한 단편화 패킷이 주어진 시간안에 도착하지 못하면 목적지에서는 발신지에게 ICMP를 보낸다. 이 외에도 목적지의 호스트의 동작 여부나 경로를 확인할 때도 ICMP를 이용한다.
참고: RFC 792, http://tools.ietf.org/html/rfc792
프로토콜 스택
0~7 |
8~15 |
16~23 |
24~31 |
Type(8) |
Code(8) |
Checksum(16) | |
Rest of header(가변) | |||
Data(가변) |
참고: 위키백과, http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol
Type |
Code |
설명 |
0 |
0 |
Echo reply(Type 8, Echo request) |
1,2 |
|
Reserved |
3 |
0 |
Destination network unreachable |
1 |
Destination host unreachable | |
2 |
Destination protocol unreachable | |
3 |
Destination port unreachable | |
4 |
Fragmentation required | |
5 |
Source route failed | |
6 |
Destination network unknown | |
7 |
Destination host unknown | |
8 |
Source host isolated | |
9 |
Network administratively prohibited | |
10 |
Host administratively prohibited | |
11 |
Network unreachable for TOS | |
12 |
Host unreachable for TOS | |
13 |
Communication administratively prohibited | |
14 |
Host Precedence Violation | |
15 |
Precedence cutoff in effect | |
4 |
0 |
Source quench(혼잡 제어) |
5 |
0 |
Redirect Datagram for the Network |
1 |
Redirect Datagram for the Host | |
2 |
Redirect Datagram for the TOS and Network | |
3 |
Redirect Datagram for the TOS and Host | |
6 |
|
Alternate Host Address |
7 |
|
Reserved |
8 |
0 |
Echo request(Type 0, Echo reply) |
9 |
0 |
Router Advertisement |
10 |
0 |
Router discovery/selection/solicitation |
11 |
0 |
TTL expired in transmit |
1 |
Fragment reassembly time exceeded | |
12 |
0 |
Parameter Problem(Pointer indicates the error) |
1 |
Parameter Problem(Missing a required option) | |
2 |
Parameter Problem(Bad length) | |
13 |
0 |
Timestamp |
14 |
0 |
Timestamp reply |
15 |
0 |
Information request |
16 |
0 |
Information reply |
17 |
0 |
Address Mask request |
18 |
0 |
Address Mask reply |
19 |
|
Reserved for security |
20~29 |
|
Reserved for robustness experiment |
30 |
0 |
Traceroute(Information request) |
31 |
|
Datagram Conversion Error |
32 |
|
Mobile Host Redirect |
33 |
|
Where are you(IPv6) |
34 |
|
Here I Am(IPv6) |
35 |
|
Mobile Registration request |
36 |
|
Mobile Registration reply |
37 |
|
Domain Name request |
38 |
|
Domain Name reply |
39 |
|
SKIP Alogorithm Discovery Protocol |
40 |
|
Photuris, Security failures |
41 |
|
ICMP for experimental mobility protocols such as Seamoby |
42~255 |
|
Reserved |
'
Echo request(Type 8)/ reply(Type 0)
code는 항상 0이어야 함
Rest of the header에 id(16), seq(16)
id는 한 쌍의 request와 reply에 값이 같음
Data Section에는 추가적인 데이터(메시지)
Timestamp(Type 13), Timestamp reply(Type 14)
code는 항상 0이어야 함
Rest of the header에 id(16), seq(16)
Data Section에는 요청 시간(32), 수신 시간(32), 전송 시간(32)
Timestamp에는 요청 시간을 설정하여 보낸다.
Timestamp reply에는 수신한 시간을 채운다. 응답 메시지 출발 시점을 전송시간에 채운다.
Destination unreacable(Type 3)
code는 0~15를 사용한다.
0 – 하드웨어 고장 등의 이유
1 – 호스트에 도달할 수 없음(하드웨어 고장일 수 있다.)
2 – 프로토콜에 도달할 수 없음(목적지 호스트가 생성)
3 – 포트에 도달할 수 없음(목적지 호스트가 생성)
4 – 단편화가 필요하지만 datagram에 DF 필드가 설정되어 있을 때
5 – 발신지 라우팅을 수행할 수 없음
6 – 목적지 네트워크가 알려져 있지 않음(라우터의 정보 부재)
7 – 목적지 호스트가 알려져 있지 않다.(존재하지만 라우터가 목적지호스트를 모름)
8 – 발신지 호스트가 고립
9 – 목적지 네트워크와 통신이 관리상의 이유로 금지
10 – 목적지 호스트와 통신이 관리상의 이유로 금지
11 – 명시한 서비스 유형에 대해 네트워크에 도달할 수 없음
12 – 명시한 서비스 유형에 대해 호스트에 도달할 수 없음
13 – 관리자가 필터를 설치하여 호스트에 도달할 수 없음
14 – 호스트 우선순위를 위반하여 호스트에 도달할 수 없음
15 – 우선순위에 밀려 호스트에 도달할 수 없음
Rest of the header는 모두 0
Data Section에는 받은 IP 헤더와 datagram의 8바이트
Source quench(Type 4)
code는 항상 0
Rest of the header는 모두 0
Data Section에는 받은 IP 헤더와 datagram의 8바이트
Redirection(Type 5)
code는 0~3
0 - 네트워크 지정 경로를 위한 재지정
1 - 호스트 지정 경로를 위한 재지정
2 - 특정한 서비스 유형에 기초한 네트워크 지정 경로를 위한 재지정
3 - 특정한 서비스 유형에 기초한 호스트 지정 경로를 위한 재지정
Rest of the header는 타겟 라우터 IP 주소
Data Section에는 받은 IP 헤더와 datagram의 8바이트
Router Advertisement(Type 9) , 자신이 라우터라고 알리는 것
Rest of the header는 Advertisement count(8), Address Entry size(8), Lifetime(16)
Advertisement count - Router 정보 개수
Address Entry size - 각 라우터 주소의 정보 개수(단위 4바이트), 일반적으로 2
Lifetime - 유효 시간
Data Section에는 Router 주소 구조체(라우터 주소 4바이트, 우선순위 레벨 4바이트)
Router Solicitation(Type 10) , 누가 라우터인지 묻는 것
code는 항상 0,
Rest of the header는 모두 0으로 채움
Time exceeded(Type 11)
code 0 - TTL이 0이 되었음
code 1 - 단편화의 일부가 도착하지 않음
Rest of the header는 항상 0
Data Section에는 받은 IP 헤더와 datagram의 8바이트
Parameter Problem(Type 12)
code 0~2
0 - 헤더 필더 중에서 명확하지 않은 것이 있거나 빠진 것이 있다.
Rest of the header의 첫 번째 바이트는 해당 필드(바이트 오프셋)를 가리킴
1 - 옵션의 일부가 필요하지만 빠졌다. 이 때는 어디가 잘못 되었는지 알려주지 않음
2 - Length가 이상함
나머지 Rest of the header는 항상 0
Data Section에는 받은 IP 헤더와 datagram의 8바이트
다른 네트워크 프로토콜
[프로그래밍 기술/TCPIP 프로토콜] - ethernet
[프로그래밍 기술/TCPIP 프로토콜] - ARP(Address Resolution Protocol)
[프로그래밍 기술/TCPIP 프로토콜] - TCP(Transmission Control Protocol,RFC 675, RFC 793)
[프로그래밍 기술/TCPIP 프로토콜] - UDP(User Datagram Protocol, RFC 768)
[프로그래밍 기술/TCPIP 프로토콜] - DNS(Domain Name System, RFC 1034)
[프로그래밍 기술/TCPIP 프로토콜] - DHCP(Dynamic Host Configuration Protocol)
'네트워크 및 보안 > TCPIP 프로토콜' 카테고리의 다른 글
DNS(Domain Name System, RFC 1034) (0) | 2015.02.03 |
---|---|
DHCP(Dynamic Host Configuration Protocol) (0) | 2015.02.02 |
TCP(Transmission Control Protocol,RFC 675, RFC 793) (0) | 2015.02.02 |
UDP(User Datagram Protocol, RFC 768) (0) | 2015.02.02 |
ARP(Address Resolution Protocol) (0) | 2015.02.02 |
IPv4 (0) | 2015.02.02 |
ethernet (0) | 2015.02.02 |