[네트워크] 컴퓨터 네트워크

[Network] 인터넷 제어 메시지 프로토콜(ICMP)

ITsubin 2022. 3. 27. 11:21

ICMP?

 : Internet Control Message Protocol

 

[ IP 프로토콜의 문제점 ]

- 신뢰성이 없고 비연결형 데이터그램 전달 제공

- 최선의 노력 전달 서비스

- 오류 제어와 지원 메커니즘이 없음

- 오류 보고 및 오류 수정 기능이 없음

- 호스트와 관리 질의를 위한 메커니즘이 없음

- 호스트는 간혹 라우터나 다른 호스트가 동작하고 있는지 알 필요가 있다.

- 네트워크 관리자는 다른 호스트나 라우터로부터 정보를 획득할 필요가 있다.

==> 이러한 문제점을 보완하기 위해 ICMP가 설계됨.

 

ICMP는 네트워크층 프로토콜이지만, 이 프로토콜의 메시지는 직접 데이터 링크 층으로 전달되지 않음.

대신, 메시지는 데이터 링크층으로 가기 전에 전달을 위해 IP 데이터그램 내에 캡슐화됨.

네트워크층에서 ICMP의 위치
ICMP 캡슐화

 

[ ICMP 메시지 유형 - 오류 보고 / 질의 ]

*** ICMP2가지 유형 메시지로 나눔 ***

 

{ 오류 보고(error-reporting) 메시지 }

- 라우터나 목적지 호스트가 IP 패킷을 처리하는 도중 발견하는 문제 보고

 

{ 질의(query) 메시지 }

- 호스트나 네트워크 관리자가 라우터나 다른 호스트로부터 특정 정보 획득 시 사용

 

ICMP 메시지의 일반적인 형식은 아래 그림과 같다.

ICMP 메시지의 일반 형식

 

- 8바이트의 헤더와 가변 길이의 데이터 부분을 가지고 있음

- 헤더의 일반 형식은 각 메시지 별로 다르지만 처음 4바이트는 전부 공통

- [ Type ]필드는 '메시지의 유형'을 나타냄.

- [ Code ]필드는 특정 메시지 유형의 '이유'를 지정함.

- [ Checksum ]필드는 IP의 에러 검출용으로 사용함.

 

[ 오류 보고 메시지 ]

ICMP의 주 임무는 오류를 보고하는 것.

IP는 신뢰성이 없는 프로토콜이므로 단점을 보완하기 위하여 설계됨.

 

- 오류를 수정이 아니라 보고만 함

- 오류 수정은 상위 계층 프로토콜에 맡김

- 오류 메시지는 언제나 최초의 발신지로 전송

- 데이터그램으로부터 알 수 있는 경로에 대한 정보는 발신지와 목적지뿐이기 때문.

- 발신지 IP 주소를 사용하여 오류 메시지를 데이터그램의 발신지로 전송

- 오류 보고 메시지는 총 5

 

오류 보고 메시지 (하단의 그림 참고)

[ Destination unreachable : 목적지 도달 불가능 ]

[ Source quench : 발신지 억제 ]

[ Time exceeded : 시간 초과 ]

[ Parameter problems : 파라미터(매개변수) 문제 ]

[ Redirection : 재지정 ]

 

[ ICMP 오류 메시지에 대한 중요한 사항 ]

- ICMP 오류 메시지를 전달하는 데이터그램에 대해서는 ICMP 오류 메시지가 생성되지 않음

 

- 처음 단편이 아닌 단편화된 데이터그램에 대해서는 ICMP 오류 메시지가 생성되지 않는다.

 

- 멀티캐스트 주소를 가진 데이터그램에 대해서는 ICMP 오류 메시지가 생성되지 않는다.

 

- 127.0.0.0이나 0.0.0.0과 같은 특별한 주소를 가진 데이터그램에 대해서는 오류 메시지가 생성되지 않는다.

 

