답변:
전송되는 패킷 유형은 구현에 따라 다릅니다. 기본적으로 Windows tracert
는 ICMP를 사용하고 Mac OS X 및 Linux traceroute
는 모두 UDP를 사용합니다. 확인할 BSD 또는 Solaris 시스템이나 다른 OS가 없지만 Mac OS X 버전의 매뉴얼 페이지에는 BSD 4.3이라는 출처가 언급되어 있습니다.
Mac 및 Linux 버전은 ICMP, TCP, UDP 및 GRE 패킷을 포함한 다양한 프로토콜을 선택할 수있는 기능을 제공합니다. 다른 프로토콜은 이름이나 번호로 지정할 수 있지만 traceroute는 다른 프로토콜의 작동 방식에 대해 아무것도 모릅니다. 그것은 단지 맹목적으로 그들을 보냅니다.
또한 방화벽을 피하거나 경로를 따라 특정 크기의 패킷을 삭제하는 라우터를 발견하기 위해 페이로드와 소스 및 대상 포트를 모두 변경할 수 있습니다.
모든 버전의 traceroute 는 경로를 따라 각 홉의 ICMP 유형 11 (시간 초과) 응답 에 의존 합니다. 방화벽에서 ICMP 유형 11 응답을 차단하면 traceroute가 작동하지 않습니다. 이 패킷은 아웃 바운드가 아닌 인바운드입니다.
ICMP 유형 30 은 특별히 경로 추적 용으로 지정되었으며 "정보 요청"으로 표시되어 있습니다. 이것이 실제로 사용되는 곳을 찾을 수 없었습니다. Mac OS X 및 Linux 버전의 매뉴얼 페이지에는 ICMP 유형 8 (에코 요청)을 -I
전송 한다고 나와 있습니다. Wikipedia에 따르면 Windows 는 ICMP 에코 요청도 사용합니다. ICMP 유형 30 또는 유형 8은 인바운드가 아닌 아웃 바운드 패킷입니다.tracert
TTL이 정확히 홉 수와 같으면 ICMP 유형 0 (에코 응답)이 마지막 패킷으로 다시 나타날 수 있습니다. Traceroute는이 중 하나를 받으면 완료되었음을 알 수 있습니다. 이것은 인바운드 패킷입니다.
TCP SYN 패킷은 목적지에 도달 할 때 응답 하여 RST
패킷 또는 패킷을 발생 SYN ACK
시킵니다. SYN ACK
패킷 을 받으면 RST
서버에서 반 열린 연결을 유지하지 않도록 패킷 을 추적하는 것이 예의 입니다.
"조각화 안 함"플래그가 설정된 큰 패킷을 보내면 ICMP 유형 11 응답 대신 ICMP 유형 3 코드 4 응답을 다시 가져올 수 있지만 MTU가 가장 작은 홉만 찾을 수 있습니다. . 일반적으로 경로를 따라 한 번의 홉에서만 이러한 종류의 응답을 얻습니다. 그들 모두는 아닙니다.