Zajmuje mnie ostatnio kwestia rozmiaru ramki w sieci lokalnej. Nieważne dlaczego (wywodzi się z dyskusji o MTU). Chodzi o to, że w celu zbadania sprawy zrobiłem taki eksperyment:
1. Na dwóch komputerach podłączonych do tego samego switcha (w routerze MikroTik 750G) zapuściłem tcpdump z zapisem do pliku: tcpdump -w plik host ip_drugiego_kompa (to ostatnie w celu wyizolowania testowych danych). 2. Na jednym kompie uruchomiłem $ nc -l -p 9999 > /dev/null a na drugim $ cat plik | nc ip_drugiego_kompa 9999 3. Po zakończeniu transmisji zatrzymałem oba tcprobe. 4. Otworzyłem zapisane dumpy przez tcpdump -r plik. No i teraz porównuję to, co mam w obu. Początek jest OK - wysyłane są pakiety, identyczne są odbierane, potwierdzane - jest fajnie. Pomijam kwestię, że pomimo tego, że MTU jest ustawione na 1500, to tcpdump łapie paczki o rozmiarach dość dowolnych (nawet kilkanaście KB po stronie nadawcy, maksymalnie 7240 baktów po stronie odbiorcy). Ale potem następuje coś, czego nie rozumiem. Na nadawcy: [...] 10:28:13.295901 IP geralt-ipi.48726 > laptok.distinct: Flags [.], seq 19425:28113, ack 1, win 229, options [nop,nop,TS val 154404456 ecr 8316569], length 8688 10:28:13.295919 IP geralt-ipi.48726 > laptok.distinct: Flags [.], seq 28113:36801, ack 1, win 229, options [nop,nop,TS val 154404456 ecr 8316569], length 8688 [...] A na odbiorcy: 10:28:17.133362 IP geralt-ipi.48726 > laptok.distinct: Flags [.], seq 19425:26665, ack 1, win 229, options [nop,nop,TS val 154404456 ecr 8316569], length 7240 10:28:17.133378 IP laptok.distinct > geralt-ipi.48726: Flags [.], ack 26665, win 643, options [nop,nop,TS val 8316569 ecr 154404456], length 0 10:28:17.133422 IP geralt-ipi.48726 > laptok.distinct: Flags [.], seq 26665:33905, ack 1, win 229, options [nop,nop,TS val 154404456 ecr 8316569], length 7240 10:28:17.133437 IP laptok.distinct > geralt-ipi.48726: Flags [.], ack 33905, win 756, options [nop,nop,TS val 8316569 ecr 154404456], length 0 10:28:17.133462 IP geralt-ipi.48726 > laptok.distinct: Flags [.], seq 33905:36801, ack 1, win 229, options [nop,nop,TS val 154404456 ecr 8316569], length 2896 Jak widać, wysyłane są dane z przedziału 19425-36801, ale wysyłane są w dwóch paczkach, a odbierane w trzech. Podział nie wynika z chamskiej fragmentacji IP, ale wygląda, jakby po wygenerowaniu dwóch paczek o rozmiarze 8688, gdzieś w międzyczasie zostały one złożone ponownie w jeden ciąg o długości 17376, a potem ponownie pocięte na 7240+7240+2896. I to na poziomie TCP, czyli warstwy 4-tej! Pomiędzy nadawcą a odbiorcą jest tylko switch w routerze Mikrotik. I tu się pojawiają moje pytania: 1. Co tak na prawdę łapie tcpdump (wireshark zresztą też, w nim jest identycznie)? 2. Co może dokonywać ponownego przepakowania danych na poziomie warstwy 4? Jak to ewentualnie sprawdzić? 3. Jak złapać rzeczywiście przesyłane fizyczne ramki danych (jeśli to co łapie tcpdump ty nie jest)? -- Łukasz Maśko _o) Lukasz.Masko(at)ipipan.waw.pl /\\ Registered Linux User #61028 _\_V Ubuntu: staroafrykańskie słowo oznaczające "Nie umiem zainstalować Debiana" _______________________________________________ pld-users-pl mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-users-pl
