일부 일반적인 추적 경로 구현이 기본적으로 UDP 프로브를 사용하는 이유는 무엇입니까?


18

특정 대상에 도달 할 수 있다는 것을 알았 기 때문에 최근 네트워크 연결 메타 문제를 해결하고 있었지만 traceroute특정 홉 횟수 후에 경로가 차가워서 이를 입증 할 수 없었습니다 . 마지막으로 관찰 된 홉이 관심있는 노드에서 상류에 있다는 점을 감안할 때, 트래픽이 스니핑되어 프로브가 도달하고 있음을 확인하고 어떤 필터 규칙이이를 차단하는지 알기를 기대했습니다. 물론, 프로브는 물론 인바운드 트래픽으로 차단 된 높고 다양한 포트로 향하는 UDP 데이터 그램이라는 것을 알았습니다.

traceroute응답이 ICMP 이기 때문에 모든 프로브가 ICMP로 기본 설정되어 있다고 가정했기 때문에 놀랍습니다 . 나는 문서 설문 조사를했고 다른 구현은 다른 선택을하고 일부는 사용자가 기본이 아닌 선택을 할 수 없다는 것을 알았습니다.

의 추상 경로 추적 프로브 방법과 앞으로 IP 경로 추론은 ICMP 프로브가 더 자주 목적지에 도달에 성공 나의 직관을 지원합니다.

다른 프로브 방법을 허용하는 것은 좋은 생각처럼 보이지만 ICMP 이외의 것으로 기본 설정하는 것은 나쁜 생각처럼 보입니다. 누군가 기본적으로 UDP를 사용하는 것이 왜 더 나은지에 대한 이론적 근거를 설명 할 수 있습니까?

답변:


20

첫 번째 버전은 tracerouteVan Jacobson이 작성했으며 ICMP를 사용했지만 제대로 작동하지 않았습니다. RFC792에서 ICMP의 공급 업체 해석은 라우터가 ICMP 패킷에 대한 응답으로 ICMP 오류 메시지를 보내서는 안된다는 것입니다 (아래 편집 참고 사항 참조). 따라서 대부분의 라우터는 TTL이 1 또는 0 인 에코 요청에 대한 응답으로 "시간 초과"메시지를 보내지 않습니다. 따라서 UDP와 lo를 사용하도록 변경했으며 훌륭하게 작동하고 크게 기뻐했습니다 (및 채택). tracerouteLinux 및 FreeBSD (및 Cisco 가정) 의 도구는 Van Jacobson의 작업을 기반으로합니다.

사양은 나중에 "ICMP 오류 패킷 에 대한 응답으로"변경되었습니다 . 전 세계가 발전하면서 공급 업체는 에코 요청에 대한 응답으로 ICMP 오류 메시지를 허용하는 스택을 변경했으며 방화벽과 ACL이 증가함에 따라 스트레이 UDP 패킷이 차단되는 경우도 있지만 ICMP 에코 요청은 통과 할 수있었습니다. 물론 오늘의 성공은 크게 다릅니다. tracertICMP 에코 응답을 사용하는 것이 그리 문제가되지 않았을 때 및 기타 도구가 작성된 것으로 예상 됩니다.

요즘에는 UDP가 ICMP보다 낫다고 말할 수는 없습니다. 또는 그 중 하나가 TCP보다 낫습니다. 통과하는 경로와 보안 정책에 따라 달라집니다. 세 가지 구현 중 하나, 둘 다 또는 모두를 시도해야 할 수도 있습니다.

출처 :

http://ftp.arl.army.mil/~mike/ping.html http://www.inetdaemon.com/tutorials/troubleshooting/tools/traceroute/definition.shtml

편집 :

RFC가 IP (RFC791)에서 ICMP (RFC792)로 변경되었습니다.

메시지 등에 대한 메시지의 무한 회귀를 피하기 위해 ICMP 메시지에 대한 ICMP 메시지가 전송되지 않습니다.

벤더가 에코 요청에 대해 "Time Exceeded"오류를 보내지 않은 비트입니다.

RFC1122, 인터넷 호스트 요구 사항, 섹션 3.2.2. 호스트가 ICMP 오류 메시지에 응답하지 않아야한다는 업데이트입니다 .


참고로 귀하는 저에게 이메일로 보내 주신 질문에 대한 의견을 남기기에 충분한 명성을 얻었습니다.
Mike Pennington

잘 했어. 나는 "Ping! Ping! Ping!"이라고 소리 치는 컴퓨터에 관한 첫 번째 링크의 이야기를 특히 좋아했습니다. 폐의 상단에.
neirbowj 2016 년

Mike, 예,이 사이트의 작동 방식을
익히기
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.