- 모든 오류 메시지의 데이터부분에는 데이터그램의 IP 헤더와 데이터그램의 데이터 중 처음 8바이트가 포함되어 있음.((오류 메시지를 전달할 때 모든 데이터를 보내는 게 아니라, 데이터의 가장 앞 8바이트만 붙여서 보내는 것.))

 

- 원래의 데이터그램 헤더는 오류 메시지를 받는 원 발신지에게 데이터그램 자체에 대한 정보를 제공하기 위해 더해짐

 

- IP 데이터부분의 처음 8바이트는 (TCPUDP) 포트 번호와 (TCP)의 순서 번호(sequence number)에 대한 정보를 제공

 

- 이 정보는 발신지가 TCPUDP와 같은 프로토콜에 오류 상황에 대해 알리기 위해 필요

 

[ 오류 메시지를 위한 데이터 필드의 내용 ]

- ICMP는 오류 패킷을 생성하고, 이것은 IP 데이터그램 내에 캡슐화됨.

오류 메시지를 위한 데이터 필드의 내용

 

[ 1. 오류 보고 메시지 - 목적지 도달 불가능(Destination Unreachable) ]

- 라우터가 데이터그램을 라우팅 할 수 없거나 호스트에 데이터그램을 배달할 수 없을 때 데이터그램은 폐기되고, 발신지 호스트에 목적지 도달 불가 메시지 전달.

- 코드 필드는 데이터그램을 폐기하는 사유(이유)를 나타냄.

- 코드 0 ~ 코드 15까지 총 16개의 사유가 존재함.

- 목적지 도달 불가 메시지는 라우터나 목적지 호스트에 의해 생성될 수 있음.

- 목적지 도달 불가능의 Type : 3

목적지 도달 불가능 메시지 형식

 

[ 2. 오류 보고 메시지 - 발신지 억제(Source Quench) ]

- 혼잡으로 인하여 데이터그램 폐기를 발신지에 알림

- 발신지는 혼잡이 완화될 때까지 데이터그램의 송신 속도를 조절

- 혼잡으로 폐기되는 데이터그램마다 발신지 억제 메시지가 전송됨

- 발신지 억제의 Type : 4

- 발신지 억제의 Code : 0 (별도의 코드가 없음.)

시간 경과 메시지 형식

 

[ 3. 오류 보고 메시지 - 시간 경과(시간 초과; Time Exceeded) ]

- 라우터는 TTL 값이 0인 데이터그램을 받을 때마다 데이터그램을 폐기하고 원래의 발신지에게 시간-경과 메시지를 전송

- 목적지가 정해진 시간 내에 모든 단편을 받지 못했으면 이미 수신된 단편은 폐기하고 원래의 발신지로 시간 경과 메시지를 전송

- code 0 : TTL 값이 0인 데이터그램을 표기

- code 1 : 단편이 지정된 시간 내도착하지 않았음.

시간 경과 메시지 형식

 

[ 4. 오류 보고 메시지 - 매개변수 문제(Parameter Problem) ]

- 데이터그램의 필드에서 불명확하거나 빠진 값을 발견하게 되면 발생

- 매개변수 문제 메시지는 라우터나 목적지 호스트에 의해 생성

- code 0 : 필드에 불명료하거나 빠진 것이 있음

- code 1 : 옵션의 요구 부분이 빠졌음

매개변수 문제 메시지 형식

 

[ 5. 오류 보고 메시지 - 재지정(Redirection) ]

- 데이터그램을 잘못된 랑터로 보낼 때 라우팅 테이블을 갱신하기 위한 방법

- 재지정은 라우터로부터 같은 네트워크에 있는 호스트로 전달

- 호스트는 작은 라우팅 테이블에 시작하지만 점차 증가되거나 갱신된다.

- RM : Redirection Message

- 재지정의 Type : 5

- Code 0 : 네트워크 지정 경로를 위한 재지정

- Code 1 : 호스트 지정 경로를 위한 재지정

- Code 2 : 특정한 서비스 유형에 기초한 네트워크 지정 경로를 위한 재지정

- Code 3 : 특정한 서비스 유형에 기초한 호스트 지정 경로를 위한 재지정

재지정 메시지 형식