요청 메시지인 경우 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번에서 출력한다.
'네트워크' 카테고리의 다른 글
raw 소켓 #2 (0) | 2020.10.06 |
---|---|
raw 소켓 (0) | 2020.10.04 |
SFP(Small Form-factor Pluggable) Transceiver (0) | 2020.08.30 |
ARP(Address Resolution Protocol - 주소 결정 프로토콜) (0) | 2020.08.29 |
[c언어] 3바이트, 6바이트 데이터 타입 만들기 (0) | 2020.08.16 |