[네트워크] 컴퓨터 네트워크

[Network] 인터넷 제어 메시지 프로토콜(ICMP)_2

ITsubin 2022. 3. 28. 00:11

[ 질의 메시지 ]

- 오류 보고 외에 ICMP는 네트워크 문제를 진단 가능

- 라우터나 목적지에게 질의를 하는 것.

- 5개의 질의 메시지를 통하여 수행 가능

- 이 유형의 ICMP 메시지에서는 노드가 메시지를 보내면 목적지 노드가 특정한 형식에 따라 응답

- 현재는 2개만 사용 (에코 요청과 응답 / 타임스탬프 요청과 응답 메시지)

 

[ 에코 요청과 응답 (ping 명령어) ]

- Echo Request and Reply

- 고장 진단 목적

- 네트워크 관리자와 사용자들은 이 메시지를 사용하여 네트워크 문제를 발견 가능

- 에코 요청과 에코 응답 메시지의 조합은 두 시스템(호스트나 라우터)이 서로 통신할 수 있는지 결정 가능

- 호스트나 라우터는 에코 요청 메시지를 다른 호스트나 라우터에게 전송 가능

- 에코 요청 메시지를 받은 호스트나 라우터는 에코 응답 메시지를 생성하여 원래의 송신자에게 전송.

- 나머지 메시지들은 4바이트만 사용했지만 에코 요청과 응답은 8바이트 모두 사용함.

- 에코 요청과 응답 Type : 8 또는 0

- Code : 0

- Identifier, Sequence number까지 들어있어서 8바이트.

에코 요청과 에코 응답 메시지
 

[ 타임스탬프 요청과 응답 ]

- 두 시스템 간에 IP 데이터그램이 오고 가는데 필요한 왕복 시간(round-trip time) 결정

- 두 장치의 시계를 동기화하기 위해서도 사용될 수 있음

- 그리니치 표준시 사용

- 세계 표준시의 자정으로부터 시간을 ms(1/1000sec, 밀리세컨드) 단위로 표현

- 3개의(original, receive, transmit) 32비트 필드 사용

타임스탬프 요청과 타임스탬프 응답 메시지 형식

 

{ 타임스탬프의 동작 과정 }

- 발신지는 타임스탬프 요청 메시지 생성

- 원래의 타임스탬프(Original timestamp) 필드에 출발 시간 값 삽입

- 나머지 두 필드는 0으로 채워져 있음

- 목적지는 응답 메시지 생성

- 원래의 타임스탬프 값을 같은 필드에 복사

- 요청이 수신된 시점의 시간을 수신 타임스탬프(recive timestamp) 필드에 삽입

- 응답 메시지가 출발하는 시간을 전달 타임스탬프(transmit timestamp) 필드에 삽입

 
{ 타임 스탬프 왕복 시간 계산 }

- 송신 시간 = 수신 타임스탬프 원래의 타임스탬프

- 수신 시간 = 패킷이 돌아온 시간 전달 타임스탬프

- 왕복 시간 = 송신 시간 + 수신 시간

 

[ 검사합 ]

- 헤더와 데이터를 포함한 전체 메시지에 대한 계산

 

{ 검사합 계산 }

- 송신자는 1의 보수 연산을 사용하여 다음의 단계를 수행.

- 검사합 필드를 0으로 만든다.

- 헤더와 데이터에 대해 16비트 단어의 합을 구한다.

- 합의 보수를 취하여 검사합을 구한다

- 검사합을 검사합 필드에 저장한다.

 
{ 검사합 검사 }

- 수신자는 1의 보수 연산을 사용하여 다음의 단계를 수행한다.

- 헤더와 데이터에 대해 16비트 단어의 합을 구한다.

- 합의 보수를 구한다.

- 전 단계의 결과가 16개의 0이면 메시지는 받아들여지고 그렇지 않으면 거절한다.

 

[ 디버깅 도구 ]

- 호스트나 라우터가 정상적으로 작동하고 있는지를 점검

- 패킷이 전달되는 경로를 추적 (ping : 에코 요청과 응답 관련 / traceroute(tracert) : 타임스탬프 관련)