Bagaimana cara memeriksa batas waktu TCP di linux / macos?

11

Saya memiliki masalah jaringan pada MacOS saya yang harus saya atasi. Saya tahu bahwa soket TCP memiliki batas waktu internal yang akan menutup koneksi jika pihak jauh tidak merespons (tetapi juga tidak ada sambungan yang baik). Apakah ini perintah / alat yang dapat saya gunakan untuk memeriksa nilai eksak dari batas waktu ini?

grigoryvp
sumber

Jawaban:

15

Anda dapat melihat semua nilai tcp pengaturan-sistem dengan

$ sysctl net.inet.tcp

Diterjemahkan dari tcp_var.h, tcp_subr.c, dan tcp_timer.c:

  • net.inet.tcp.keepidle = timer idle keepalive
  • net.inet.tcp.keepintvl = interval untuk mengirim keepalives
  • net.inet.tcp.keepinit = batas waktu untuk membangun syn
  • net.inet.tcp.mssdflt = Ukuran Segmen Maksimum TCP Default
  • net.inet.tcp.v6mssdflt = Ukuran Segmen Maksimum TCP Default untuk IPv6
  • net.inet.tcp.minmss = Ukuran Segmen Maksimum TCP Minmum
  • net.inet.tcp.minmssoverload = Jumlah Segmen TCP per Detik diizinkan di bawah Ukuran MINMSS
  • net.inet.tcp.rfc1323 = Aktifkan ekstensi rfc1323 (TCP kinerja tinggi)
  • net.inet.tcp.rfc1644 = Aktifkan ekstensi rfc1644 (TTCP)
  • net.inet.tcp.do_tcpdrain = Aktifkan tcp_drain rutin untuk bantuan ekstra ketika rendah pada mbufs
  • net.inet.tcp.pcbcount = Jumlah PCB aktif
  • net.inet.tcp.icmp_may_rst = Pesan tidak terjangkau ICMP tertentu dapat membatalkan koneksi di SYN_SENT
  • net.inet.tcp.strict_rfc1948 = Menentukan apakah RFC1948 diikuti dengan tepat
  • net.inet.tcp.isn_reseed_interval = Detik antara reseeding rahasia ISN
  • net.inet.tcp.background_io_enabled = Latar Belakang IO Diaktifkan
  • net.inet.tcp.rtt_min = nilai min rtt diizinkan
  • net.inet.tcp.randomize_ports = Acak nomor port TCP
  • net.inet.tcp.tcbhashsize = Ukuran hashtable blok kontrol TCP
  • net.inet.tcp.msl = Seumur hidup segmen maksimum
  • net.inet.tcp.always_keepalive = Asumsikan SO_KEEPALIVE pada semua koneksi TCP
  • net.inet.tcp.broken_peer_syn_rxmit_thres = Jumlah SYN yang dikirim ulang sebelum TCP menonaktifkan rfc1323 dan rfc1644 selama sisa upaya
  • net.inet.tcp.pmtud_blackhole_detection = Path MTU Discovery Black Hole Detection
  • net.inet.tcp.pmtud_blackhole_mss = Path MTU Discovery Black Hole Detection menurunkan MSS

Saya percaya secara default 8 keepalives akan dikirim sebelum koneksi ditutup jika SO_KEEPALIVE diatur. Waktu dalam milidetik.

fuzzyTew
sumber
4

Untuk linux Anda dapat menggunakan:

$ sysctl -a | grep net.ipv4
NMaslarski
sumber
3

Saya tidak yakin apakah ini yang Anda cari, tetapi Anda dapat memeriksa nilai keep-live dengan:

$ netstat -o
atx
sumber
3
netstat tidak menerima opsi '-o' untuk saya di Mac OS X 10.6.6
fuzzyTew
1

Mungkin tidak berhubungan, tetapi bekerja untuk saya:

Saya mencoba menentukan batas waktu interaktif ssh / tcp ke salah satu server kami, jadi saya hanya:

date; ssh host.domain 'sleep 10000'; date

contoh output:

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
huh
sumber