컴퓨터공학/데이터통신

[데이터 통신] ICMPv4

NIMHO 2022. 12. 17. 17:53
728x90

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

Contents

  • Services
  • Packet Switching
  • Performance
  • Internet Protocol Version 4
  • Next Generation (IPV6)
  • Transition from IPV4 To IPV6
 

ICMPv4

IPv4에 오류 보고 또는 오류 수정 메커니즘이 없다.

IP 프로토콜에는 호스트 및 관리 쿼리를 위한 메커니즘도 없다.

ICMPv4(Internet Control Message Protocol version 4)는 위의 두 가지 결함을 보완하도록 설계되었다.

 

Messages

ICMP 메시지는 오류 보고 메시지쿼리 메시지의 두 가지 광범위한 범주로 나뉜다.

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

쌍으로 발생하는 쿼리 메시지는 호스트 또는 네트워크 관리자가 라우터 또는 다른 호스트에서 특정 정보를 가져오는 데 도움이 된다.

예를 들어 노드가 인접 네트워크를 검색할 수 있다.

또한 호스트는 네트워크의 라우터를 검색하고 학습할 수 있다.

라우터는 노드가 메시지를 리디렉션 하는 데 도움이 된다.

 

처음 4바이트는 모두에게 공통이다. (type, code, checksum)

  • type : ICMP 유형(메시지 유형)
  • code : 특정 메시지 유형에 대한 이유 
  • checksum  

나머지 헤더는 각 메시지 유형에 따라 다르다. 

오류 메시지의 데이터 섹션은 오류가 있는 원래 패킷을 찾기 위한 정보를 전달한다.

 

Messages - Error Reporting Messages

IP는 unreliable 프로토콜이기 때문에 ICMP는 일부 오류를 보고한다. 

  • ICMP는 오류를 수정하지 않고 단순히 오류를 보고한다.
  • 오류 수정은 상위 프로토콜에서 한다.  

오류 메시지는 항상 original source로 전송된다. 

  • ICMP는 소스 IP 주소를 사용하여 오류 메시지를 보냅니다. 

오류 보고 프로세스를 단순화하기 위해 ICMP는 몇 가지 규칙을 따른다. 

  • 멀티캐스트나 특수 주소(이 호스트 또는 루프백과 같은)를 가진 datagram에 대한 오류 메시지는 생성되지 않는다.
    • 루프백 주소: 127.0.0.1 
    • 로컬 호스트의 IP 주소: 0.0.0 
  • ICMP 오류 메시지를 전달하는 datagram에 대한 응답으로 ICMP 오류 메시지가 생성되지 않는다. 
    • 오류가 생기면 그냥 끝이다. (버리고 끝)
  • 첫 번째 fragment이 아닌 fragmented datagram에 대해 ICMP 오류 메시지가 생성되지 않는다.

 

모든 오류 메시지에는 다음을 포함하는 데이터 섹션이 포함된다.

  • orginal datagram의 IP header  
    • orginal datagram header는 오류 메시지를 수신하는 original source에 datagram 자체에 대한 정보를 제공하기 위해 추가된다. 
  • 해당 datagram의 처음 8바이트 데이터 
    • 처음 8바이트는 포트 번호(UDP 및 TCP)시퀀스 번호(TCP)에 대한 정보를 제공한다.
    • 소스가 프로토콜(TCP 또는 UDP)에 오류를 알릴 수 있도록 이 정보가 필요하다.

 

Messages - Destination Unreachable

가장 널리 사용되는 오류 메시지는 destination unreachable(type 3) message이다.

오류 메시지 유형과 데이터그램이 최종 목적지에 도달하지 못한 이유를 정의하기 위해 서로 다른 코드(0 ~ 15)를 사용한다.

Ex) code 0 : 호스트에 연결할 수 없음을 소스에 알린다.

728x90

Messages - Query Messages

쿼리 메시지를 데이터그램에 캡슐화해야 한다.

쿼리 메시지(요청 및 응답) 사용

  • 인터넷에서 호스트 또는 라우터의 활성 상태를 검사하거나 테스트하기 위해서
  • 두 장치 간의 단방향 또는 왕복 시간을 찾기 위해서
  • 두 장치의 clock이 동기화되어 있는지 확인하기 위해서

Echo-request(type 8) 및 Echo-reply(type 0)  

  • 다른 호스트/라우터의 활성도를 테스트하기 위해 호스트/라우터에서 사용 
  • pingtraceroute라는 두 가지 디버깅 도구에서 이 쌍의 응용 프로그램

