나는 Scapy를 사용하여 TTL 값을 변경하는 덤프 된 패킷을 재생합니다. 나는 TTL = 1로도 매우 이상한 결과를 얻었습니다.모든 ICMP 시간 초과 메시지가 표시되지 않는 이유는 무엇입니까?
테스트 시간을 서로 다르게하면 ICMP 시간 초과 메시지로 응답 한 패킷의 대략 40 %에서 95 %까지 얻을 수 있습니다. 그러면 답이없는 패킷을 재귀 적으로 재생하고 매번 응답 패킷의 비율을 이전과 같거나 더 늘릴 수 있습니다.
왜 그럴까요?
나는 서로 0.1 초 간격으로 패킷을 보냈습니다. 괜찮을거야. 그렇지? 시간 초과 값은 10 초이며 매우 보수적이어야합니다.
여기에 무슨 문제가 있습니까?
ICMP 속도 제한도 역시 추측 이었지만, 오늘은 패킷 간 간격을 5 초로 다시 보내려고했습니다. 그리고 적어도 6 ~ 7 개의 패킷에 대해 회신을받지 못했습니다. 내 50 (작은 테스트). Scapy에서'sr' 함수를 사용하고 있습니다. 그래서 한 번에 하나의 패킷을 전달한 다음 1 초 동안 일시 중지한다고 생각했습니다. 자, 이번에는 * 모든 단일 패킷이 응답하게됩니다. 나는'sr'의 구현에 문제가 있다고 생각합니다. –
나는'scapy'와 비슷한 이슈를 보았습니다. 트래픽을 보내고 받기 위해 개가 느립니다. 한 프로젝트에서 필자는'.pcap' 파일에 쓴 다음'scapy'에서 파일을 구문 분석하여 올바른 응답을 받았는지 확인하기 위해'tcpdump'를 백그라운드 프로세스로 사용하기 시작했습니다. –
나는 본다. scapy의'sr' 함수에 대한 대안을 알고 있습니까? 정말 수정 된 TTL 값을 가진 패킷을 보내고 해당 ICMP 메시지와 쌍을 이루기 만하면됩니다. 그것은 Scapy에서/so/simple을 보았지만, 각 패킷에 대해'sr'을 호출하는 데는 시간이 걸립니다. –