traceroute가 UDP 또는 ICMP 또는 둘 다를 사용합니까? icmp 유형 30이 사용되는 규칙을 발견했으며

노트북에서 www.google.com 도메인을 추적 할 때 icmp 또는 udp를 사용하고 있습니까?
icmp 유형 11이라고 생각했지만 다른 것을 검색하는 동안 icmp 유형 30이 사용되는 규칙을 발견했으며 udp가 사용되는 규칙을 보았습니다.
누군가 그것이 어떻게 작동하는지 설명해 줄 수 있습니까?
가상 전용 서버의 방화벽 (iptables)을 만들고 있습니다.



답변

전송되는 패킷 유형은 구현에 따라 다릅니다. 기본적으로 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가 가장 작은 홉만 찾을 수 있습니다. . 일반적으로 경로를 따라 한 번의 홉에서만 이러한 종류의 응답을 얻습니다. 그들 모두는 아닙니다.


답변

기존의 추적 경로는 모든 홉마다 증분 포트에서 UDP를 사용합니다.

ICMP, TCP SYN 등 모든 종류의 패킷을 사용하여 구현할 수 있습니다. IP 패킷이 만료되고 황금색입니다.

MacOS와 같은 다양한 구현은 방화벽 제한을 우회하기 위해 포트 등을 증가시키지 않는 모드뿐만 아니라 여러 유형의 추적 경로를 지원합니다.