컴퓨터공학/컴퓨터망

[컴퓨터망] Internet Control Message Protocol Version4 (ICMPv4)

NIMHO 2022. 7. 2. 13:56
728x90

복습하기 위해 학부 수업 내용을 필기한 내용입니다.
해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.

Introduction

  • IP protocol에는 오류 보고 또는 오류 수정 메커니즘이 없다.
  • 뭔가 잘못되면 어떻게 되나요?
  • 최종 목적지로 가는 router를 찾을 수 없거나 time-to-live 필드에 0 값이 있어서 router가 datagram을 폐기해야 하는 경우 어떻게 됩니까?

Position of ICMP in the network layer
ICMP encapsulation

source에서 packet을 전송하다가 더 이상 진행할 수 없는 오류가 발생하였을 때 source로 돌려보낸다.
IP header에는 source의 주소가 담겨 있으므로 source로 전송할 수 있도록 설정하여 보낸다.
ICMP message에는 error 종류가 들어간다.

 

Messages

  • ICMP message는 Error-reporting messages와 쿼리(query) 메시지라는 두 가지 범주가 있다.
  • Error-reporting messages는 router 또는 host(destination)가 IP packet을 처리할 때 발생할 수 있는 문제를 보고한다.
  • 쿼리 메시지는 host 또는 네트워크 관리자가 router 또는 다른 host에서 특정 정보를 가져오는 데 도움을 준다.
  • 또한 host는 네트워크의 router를 검색, 학습할 수 있고 router는 노드가 메시지를 redirect 하는 데 도움이 될 수 있다.

Error-reporting messages
Destination unreachable : 목적지 도달 X
Source quench : 그만 보내... 힘들어 (에러 X 그냥 알려주는 거다.)
Time exceeded : 중간 라우터가 ~~ (에러 X 그냥 알려주는 거다.)
Parameter problem : 필드 값 해부 중 모르겠음 (에러 X 그냥 알려주는 거다.)
Redirection : 여기 아니야! 다른 router야 (에러 X 그냥 알려주는 거다.)

Query messages
Echo request or reply
Timestamp request or reply : 시간 잴 때

General format of ICMP messages

ICMP Header는 8Byte
ICMP는 항상 원래 source에 오류 메시지를 보고한다.
각각의 message들은 code를 값을 통해 에러가 발생한 경우를 분리하고, 에러가 발생한 패킷은 source로 돌아간다.

Error-reporting messages
Contents of data field for the error message

IP Header 뒤에 TCP, UDP 온다. (보통)
UDP는 앞에 포트번호가 8Byte

ICMP packet은 ICMP header와 data(IP header + bytes) 부분으로 구성된다.
IP datagram에는 datagram으로 받는 데이터의 일부가 들어간다.
packet의 IP header와 TCP header의 8Byte 즉, TCP header의 source port, destination port, sequence number 정보를 가져온다.

IP header에는 발송 주소와 수신 주소가 들어있다.
8Byte(TCP header 일부)에는 port number, sequence number가 들어간다.
sent IP datagram에서 새로 붙는 IP header에는 어디로부터 발송 주소로 보내지는지 정보가 적혀있으므로 어디에서 error가 발생하였는지 알 수 있다.
8Byte(TCP header 일부)에는 sequence number 정보가 있으므로 몇 번째 패킷이었는지 알 수 있다.

 

Destination-unreachable format

code가 2 또는 3인 destination에 연결할 수 없는 메시지는 대상 호스트만 만들 수 있다.
다른 destination에 연결할 수 없는 메시지는 router만 만들 수 있다.

router가 패킷 전송을 방해하는 모든 문제를 탐지할 수는 없다.
(아는 문제들만 탐지)

IP protocol에는 flow-control 또는 congestion-control 메커니즘이 없다.
flow, congestion-control은 TCP가 한다.(당사자이니까)
IP는 있으면 안 된다. (전달자이니까)

 

Source-quench format (그만 보내.. 망 다운될거 같아.)

source-quench message는 router 또는 destination host의 혼잡으로 인해 datagram이 폐기되었음을 source에 알린다.
정체가 해소될 때까지 source는 datagram의 전송 속도를 늦춰야  한다.
한마디로, 망이 다운될 거 같으니까 더 이상 보내지 마라!!

혼잡으로 인해 폐기된 각 datagram에 대해 하나의 source-quench message가 전송된다.
한마디로, 계속해서 보내면 나도 message 계속 보낸다!!

Time-exceeded message format

router는 time-to-live 값을 가진 datagram이 0으로 감소될 때마다 datagram을 폐기하고 원래 source로 time-exceeded message를 보낸다.

최종 destination이 설정된 시간 내에 모든 조각을 수신하지 않을 경우, 수신된 조각을 삭제하고 time-exceeded message를 원본 source로 보낸다.

code 0은 time-to-live 필드의 값이 0 임을 보여주기 위해 router에서만 사용된다.

code 1은 모든 조각이 설정된 시간 내에 도착하지 않았음을 나타내기 위해 destination host에 의해서만 사용된다.

 

Parameter-problem message format

Parameter-problem message는 router 또는 destination host에서 만들 수 있다.

 

Redirection concept

나 R1인데... 나 아니야!! R2한테 보내!!
host는 일반적으로 점진적으로 확장되고 업데이트되는 작은 routing table에서 시작
이를 위한 도구 중 하나는 redirection message

Redirection message format

Redirection message는 router에서 동일한 로컬 네트워크의 호스트로 전송

 

Echo-request and echo-reply message

echo-request message는 host 또는 router에 의해 전송될 수 있다.
echo-request message는 echo-request message를 수신하는 host 또는 router에 의해 전송

echo-request 및 echo-request message는 네트워크 관리자가 IP protocol의 작동을 점검하는 데 사용할 수 있다.

echo-request 및 echo-request message는 host의 도달 가능성을 테스트할 수 있다.
이 작업은 일반적으로 ping 명령을 호출하여 수행된다.

 

Timestamp-request and timestamp-reply message format

시간 잴 때 쓰는데, 잘 안 쓰인다.

timestamp-request 및 timestamp-reply message는 clock이 동기화되지 않은 경우에도 source와 destination 시스템 간의 왕복 시간을 계산하는 데 사용할 수 있다.

정확한 단방향 시간이 알려진 경우 timestamp-request 및 timestamp-reply message를 사용하여 두 컴퓨터의 두 시계를 동기화할 수 있다.

 

Debugging tool

  • 디버깅을 위해 인터넷에서 사용할 수 있는 몇 가지 도구가 있다.
  • host 또는 router가 활성 상태이고 실행 중인지 확인할 수 있다.
  • 우리는 packet의 경로를 추적할 수 있다.
  • 우리는 디버깅에 ICMP를 사용하는 두 가지 도구, 즉 ping과 traceroute를 소개한다.

 

Topics Discussed in the Section

  • Ping
    • 살아 있는지 확인
  • Traceroute
    • 중간 router 확인

 

ICMP Package

  • ICMP가 ICMP 메시지의 송수신을 처리하는 방법에 대한 아이디어를 제공하기 위해,
  • 우리는 입력 모듈과 출력 모듈이라는 두 개의 모듈로 구성된 ICMP 패키지 버전을 제시한다.

ICMP package

728x90