서버가 중단되거나 (클라이언트에 FIN 또는 RESET이 전송되지 않음) 반 개방 연결의 경우 클라이언트가이 끊어진 연결에서 일부 데이터를 보내려고하면 각 TCP 세그먼트는 un -ACKED. TCP는 일정 시간 후에 패킷을 재전송하려고 시도합니다. TCP는 몇 번이나 포기하기 전에 재전송을 시도 할 것이고이 경우 어떻게 될 것입니까? 호스트가 도달 할 수 없다는 것을 운영 체제에 알리는 방법은 무엇입니까? 이것은 TCP RFC에서 어디에 지정되어 있습니까?TCP가 몇 번 재전송합니까?
9
A
답변
13
프로그램 프로그램이 충돌하면 커널이 모든 열린 소켓을 적절히 정리합니다. (TCP 관점에서 보면 응용 프로그램 계층 프로토콜에 위배 될 수 있지만 응용 프로그램은이 이벤트에 대비해야합니다.)
서버 커널이 충돌하고 다시 돌아 오지 않는 경우 숫자와 소켓이 아직 또는 연결되지 않은 경우 재시도 타이밍 따라 달라집니다. (tcp(7)
에서)
tcp_retries1 (integer; default: 3; since Linux 2.2)
The number of times TCP will attempt to
retransmit a packet on an established connection
normally, without the extra effort of getting
the network layers involved. Once we exceed
this number of retransmits, we first have the
network layer update the route if possible
before each new retransmit. The default is the
RFC specified minimum of 3.
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.
서버 커널 충돌하는 경우와 , 그것의에 대해 알 수 없습니다까지 돌아 오지 않는다 소켓과 의지 RST
이러한 후속 패킷을 사용하면 오류를 훨씬 빠르게 처리 할 수 있습니다.
장애가 발생한 단일 지점 장애 라우터가 중단되면 빠르게 다시 가동되면 연결이 계속 작동 할 수 있습니다. 이렇게하려면 방화벽과 라우터에 상태가 없거나 또는 stateful 인 경우 기존 연결이 계속 실행되도록 허용하는 규칙 집합이 있어야합니다. (잠재적으로 안전하지 않은 다른 방화벽 관리자는 이에 대해 다른 정책을 가지고 있습니다.) errno
이 ECONNRESET
(적어도 send(2)
이상)으로 설정된 경우 프로그램에 오류가 반환됩니다.
관련 문제
- 1. 파일이 몇 번 다운로드되었는지
- 2. 유니즌을 몇 번 설치해야합니까?
- 3. onunload가 몇 번 트리거 되었습니까?
- 4. 값이 몇 번 나타나는지를 계산하십시오.
- 5. MySQL에서 트리거가 몇 번 호출 되었습니까?
- 6. 사용자 정의 변수는 몇 번 기록됩니까?
- 7. iPhone에서 몇 번 터치 할 수 있습니까?
- 8. 문자열이 다른 문자열에 몇 번 나타날지 계산하십시오.
- 9. Javascript : 문자열에서 문자가 몇 번 발생합니까?
- 10. SPARQL에 속성이 몇 번 적용 되었습니까?
- 11. 앱이 몇 번 열렸는지 알 수 있습니까?
- 12. 목록에서 번호 하나가 몇 번 발견되는지
- 13. IB의 디자인을 디자인하고 다른 콘텐츠로 몇 번 사용합니까?
- 14. Django - 관련 세트 선택 : 데이터베이스에 몇 번 도달 했습니까?
- 15. for 루프에서 strlen()이 몇 번 호출 될까요?
- 16. 클래스 내에서 클래스가 몇 번 중첩 될 수 있습니까?
- 17. 처음 몇 번 Chrome 확장 프로그램이 작동하지 않습니다.
- 18. .htaccess가 구문 분석되고 RewriteRule 지시문이 몇 번 실행됩니까?
- 19. iPhone 앱이 몇 번 열렸는지 추적하는 방법은 무엇입니까?
- 20. 다른 문자열에서 문자열이 몇 번 발생합니까 (텍스트 상자) VB.NET
- 21. MySQL이 표 셀 안에 단어가 몇 번 나타나는지 확인합니다.
- 22. appcelerator 게시물 요청. 하나의 요청으로 하나의 변수를 몇 번 보내십시오.
- 23. 안드로이드 응용 프로그램에서 버튼을 몇 번 클릭했는지 측정
- 24. 오류가 발생하면 urlfetch.fetch를 몇 번 더 다시 시도 하시겠습니까?
- 25. 다른 값 다음에 값이 몇 번 발생하는지 계산하는 방법
- 26. 몇 분에 한 번 Android GPS 위치 정보 받기
- 27. 특정 앱이 몇 번 다운로드되었는지 -이 정보는 어디에 있습니까?
- 28. TCP IP 보장 배달 질문
- 29. 번
- 30. 번
블랙홀 경로, 재시도 후 소켓과 프로그램에 어떤 변화가 있었습니까? 소켓 상태가 CLOSED로 전환합니까? 또는 프로그램의 다음 쓰기/읽기가 xxx의 errno를 얻을 것인가? – Chinaxing