Dlaczego WireShark uważa, że ​​ta ramka jest segmentem TCP złożonego PDU

9

Proszę znaleźć mały plik pcap tutaj ilustrujący mój problem.

Mam trójstronny uścisk dłoni TCP, po którym następuje dwa logowanie FIX. (FIX jest protokołem używanym w handlu.) Pierwsze logowanie FIX (ramka 4) jest interpretowane i analizowane przez WireShark, ale drugie logowanie (ramka 6) jest interpretowane jako TCP segment of a reassembled PDU.

Jednak ramka 6 nie jest segmentem TCP ponownie złożonej jednostki PDU. Zawiera pełny TCP PDU, który powinien być interpretowany i analizowany jako logowanie FIX. Sprawdziłem, czy wszystkie numery sekwencyjne, numery ACK, całkowite długości IP itp. Są dobre.

Dlaczego ramka 6 jest interpretowana jako segment TCP ponownie złożonej PDU?

Randomblue
źródło
Czy masz z tego powodu problem?
Nathan C,
1
Tak, generuję wszystkie te klatki i najwyraźniej coś jest nie tak z tym, co zrobiłem.
Randomblue
1
Zdecydowanie sugeruję uwzględnienie w swoim pytaniu istotnych szczegółów ramek 4 i 6 (i być może ramek sąsiednich). Link do pliku pcap jest świetny, ale tylko niewielka część czytelników będzie skłonna go pobrać i wyświetlić.
Skyhawk
Na pierwszy rzut oka nic nie mogę znaleźć. Segment 4 nie jest podzielony. Ramka 6 pochodzi z miejsca docelowego i mówisz, że ta ramka 6 powinna być interpretowana jako odpowiedź serwera na ramkę 4, tj. Powinno się tam wykonać logowanie FIX. dobrze.
Soham Chakraborty,

Odpowiedzi:

15

Posiadanie hostów ponumerowanych .76 i .67 jest nieco przytłaczające.

Wireshark nazywa ramkę 6 „segmentem TCP ponownie złożonego PDU”, ponieważ implementacja protokołu TCP w dniu 10.10.10.67 decyduje się na wysłanie ACK bez ładunku („nagiego” ACK) zamiast uwzględniać ładunek, który jest wysyłany w ramce 6 w / ACK w ramce 5. (Jest to zachowanie zależne od stosu OS / IP). To z kolei wyzwala zachowanie w sektorze TCP, aby przekazać ładunki z wielu segmentów TCP do sekretarza FIX. Z jakiegokolwiek powodu, sekator FIX nie interpretuje ramki 6.

Jeśli wyłączysz opcję „Zezwalaj subdissektorowi na desegmentowanie strumieni TCP” w opcjach sekatora TCP, przekonasz się, że Wireshark interpretuje to inaczej:

Zrzut ekranu z Wireshark

Oto dyskusja z listy użytkowników wireshark na ten sam temat .

Evan Anderson
źródło