요청 메시지인 경우 Type = 8

응답 메시지인 경우 Type = 0

 

 

ICMP 메시지 구성

ping 요청 패킷과 응답 패킷의 시간을 보고 패킷 전송에 소요된 시간을 출력한다.

40번째 줄에서 identifier에 들어갈 ID를 생성하고 있다.

 

 

58번째 줄에서 시그널 알람을 설정

65번째 줄에서 sig_alrm() 실행

sig_alrm() 함수

메시지 센드

121-127 ICMP 패킷 구성 

127 - gettimeofday() 현재 시각을 icmp_date에 할당하고 있다.

 

133에서 원격지로 sendto()로 보내고 있다.

 

107에서 1초마다 시각을 실어서 ICMP 메시지를 계속 보내고 있다.

다시 핑 프로그램으로 돌아와서 

69 - recvfrom()으로 메시지를 받는다.

77 - IP 헤더의 프로토콜 타입이 ICMP인지 확인한다.

80 - 자신이 보낸 메시지인지 확인한다. 

84 - 에코 응답인지 확인한다.

85 - identifier가 내가 보낸 것과 같은지 확인한다.

 

88 - 현재의 시각

89 - ICMP에 들어있는 시각

90 - 88번과 89번에서 잰 시각의 차이를 계산해서 94번에서 출력한다.

 

+ Recent posts