>  기사  >  Java  >  TCP 연결 유지는 어떻게 작동하며 소켓 연결은 얼마나 오랫동안 열려 있습니까?

TCP 연결 유지는 어떻게 작동하며 소켓 연결은 얼마나 오랫동안 열려 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 14:05:03513검색

How Does TCP Keep-Alive Work and How Long Do Socket Connections Remain Open?

TCP 소켓 연결에 "Keep Alive"가 있습니까?

HTTP 연결 유지와 달리 TCP 소켓 연결은 무기한 열려 있지 않습니다. . 대신 TCP Keep-Alive에 의해 시행되는 시간 초과 제한이 적용됩니다.

소개

TCP 연결에는 각각 연결의 한쪽 끝에 있는 두 개의 소켓이 포함됩니다. 일반적으로 이러한 소켓은 한쪽 끝이 FIN 패킷으로 표시된 연결을 종료할 때까지 열려 있습니다. 그러나 의도하지 않은 소켓 종료가 발생하는 경우 오래된 연결을 감지하고 종료하기 위해 TCP Keep-Alive가 존재합니다.

Keep-Alive 프로세스

Linux 시스템에서는 TCP Keep-Alive가 있습니다. 다음 기본 설정으로 작동합니다:

  • tcp_keepalive_time: 7200초(2시간)
  • tcp_keepalive_probes: 9
  • tcp_keepalive_intvl: 75초

tcp_keepalive_time 이상 연결이 유휴 상태로 유지되면 ACK 패킷이 상대방에게 전송됩니다. 지정된 수의 프로브 후에도 응답이 없으면 RST를 통해 연결이 종료됩니다.

Gotchas

2시간 기본값: 기본적으로 , 연결 유지 프로세스는 2시간 동안 활동이 없는 경우에만 시작되므로 오래된 연결이 지속될 수 있습니다.

연결 유지는 선택 사항입니다. 연결 유지 패킷에 대한 응답은 선택 사항이며, 일부 구현에서는 이를 삭제할 수 있습니다.

TCP 시간 초과 변경

TCP 시간 초과를 수정하려면 다음 OS별 지침을 참조하세요.

Linux:

  • 소켓별: 현재 Java에서는 지원되지 않음
  • 시스템 전체: 에코를 사용하여 / proc/sys/net/ipv4/[tcp_keepalive_time|tcp_keepalive_probes|tcp_keepalive_intvl]

Mac OS X:

  • 시스템 전체: sysctl -w를 사용하여 net.inet.tcp를 설정합니다.[keepidle|keepintvl|keepcnt]
  • 지속: /etc/sysctl.conf에 설정 추가

Windows:

  • 시스템 전체: HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters
에서 레지스트리 값 편집

위 내용은 TCP 연결 유지는 어떻게 작동하며 소켓 연결은 얼마나 오랫동안 열려 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.