관리 메뉴

지식잡식

Internet Control Message Protocol (ICMP) 본문

IT 이론/네트워크&무선통신

Internet Control Message Protocol (ICMP)

아이들링 2014.04.25 18:23

ICMP는 간단히 말해 IP의 부족함을 어느정도 매꿔 주는 프로토콜이라 할 수 있다.


IP의 문제점

1. 신뢰성이 없는 비연결형 데이터그램 방식 (Best Effort)

2. 오류제어 메커니즘의 부재. 오로지 폐기만 할 뿐 다른 대응을 하지 않는다.

 - 목적지를 찾지 못하면 폐기

 - 타임아웃(TTL==0)이 될 경우 폐기

 - 재조합 타이머가 만료되면 모든 fragment 폐기

3. 라우터나 다른 호스트의 상태정보 수집 불가


ICMP의 기능

1. 오류보고 : IP가 데이터그램을 폐기할 경우 최초 발신지에게 통보 (수정은 안함)

2. 질의 : 라우터나 다른 호스트로부터 간단한 상태 정보 획득


ICMP Message Format


 Type (8bit)

 메세지 종류

 Code (8bit)

 오류 원인 코드

 Checksum (16bit)

 자기 자신에 대한 오류 검출 Checksum

 Rest of the header

 Data section


Capsulation of ICMP Message

ICMP는 일반적으로 오류를 보고하기 위한 메시지이므로 어디서 어디로 가는 패킷에서 오류가 났는지 식별이 필요하다. 그런 정보를 새로 전달받아 구성하는 것이 아니라 폐기되는 데이터그램을 그대로 이용한다. 그 데이터그램의 head부분만 잘라서 사용하면 딱 필요한 정보만 발췌 할 수 있는것이다.


기존 IP데이터

 IP header

 IP data


앞부분만 발췌

 IP header

 8 bytes

 rest of IP data

* IP data의 앞 8byte는 TCP의 포트넘버가 들어가 있는 부분이므로 이까지 같이 발췌하고 나머지는 버린다.


이게 ICMP 의 데이터 파트가 된다.

 IP header

 8 bytes


여기 ICMP의 헤더를 붙이면 완성된 ICMP 패킷이다.

 ICMP header

 IP header  ICMP Data

 8 bytes



Message Type

ICMP Error Report Message


 메세지 이름 

 주요목적

 Type

 Destination unreachable

 목적지 도달 불가

 3

 Source quench

 혼잡으로 인한 데이터그램 폐기

 4

 Time exceeded

 Timeout 또는 TTL == 0

 11

 Parameter problem

 IP 패킷이나 헤더 오류

 12

 Redirection

 경로 재지정 필요

 5


Destination unreachable message

 코드 필드엔 데이터그램을 전달 할 수 없었던 이유를 명시한다.

 ex) 0 : 하드웨어 고장, 2 : 상위 프로토콜 도달 불가, 4 : 단편화 불가 (Don't fragment)

 

 Type : 3

 Code : 0 to 15

 Checksum

 Unused (All 0)

 IP header and front 8 bytes of datagram data

 

Source Quench Message

IP는 흐름제어 기능이 없기 때문에 발신자 쪽에서 데이터를 너무 빨리 보내면 오버플로우가 발생할 수도 있고, 이럴 경우 데이터그램을 그냥 폐기해 버린다.

ICMP는 이를 발신자에게 통보하여 송신을 억제시킨다.

ICMP의 한계)

 - 어느 발신자가 혼잡을 유발하는지 알 수 없다. 따라서 엉뚱한 발신자가 희생될 수도 있다.

 - 혼잡이 해결된 후 속도를 회복시키는 메커니즘이 없다

Source quench 메세지는 딱 한번만 보내진다.

 => 그 뒤로 데이터그램이 계속 날아오더라도 다시 보내지 않고 그냥 데이터그램을 폐기시켜 버린다.


Time Exceeded Message

두가지 경우가 있다.

 Code = '0' 인 경우, Time to live필드가 0이 되어 데이터그램이 폐기 된 경우이다

 Code = '1' 인 경우, 단편이 지정된 시간내에 도착하지 않아 재조립에 실패한 경우


Parameter Problem Message

 데이터그램의 헤드에 에러가 있거나 부족한 부분이 있을 경우

 Code = '0' 인 경우, 필드 중에 불명료하거나 빠진 것이 있는 경우이다.

 Code = '1' 인 경우, 옵션의 요구사항이 빠져 있는 경우이다.

  => 아래 Pointer 필드에 문제가 있는 바이트의 위치가 들어간다.


 Type : 12

 Code : 0 or 1

 Checksum

 Pointer

 Unused (All 0)

 IP header and front 8 bytes of datagram data 


Redirection Message

 라우터가 봤을때 자신이 아닌 다른 라우터를 경유 하는게 최종 목적지로 가는데 유리 할 경우 올바른 경로를 알려 준다.

 ICMP가 전달하는 메세지 중 특별한 경우이다. IP 데이터그램을 폐기시키지 않고 그냥 메세지만 전달한다.

 

 Type : 5

 Code : 0 to 3

 Checksum

 IP address of the target router

 IP header and front 8 bytes of datagram data

 


ICMP Query Message

 Type

 메세지 이름

 주요목적

 8 / 0

 Echo request / reply

 IP 프로토콜 점검, 호스트의 도달 가능성 검사

 13 / 14

 Timestamp request / reply

 두 호스트간 IP 데이터그램의 왕복시간 측정 

 17 / 18

 Address mask request / reply

 네트워크 마스크를 모를 경우 라우터에 신청 (거의 안씀)

 10 / 9

 Router solicitation / advertise

 라우터 주소와 동작 상태 체크


Echo Request / Reply

 Type : 8 / 0

 Code : 0

 Checksum

 Identifier

 어떤 Request 인지

 어떤 Request 에 대한 reply 인지

 Sequence number

 몇 번째 Request 인지

 몇 번째 Request 에 대한 reply 인지

 Optional data

 메시지를 포함시켜 보낼 경우 똑같은 메세지가 돌아오게 된다.


Address Mask Request / Reply

디스크가 없는 호스트가 구동될 때 사용되는 것으로, 현재는 거의 안쓰인다


Timestamp Request / Reply

 Type : 13 / 14

 Code : 0

 Checksum

 Identifier

 어떤 Request 인지

 어떤 Request 에 대한 reply 인지

 Sequence number

 몇 번째 Request 인지

 몇 번째 Request 에 대한 reply 인지

 Original timestamp (보내는 시간)

 Receive timestamp (응답 메시지에만 기록된다. 발신 메시지에선 그냥 여백)

 Transmit timestamp (응답 메시지에만 기록된다. 발신 메시지에선 그냥 여백)




'IT 이론 > 네트워크&무선통신' 카테고리의 다른 글

User Datagram Protocol (UDP)  (0) 2014.05.01
ICMP Structure  (0) 2014.04.25
Internet Control Message Protocol (ICMP)  (0) 2014.04.25
Address Resolution Protocol (ARP)  (0) 2014.04.24
IP Protocol Structure  (0) 2014.04.24
IP header options  (0) 2014.04.23
0 Comments
댓글쓰기 폼