Co by się stało, gdybym sfałszował ilość pakietów przychodzących za pomocą tcp

-4

Załóżmy, że tworzę wadliwy serwer tcp, który mówi na przykład do innego
komputera, że ​​będzie przechodzić 7 pakietów, ale tylko 6 zostanie wysłanych.
Co zrobiłby drugi komputer?

Slipknot1
źródło
Nie możesz tego zrobić, ponieważ w protokole nie ma nic, co mówi „nadchodzą pakiety x”. Albo wysyłasz pakiety x, albo nie.
dirkt
Ale skąd możesz mieć pewność, że te pakiety przeszły? Czyż nie o to chodzi w tcp?
Slipknot1
„Ale skąd możesz mieć pewność, że te pakiety zostały
wysłane
1
@ Slipknot1, odbiornik nie zna liczby pakietów, które mają zostać odebrane, ale wysyła ACK dla odebranych danych. Nadawca musi rozpoznać, kiedy dane nie są potwierdzone, i ponownie przesłać dane.
YLearn

Odpowiedzi:

1

Sam protokół TCP nigdy nie określa, ile pakietów ma zostać przesłanych z serwera do klienta. Klient jedynie wysyła pakiety ACK (potwierdzenie) z powrotem do serwera, gdy tylko odbierze pakiet TCP. Protokół został zaprojektowany z myślą o wadliwych sieciach, więc serwer, który nie wyśle ​​kolejnego pakietu, nie spowoduje żadnej szkody.

Teraz w warstwie aplikacji możesz napisać oprogramowanie, które oczekuje wcześniej przesłanej liczby bajtów (na przykład menedżera pobierania), a wadliwy serwer rzeczywiście spowodowałby jego awarię. Ale to nie wchodzi w zakres twojego pytania.

JonathanReez
źródło
0

To zależy od tego, jak lub czy połączenie zostało zamknięte. Jeśli masz na myśli awarię systemu, a nadawca po prostu przestaje nadawać, ten artykuł pomoże wyjaśnić zasady podtrzymania, jeśli są w użyciu. Protokoły nie są wymagane przez TCP.

http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html

Jeff Pliska
źródło