In Computer/컴퓨터네트워크

[컴퓨터네트워크] ICMPv4

팽이리 2023. 4. 13. 20:51

ICMPv4 | Internet Control Message Protocol Version 4

  • IPv4의 오류 보고 및 오류 수정 메커니즘이 없기 때문에 ICMPv4가 설계 되었다.
  • 또한 IP 프로토콜은 호스트 및 관리 쿼리 메커니즘도 없다.

이 두가지 결함을 보완하기 위해 ICMPv4가 설계되었다.

즉, 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송 받는 데 주로 쓰인다.

 

Messages | ICMP의 메시지

ICMP 메시지는 오류 보고 메시지와 쿼리 메시지로 나뉜다.

오류 보고 메시지는 라우터 또는 호스트(목적지)가 IP패킷을 처리할 때 발생할 수 있는 문제를 보고한다.

쿼리 메시지쌍으로 발생하며 호스트 또는 네트워크 관리자가 라우터 또는 다른 호스트에서 특정 정보를 얻을 수 있도록 돕는다.

예를 들어) 노드는 이웃을 발견할 수 있다. 또한 호스트는 네트워크 상의 라우터를 발견하고 배울 수 있으며, 라우터는 노드가 메시지를 다시 보낼 수 있도록 도와줄 수 있다.

 

ICMP 프로토콜의 구조

Type, Code, Checksum, Rest of the header 필드로 구성 되어 있다.

Rest of the header는 Type에 따라 여러 내용이 쓰여지는 필드이다.

  • 필요에 따라서 일부 혹은 전체가 사용 될 수 있다.

08 And 00 : 08이 요청을 하고, 00이 응답을 한다.

03 : 목적지에 도달할 수 없습니다. | 경로상 문제

11 : 요청시간이 만료되었습니다. | 상대방 문제

  • 오류 보고/질의에 따라 들어가는 내용이 달라진다.
  • 오류 보고 메시지일 경우, Data Section에는 폐기된 패킷의 IP-Header와 메시지의 초반 8byte 값이 첨부된다.
  • Source는 Data Section의 내용을 보고 자신에게 발생한 문제를 진단할 수 있다.

*Data Section = Payload

 

Error Reporting Messages | 오류 보고 메시지

목적지 도착 불가능 | Destination Unreachable (03)

라우터가 데이터그램을 라우팅 할 수 없거나 호스트가 데이터그램을 전달할 수 없을 때, 데이터그램을 폐기한 후에 대상 도달 불가능 메시지를 송신자에게 다시 보낸다.

Source Quench | 출발지 억제 메시지 (04) ≒ Choke

흐름 제어의 부족 해결한다.

라우터나 목적지 호스트에 혼잡 상황이 발생하면 데이터그램을 송신한 출발지 호스트에게 출발지 억제 메시지 Source-Quench 메시지를 전송다.

  • 데이터그램이 폐기 되었음을 송신자에게 알림
  • 경로 어딘가에서 송신자 정체를 경고함
  • *출발지 억제 메시지를 수신한 출발지 호스트는 출발지 억제 메시지 Source-Quench가 수신되지 않을 때까지 데이터그램 전송 속도를 늦춘다.

Time exceeded | 시간 만료 (11)

IP 데이터그램의 TTL(Time-to-live) 값이 0이 될 때 라우터는 데이터그램을 폐기하고 해당 데이터그램을 송신한 호스트에게 시간 초과(만료) 메시지를 전송한다.

Parameter problem | 매개 변수 문제 (12)

IP 데이터그램의 헤더 정보의 문제로 인해 데이터그램을 처리할 수 없는 경우 출발지 호스트에게 데이터 그램 헤더의 어떤 매개변수에 문제가 있는지 통보한다.

Redurect | 방향 재지정 메시지 (05)

호스트의 데이터그램을 수신한 라우터가 더 좋은 경로를 알고 있으면 ICMP 방향 재지정 메시지 전송한다.

다른 라우터로 데이터그램 전송을 유도한다.

 

Query Messages | 질의 메시지

Echo request and reply | 에코 요청 또는 응답 : 핑(Ping) 프로그램 (08 and 00)

진단을 목적으로 사용

두 시스템이 IP수준에서 서로 통신할 수 있는지 여부를 결정한다.

에코 요청 메시지의 식별자와 순서 번호는 에코 응답 메시지에 동일하게 복사한다.

Ex.) ping 클라이언트 프로그램은 현재 시간 정보가 포함, ping 서버는 이 정보를 에코 응답 메시지의 데이터 필드에 동일하게 복사하여 다시 ping 클라이언트에게 전달한다.

Timestamp request and reply | 타임스탬프 요청 및 응답 (13 and 14)

왕복 시간을 결정한다.

두 시스템의 시계 동기화(오차 계산)

Address-mask request and reply | 주소 마스크 요청 및 회신 (17 and 18)

호스트의 서브넷 마스크를 식별하는 데 사용되는 메시지이다.

Ex.) 호스트가 IP주소 192;168.1.25를 알고 있지만 해당 호스트의 마스크를 모르는 경우 LAN 네트워크의 라우터에게 주소 마스크 요청 메시지를 보내서 호스트의 마스크를 알아내게 됩니다.

Router solicitation and advertisement | 라우터 요청 및 광고 (10 and 9)

라우터가 활성화 되고 작동하는지 요청한다.

*호스트가 같은 네트워크의 라우터에 관한 정보를 얻기 위해 라우터 요청 메시지 방송

*라우터 요청 메시지를 받은 라우터는 라우터 광고 메시지를 사용하여 자신의 주소 정보를 전송한다.