ICMP?
: Internet Control Message Protocol
[ IP 프로토콜의 문제점 ]
- 신뢰성이 없고 비연결형 데이터그램 전달 제공
- 최선의 노력 전달 서비스
- 오류 제어와 지원 메커니즘이 없음
- 오류 보고 및 오류 수정 기능이 없음
- 호스트와 관리 질의를 위한 메커니즘이 없음
- 호스트는 간혹 라우터나 다른 호스트가 동작하고 있는지 알 필요가 있다.
- 네트워크 관리자는 다른 호스트나 라우터로부터 정보를 획득할 필요가 있다.
==> 이러한 문제점을 보완하기 위해 ICMP가 설계됨.
ICMP는 네트워크층 프로토콜이지만, 이 프로토콜의 메시지는 직접 데이터 링크 층으로 전달되지 않음.
대신, 메시지는 데이터 링크층으로 가기 전에 전달을 위해 IP 데이터그램 내에 캡슐화됨.
[ ICMP 메시지 유형 - 오류 보고 / 질의 ]
*** ICMP는 2가지 유형 메시지로 나눔 ***
{ 오류 보고(error-reporting) 메시지 }
- 라우터나 목적지 호스트가 IP 패킷을 처리하는 도중 발견하는 문제 보고
{ 질의(query) 메시지 }
- 호스트나 네트워크 관리자가 라우터나 다른 호스트로부터 특정 정보 획득 시 사용
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바이트는 (TCP와 UDP의) 포트 번호와 (TCP)의 순서 번호(sequence number)에 대한 정보를 제공
- 이 정보는 발신지가 TCP나 UDP와 같은 프로토콜에 오류 상황에 대해 알리기 위해 필요
[ 오류 메시지를 위한 데이터 필드의 내용 ]
- 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 : 특정한 서비스 유형에 기초한 호스트 지정 경로를 위한 재지정
'[네트워크] 컴퓨터 네트워크' 카테고리의 다른 글
[Network] 전송층 개요_2 (0) | 2022.04.19 |
---|---|
[Network] 전송층 개요 (0) | 2022.04.18 |
[Network] 인터넷 제어 메시지 프로토콜(ICMP)_2 (2) | 2022.03.28 |
[Network] 인터넷 프로토콜(IP)_2 (0) | 2022.03.26 |
[Network] 인터넷 프로토콜(IP) (0) | 2022.03.11 |