Wyciągnięcie kabla sieciowego nie przerwie połączenia TCP (1), ale zakłóci komunikację. Możesz ponownie podłączyć kabel i po nawiązaniu połączenia IP wszystkie dane z powrotem się poruszą. To właśnie sprawia, że TCP jest niezawodny, nawet w sieciach komórkowych.
Gdy TCP wysyła dane, oczekuje odpowiedzi ACK. Jeśli żadna nie dotrze w określonym czasie, ponownie przesyła dane i czeka ponownie. Czas oczekiwania pomiędzy transmisjami zasadniczo wzrasta wykładniczo.
Po pewnej liczbie retransmisji lub pewnej ilości całkowitego czasu bez ACK, TCP uzna połączenie za "zepsute". Ile razy lub jak długo to zależy od systemu operacyjnego i jego konfiguracji, ale zazwyczaj jest to czasowo zbyt długi czas rzędu wielu minut.
Od Linux na tcp.7 man page:
tcp_retries2 (integer; default: 15; since Linux 2.2)
The maximum number of times a TCP packet is retransmitted in
established state before giving up. The default value is 15, which
corresponds to a duration of approximately between 13 to 30 minutes,
depending on the retransmission timeout. The RFC 1122 specified
minimum limit of 100 seconds is typically deemed too short.
Jest prawdopodobne, że wartość będziesz chciał dostosować się do zmiany, jak długo to trwa do wykrycia, jeśli połączenie zniknął.
(1) Istnieją wyjątki od tej reguły. System operacyjny, po zauważeniu usunięcia kabla, może powiadomić górne warstwy, że wszystkie połączenia powinny zostać uznane za "uszkodzone".
Może [to] (http://stackoverflow.com/questions/5907527/application-control-of-tcp-retransmission-on-linux) daje odpowiedź dla ciebie. – SKi