공부한 기록/네트워크 통신

네트워크(10) - 인터넷 제어 메시지 프로토콜 ICMP

YongE 2023. 6. 13. 01:12

이전에 IP 프로토콜에서는 문제점이 있었다.

신뢰성이 없고 비연결형 데이터그램을 전달하고, 최선의 노력만 하며, 오류 보고 및 수정 기능과 오류제어와 해결 매커니즘이 없다. 또한 라우터나 다른 호스트가 동작하고 있는지 알 필요가 있다.

이 모든 문제를 보완하기 위해 설계된 것이 ICMP다.

 

ICMP의 위치, 네트워크층이다.

ICMP의 메세지는 두 가지 유형으로 나뉜다.

  • 오류 보고 메시지 : 라우터나 호스트가 IP패킷을 처리하는 중에 발견되는 문제를 보고한다.
  • 질의 메시지 : 호스트나 네트워크 관리자가 다른 라우터나 호스트로부터 특정 정보를 획득할 때 사용한다.

 

ICMP 메시지 형식

8바이트 헤더와 가변 길이의 데이터 부분을 가지고 있다. 코드 code 필드는 메시지의 유형의 이유를 지정한다. 헤더의 나머지 부분은 각 메시지 별로 다르다. 데이터 부분은 오류와 조회로 나뉜다.

  • 오류 메시지는 오류를 발생시킨 패킷을 찾기 위한 정보 전달이다.
  • 조회 메시지는 조회 유형에 기초한 추가 정보 전달이다.

 

메시지 유형


  • 오류 보고 메시지

주 임무는 오류를 보고하는 것이다. 수정하지 않고 '보고'만 한다. 수정은 상위 계층 프로토콜에 맡긴다.

이 오류메시지는 언제나 최초의 발신지로 전송한다. 

 

중요한 사항을 알아둬야 한다.

1. 오류메시지에 대한 오류 메시지는 생성되지 않는다.

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

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

이는 즉슨, 한 군데에서 데이터를 못받았다고 해서 오류 메세지를 보내지 않는다.

4. 특별한 주소를 가진 경우엔 오류 메시지가 생성되지 않는다.

5. 모든 오류메시지 데이터 부분에는 IP헤더와 데이터그램의 데이터 중 처음 8바이트가 포함되어있다.

 

  • 질의 메시지

네트워크 문제를 진단하는 것이다.

대표적으로 에코요청과 응답이 있다. 이는 고장 진단 목적의 질의이며, 이 메시지를 사용해서 네트워크 문제를 발견 가능하다. 호스트나 라우터는 에코 요청 메시지를 생성해서 다른 호스트나 라우터에게 전송가능하다. 이 요청 메시지를 받은 호스트나 라우터는 응답 메시지를 생성해서 원래 송신자에게 보낸다.

 

두 번째로는 타임스탬프 요청과 응답이 있다.

두 시스템 간에 IP 데이터그램에게 필요한 왕복시간을 결정한다. 두 장치의 시계동기화를 위해서도 사용될 수 있다. 

송신 시간 = 수신 타임스탬프 - 원래 타임스탬프
수신 시간 = 패킷 돌아온 시간 - 전달 타임스탬프
왕복 시간 = 송신 시간 + 수신 시간

시간차 = 수신 타임스탬프 - (원래 타임스탬프 + 편도시간 구간)

 

728x90
반응형