Linux / Macos'ta TCP Zaman Aşımı Nasıl Kontrol Edilir?


11

MacOS'umda gidermem gereken bir ağ sorunum var. TCP soketinin, uzak taraf yanıt vermiyorsa bağlantıyı kapatacak dahili zaman aşımı olduğunu biliyorum (ancak zarif bir bağlantıyı kesmeyin). Bu zaman aşımlarının kesin değerini kontrol etmek için kullanabileceğim herhangi bir komut / araç var mı?

Yanıtlar:


15

Sistem ayarlı tüm tcp değerlerini şununla görebilirsiniz:

$ sysctl net.inet.tcp

Tcp_var.h, tcp_subr.c ve tcp_timer.c'den yorumlanmıştır:

  • net.inet.tcp.keepidle = keepalive rölanti zamanlayıcısı
  • net.inet.tcp.keepintvl = saklayıcı gönderme aralığı
  • net.inet.tcp.keepinit = syn oluşturmak için zaman aşımı
  • net.inet.tcp.mssdflt = Varsayılan TCP Maksimum Segment Boyutu
  • net.inet.tcp.v6mssdflt = IPv6 için Varsayılan TCP Maksimum Segment Boyutu
  • net.inet.tcp.minmss = Minimum TCP Maksimum Segment Boyutu
  • net.inet.tcp.minmssoverload = MINMSS Boyutunun Altında Olmasına İzin Verilen Saniye Başına TCP Segment Sayısı
  • net.inet.tcp.rfc1323 = rfc1323 (yüksek performanslı TCP) uzantılarını etkinleştir
  • net.inet.tcp.rfc1644 = rfc1644 (TTCP) uzantılarını etkinleştir
  • net.inet.tcp.do_tcpdrain = Mbufs az olduğunda ekstra yardım için tcp_drain rutini etkinleştir
  • net.inet.tcp.pcbcount = Etkin PCB sayısı
  • net.inet.tcp.icmp_may_rst = Belirli ICMP'ye ulaşılamayan mesajlar SYN_SENT içindeki bağlantıları iptal edebilir
  • net.inet.tcp.strict_rfc1948 = RFC1948'in tam olarak izlenip izlenmediğini belirler
  • net.inet.tcp.isn_reseed_interval = ISN sırrının yeniden kullanımı arasında saniye
  • net.inet.tcp.background_io_enabled = Arka Plan IO Etkin
  • net.inet.tcp.rtt_min = min. rtt değerine izin verilir
  • net.inet.tcp.randomize_ports = TCP bağlantı noktası numaralarını rastgele seç
  • net.inet.tcp.tcbhashsize = TCP kontrol bloğu hashtable boyutu
  • net.inet.tcp.msl = Maksimum segment ömrü
  • net.inet.tcp.always_keepalive = Tüm TCP bağlantılarında SO_KEEPALIVE olduğunu varsayın
  • net.inet.tcp.broken_peer_syn_rxmit_thres = TCP, denemelerin geri kalanında rfc1323 ve rfc1644'ü devre dışı bırakmadan önce yeniden iletilen SYN'lerin sayısı
  • net.inet.tcp.pmtud_blackhole_detection = Yol MTU Keşfi Kara Delik Algılama
  • net.inet.tcp.pmtud_blackhole_mss = Yol MTU Keşfi Kara Delik Algılama MSS'yi düşürdü

SO_KEEPALIVE ayarlanmışsa, bağlantı kapatılmadan önce varsayılan olarak 8 saklamanın gönderileceğine inanıyorum. Zamanlar milisaniye cinsindendir.


4

Linux için şunları kullanabilirsiniz:

$ sysctl -a | grep net.ipv4

3

Aradığınız şeyin bu olup olmadığından emin değilim, ancak canlı tutma değerini şu şekilde kontrol edebilirsiniz:

$ netstat -o

3
netstat, Mac OS X
10.6.6'da

1

Belki ilgisiz, ama benim için çalışıyor:

Ben sunucularımızdan birine ssh / tcp interaktif zaman aşımı belirlemeye çalışıyorum, bu yüzden sadece:

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

örnek çıktı:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.