Używam Scapy, aby odtworzyć niektóre zgrane pakiety, w których zmieniam wartość TTL. Otrzymałem bardzo dziwne wyniki nawet przy TTL = 1.brak pobierania wszystkich komunikatów przekroczenia czasu ICMP: dlaczego?
Po uruchomieniu godzin testowych niezależnie od siebie, mogę uzyskać od około 40% do 95% pakietów, na które odpowiedziano z komunikatem przekroczenia czasu ICMP. Następnie mogę rekurencyjnie odtwarzać nieodebrane pakiety i uzyskiwać za każdym razem mniej więcej taki sam procent odebranych pakietów, jak poprzednio.
Dlaczego tak jest?
Przesyłam pakiety w odstępach 0,1 sekundy między sobą. To powinno być w porządku, prawda? Moja wartość limitu czasu to 10s, co powinno być bardzo zachowawcze.
Co jest nie tak?
Ograniczenie stawki ICMP było również moim domysłem, ale dzisiaj próbowałem wysłać wszystko ponownie z interwałem międzywarstwowym nawet na 5 sekund, a wciąż nie otrzymałem odpowiedzi na co najmniej 6-7 pakietów poza moje 50 (mały test). Używam funkcji 'sr' w Scapy. Pomyślałem więc, że przekażę go po jednym pakiecie, a potem zatrzymam na 1 sekundę. Cóż, tym razem * co * pojedynczy pakiet zostanie odebrany. Chyba jest to problem z implementacją 'sr'. –
Widziałem podobne problemy z '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'slow-powolny dla wysyłania/odbierania ruchu '; w jednym projekcie zacząłem używać 'tcpdump' jako procesów w tle, które zapisywałem do pliku' .pcap', a następnie przeanalizowałem plik w 'scapy', aby sprawdzić, czy otrzymałem poprawną odpowiedź. –
Rozumiem. Czy znasz jakieś alternatywy dla funkcji 'sr'? Naprawdę wystarczy wysłać pakiety ze zmodyfikowaną wartością TTL i powiązać je z odpowiednim komunikatem ICMP. Wyglądało to tak/bardzo prosto w Scapy, ale wywołanie 'sr' dla każdego pakietu trwa wieki. –