MacOS에 문제가있는 네트워크 문제가 있습니다. TCP 소켓에는 원격 당사자가 응답하지 않는 경우 연결을 닫는 내부 시간 초과가 있음을 알고 있습니다 (그러나 우아한 연결 해제는 없습니다). 이 시간 초과의 정확한 값을 확인하는 데 사용할 수있는 명령 / 도구입니까?
답변
모든 시스템 설정 TCP 값을 볼 수 있습니다
$ sysctl net.inet.tcp
tcp_var.h, tcp_subr.c 및 tcp_timer.c에서 해석됩니다.
- net.inet.tcp.keepidle = Keepalive 유휴 타이머
- net.inet.tcp.keepintvl = 연결 유지를위한 간격
- net.inet.tcp.keepinit = syn 설정을위한 타임 아웃
- net.inet.tcp.mssdflt = 기본 TCP 최대 세그먼트 크기
- net.inet.tcp.v6mssdflt = IPv6의 기본 TCP 최대 세그먼트 크기
- net.inet.tcp.minmss = 최소 TCP 최대 세그먼트 크기
- net.inet.tcp.minmssoverload = MINMSS 크기 미만으로 허용되는 초당 TCP 세그먼트 수
- net.inet.tcp.rfc1323 = rfc1323 (고성능 TCP) 확장 활성화
- net.inet.tcp.rfc1644 = TTCP (rfc1644) 확장 사용
- net.inet.tcp.do_tcpdrain = mbuf가 부족할 때 추가 도움을 받으려면 tcp_drain 루틴을 활성화하십시오.
- net.inet.tcp.pcbcount = 활성 PCB 수
- net.inet.tcp.icmp_may_rst = 도달 할 수없는 특정 ICMP 메시지가 SYN_SENT에서 연결을 중단 할 수 있음
- net.inet.tcp.strict_rfc1948 = RFC1948을 정확히 따르는 지 결정
- net.inet.tcp.isn_reseed_interval = ISN 비밀 재분배 사이의 시간 (초)
- net.inet.tcp.background_io_enabled = 백그라운드 IO 활성화
- net.inet.tcp.rtt_min = 허용되는 최소 rtt 값
- net.inet.tcp.randomize_ports = TCP 포트 번호 랜덤 화
- net.inet.tcp.tcbhashsize = TCP 제어 블록 해시 테이블의 크기
- net.inet.tcp.msl = 최대 세그먼트 수명
- net.inet.tcp.always_keepalive = 모든 TCP 연결에서 SO_KEEPALIVE로 가정
- net.inet.tcp.broken_peer_syn_rxmit_thres = 나머지 시도 동안 TCP가 rfc1323 및 rfc1644를 비활성화하기 전에 재전송 된 SYN 수
- net.inet.tcp.pmtud_blackhole_detection = 경로 MTU 발견 블랙홀 탐지
- net.inet.tcp.pmtud_blackhole_mss = 경로 MTU 발견 블랙홀 탐지가 MSS를 낮춤
SO_KEEPALIVE가 설정되면 연결이 닫히기 전에 기본적으로 8 개의 keepalives가 전송된다고 생각합니다. 시간은 밀리 초입니다.
답변
리눅스의 경우 다음을 사용할 수 있습니다.
$ sysctl -a | grep net.ipv4
답변
이것이 당신이 찾고있는 것인지 확실하지 않지만 다음과 같이 keep-alive 값을 확인할 수 있습니다.
$ netstat -o
답변
아마도 관련이 없지만 나를 위해 작동합니다.
우리 서버 중 하나에 대한 ssh / tcp 대화 형 시간 초과를 결정하려고합니다.
date; ssh host.domain 'sleep 10000'; date
출력 예 :
Thu May 24 12:22:39 CEST 2018
packet_write_wait: Connection to 172.29.1.27 port 22: Broken pipe
Thu May 24 14:22:40 CEST 2018