타임스탬프 요청(type 13) 및 타임스탬프 응답(type14) 메시지

  • 두 장치 사이의 round-trip time(RTT)을 찾는 데 사용된다.
  • 두 장치의 클럭이 동기화되었는지 아래와 같이 확인한다.  
    • 타임스탬프 요청 메시지가 32비트 번호를 전송합니다. 이 번호는 1) 메시지가 전송되는 시간을 정의한다. 
    • 타임스탬프 응답 메시지는 해당 번호를 다시 보내지만 2) 요청을 받은 시간과 3) 응답을 보낸 시간을 나타내는 두 개의 새로운 32비트 번호도 포함한다. 
    • 모든 타임스탬프가 세계 표준시를 나타내는 경우, 발신인은 편도 및 왕복 시간을 계산할 수 있다.

Debugging Tools

Debugging Tools

디버깅을 위해 ICMP를 사용하는 두 가지 도구: ping 및 traceroute(tracert)

 

Debugging Tools – Ping

ping 프로그램을 사용하여 호스트가 활성화되어 있고 응답하고 있는지 확인할 수 있다.
소스 호스트가 ICMP 에코 요청 메시지를 보내고, 대상이 활성화된 경우 ICMP 에코 응답 메시지로 응답한다.
ping 프로그램은 echo-request 및 echo-reply 메시지에 식별자 필드를 설정하고 0부터 시퀀스 번호를 시작한다.

이 숫자는 새 메시지가 전송될 때마다 1씩 증가한다.
ping은 RTT를 계산할 수 있다.

 

Debugging Tools – Traceroute or Tracert

UNIX의 Traceroute 또는 Windows의 Tracert(응용 프로그램 계층 프로그램)

원본에서 대상까지의 패킷 경로를 추적하기 위해서

경로를 따라 방문한 모든 라우터의 IP 주소를 찾을 수 있다.

프로그램은 일반적으로 최대 30 홉을 확인하도록 설정된다.

  • 인터넷의 홉 수는 보통 이것보다 적다.

 

Traceroute

traceroute가 두 개의 오류 보고 메시지(time exceeded, destinatio unreachable)로부터 도움을 받는다.

(Ping : 두 개의 쿼리 메시지)

서버 프로그램이 필요하지 않다.

대상 호스트의 애플리케이션 계층에 도달하지 않으므로 클라이언트 프로그램만 필요하다.

traceroute는 UDP 사용자 데이터그램에 캡슐화되어 있지만

traceroute는 대상에서 사용할 수 없는 포트 번호를 의도적으로 사용한다.

경로에 라우터가 n개인 경우 traceroute는 (n + 1) 메시지를 보냅니다.

  • 처음 n개의 메시지는 n개의 라우터에 의해 폐기되며, 각 라우터마다 하나씩 폐기된다.
  • 마지막 메시지가 대상 호스트에 의해 삭제된다.
  • 우리는 n의 값을 알 필요가 없다.

첫 번째 traceroute message

  • TTL이 1로 설정된 상태로 전송된다.
  • 첫 번째 라우터는 이 메시지를 무시하고 IP 주소와 첫 번째 라우터의 이름을 포함한 time-exceeded ICMP 오류 메시지를 보낸다. 
    • IP 주소(오류 메시지의 원본 IP 주소)
    • 라우터 이름(메시지의 데이터 섹션에 있음) 

반복적으로, n번째 traceroute message

  • TTL이 n으로 설정된 상태로 전송된다.
  • n번째 라우터는 이 메시지를 무시하고 IP 주소와 n번째 라우터의 이름을 포함한 time-exceeded ICMP 오류 메시지를 보낸다.

그러나 (n + 1) 번째 메시지는 대상 호스트에 도달한다.

  • 이 호스트도 삭제되지만 다른 이유(UDP 사용자 데이터그램에 지정된 포트 번호를 찾을 수 없음)가 있다. 
  • ICMP가 포트 번호를 찾을 수 없음을 나타내는 코드 3과 함께 destination-unreachable 메시지를 보낸다.
    • 이 다른 ICMP 메시지를 수신한 후, 추적 경로 프로그램은 최종 목적지에 도달했음을 알 수 있다.

 

ICMP Checksum

ICMP에서 체크섬은 전체 메시지(헤더 및 데이터)에 걸쳐 계산된다.

728x90