Jeśli mam duży pakiet HTTP, który został podzielony na kilka pakietów TCP, w jaki sposób mogę zrekonstruować je z powrotem do pojedynczego pakietu HTTP? Zasadniczo, gdzie w pakiecie mam sprawdzić, kiedy zaczyna się/kończy pakiet HTTP? Nie mogę zobaczyć żadnych flag/pól w nagłówku TCP, które oznaczają początek lub koniec pakietu HTTP.Rekonstrukcja pakietu HTTP
EDYCJA: W uzupełnieniu do odpowiedzi. Jeśli TCP zarządza strumieniem, skąd wiadomo, kiedy strumień się zaczyna i kończy? Czy to zależy od otwarcia i zamknięcia gniazda? Niektóre protokoły, na pewnym poziomie, muszą być w stanie wiedzieć, kiedy strumień HTTP/pakiet został uruchomiony i zakończony. Właśnie tego chciałbym wiedzieć.
Sytuacja, w której się znajduję polega na używaniu sniffera pakietów w C#, który czyta w pakietach TCP, i chciałbym móc odtworzyć żądania HTTP/odpowiedzi/etc. przeglądanie interfejsu, na przykład jak radzi sobie wireshark i różne inne sniffery. Alternatywnie, czy są jakieś biblioteki C#, które umożliwiają ci wejście w strumienie HTTP na wyższym poziomie, oszczędzając mi konieczność rekonstrukcji strumienia HTTP/pakietów?
Dzięki.
Jeśli pole Content-Length nie jest określony, istnieją inne sposoby, aby wypracować długość też. na przykład http://www.httpwatch.com/httpgallery/chunked/ – mike
Może być nieco spóźniony, ale nagłówek 'Content-Length' NIE określa całkowitej długości pakietu. Określa jedynie rozmiar treści, a więc ciało, które pojawia się po nagłówkach. Nagłówki i treść są oddzielone przez '\ r \ n \ r \ n'. –