통신을 방해하지만 네트워크 케이블을 당겨도 TCP 연결이 끊어지지는 않습니다 (1). 케이블을 다시 연결할 수 있으며 IP 연결이 설정되면 모든 백 - 데이터가 이동합니다. 이것은 셀룰러 네트워크에서도 TCP를 신뢰할 수있게합니다.
TCP가 데이터를 보내면 응답으로 ACK가 필요합니다. 일정 시간 내에 아무 것도 나타나지 않으면 데이터를 다시 전송하고 다시 기다립니다. 전송간에 대기하는 시간은 일반적으로 기하 급수적으로 증가합니다.
ACK가 없으면 일부 재전송 횟수 또는 총 시간이 경과하면 TCP는 연결이 "끊어진 것"으로 간주합니다. 얼마나 많은 시간 또는 얼마나 오래 당신의 OS와 그 구성에 달려 있지만, 일반적으로 몇 분 정도 시간 초과됩니다. 리눅스의 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.
이 가능성이 당신이 당신의 연결이 사라진 경우 감지하는 데 걸리는 시간을 변경 조정할 수 있습니다 값입니다.
(1) 예외가 있습니다. 운영 체제는 케이블이 제거 된 것을 알면 모든 연결이 "끊어진"것으로 간주해야한다는 것을 상위 계층에 알릴 수 있습니다.
[this] (http://stackoverflow.com/questions/5907527/application-control-of-tcp-retransmission-on-linux)가 답변을 제공합니다. – SKi