1. ICMP란?

ICMP(Internet Control Message Protocol)는 기술적으로 오류보고 메커니즘(Error Reporting Mechanism)입니다. ICMP는 오류를 감지한 라우터가 최초 근원지에 오류를 보고할 수 있는 방법을 제공합니다. 호스트 서버와 게이트웨이 사이에서 메시지를 제어하고 에러를 알려주는 프로토콜로서 RFC 792에 명시되어 있습니다.

데이터그램이 오류를 유발하면, ICMP는 데이터그램의 최초 근원지에만 오류 상태임을 보고할 수 있습니다. 중계 라우터의 문제를 알려줄 수 없기때문에, 사실상 어떤 라우터가 문제를 일으켰는지 판단할 수 있는 확률이 낮습니다.

그럼 왜 ICMP는 최초 근원지에게만 오류를 보고할까요? 데이터그램에는 출발지와 최종 목적지 주소만 지정할 수 있기 때문입니다. 따라서 지나가는 경로에 대해서는 알 수 있는 길이 없습니다.

Snap3.bmp
2. ICMP 메시지 전달

ICMP 메시지는 두 단계의 캡슐화 과정을 거칩니다.
ICMP 데이터영역 + ICMP 헤더

데이터그램 데이터영역          + 데이터그램 헤더

프레임 데이터영역                                  + 프레임 헤더
ICMP 메시지는 IP를 이용합니다. 즉, OSI Layer 3계층에 해당하는 프로토콜입니다.
IP 데이터그램에 캡슐화도고 IP를 통하여 전송이 됩니다.

ICMP 메시지는 오류 메시지를 전송하지만, 메시지 자체의 오류에 대한 ICMP 메시지는 생성되지 않습니다.


3. 메시지 포맷

ICMP는 세가지의 필드로 이루어져 있습니다.

"TYPE"필드 - 8비트이며, 메시지를 식별하는 일을 합니다.
"CODE"필드 - 8비트이며, 메시지 타입에 대한 추가적인 정보를 제공합니다.
"CHECKSUM"필드 - 16비트이며, 체크섬을 제공합니다.

오류를 보고하기 위한 ICMP 메시지는 헤더에 추가적으로 문제를 발생시킨 데이터그램의 옥텟을 포함합니다.
오류 발생시 어떤 애플리케이션이 문제를 일으킨 것인지 정확하게 알기 하기 위해서, 문제를 유발시킨 데이터그램의 부분을 직접적으로 되돌려 주는 것입니다.

* 참고 : ICMP TYPE 별 메시지 종류

 TYPE 필드

 ICMP 메시지 종류

 0

에코 응답(echo reply) 

 3

목적지 도달 불가능(destination unreachable) 

 4

 근원지 억제

(source quench)

 5

경로 변경(redirect) 

 6

 대체 호스트 주소

(alternate host address)

 8

 에코 요청(echo request)

 9

 RA(router advertisement)

 10

 RS(router soliciation)

 11

 데이터그램에 대한 시간 초과

(time exceeded for a datagram)

 12

 데이터그램의 파라미터 문제

(parameter problem on a datagram)

 13

 타임스탬프 요청(timestamp request)

 14

 타임스탬프 응답(timestamp reply)

 15

 정보 요청(information request)

 16

 정보 응답(information reply)

 17

 주소 마스크 요청

(address mast request)

 18

 주소 마스크 응답

(address mask reply)

 30

 Traceroute



4. PING

ping은 사용자가 ICMP echo request를 보낼 수 있도록 하는 명령어입니다. 이것은 네트워크 문제를 식별하기 위하여 사용을 하는데, 호스트가 ICMP echo request 메시지를 목적지로 전송합니다. 그리고나면 echo request 메시지를 받은 대상은 echo reply 메시지를 전송받은 쪽으로 되돌려 주어야 합니다. 이렇게 echo request와 echo reply 메시지를 주고 받음으로 인해서 호스트는 목적지에 도달 가능한 지, 응답을 하는지 검사하기 위해 사용됩니다.

따라서 이 성공적인 응답을 통해서 시스템의 주요 부분들이 제대로 동작하는지 확인할 수 있습니다.

이렇게 정상적인 응답이 가능하기 위한 다음과 같은 조건들이 있습니다.
1. 호스트 컴퓨터의 IP 소프트웨어는 데이터그램을 포워딩할 수 있어야 합니다.
2. 호스트와 목적지 간의 중계 라우터가 동작 중이고, 데이터그램을 정확히 전달해야 합니다.
3. 목적지 컴퓨터는 동작중이어야 하고 ICMP와 IP 소프트웨어가 동작해야 합니다.
4. 응답이 되돌아오는 경로에 놓인 모든 라우터들의 라우팅 테이블 정보가 전달 가능한 경로를 구성해야 합니다.


* 참고 : ICMP destination unreachable 메시지

 Code 값

의 미 

 0

네트워크 도달 불가능 

 1

 호스트 도달 불가능

 2

 프로토콜 도달 불가능

 3

 포트 도달 불가능

 4

 단편화가 필요하지만 DF 비트가 설정됨

 5

 소스 라우팅 실패

 6

 목적지 네트워크를 알 수 없음

 7

 목적지 호스트를 알 수 없음

 8

 근원지 호스트가 격리됨

 9

 관리상의 이유로 목적지 네트워크와의 통신이 금지됨

 10

 관리상의 이유로 목적지 호스트와의 통신이 금지됨

 11

 TOS에 대한 네트워크 도달 불가능

 12

 TOS에 대한 호스트 도달 불가능

 13

 관리상의 이유로 통신 필터에 의해 금지됨

 14

 호스트 우선순위 위반

 15

 사실상 우선순위 미달


'Programming > 이것저것' 카테고리의 다른 글

펜티엄부터 린필드 i5까지, 인텔 어떻게 걸어왔나  (0) 2010.03.18
MTU  (0) 2010.03.18
TCP/IP PPT 에서 뜯어왔음ㅋ  (0) 2010.03.18
OSI 7Layer  (0) 2010.03.18
광역 변수  (0) 2010.03.18

+ Recent posts