web-dev-qa-db-ja.com

確認方法TCP linux / macosのタイムアウト?

MacOSでトラブルシューティングが必要なネットワークの問題があります。 TCPソケットに内部タイムアウトがあり、リモートパーティが応答しない場合は接続を閉じる(ただし、正常な切断もない)ことを知っています。これの正確な値を確認するために使用できるコマンド/ツールはありますか?タイムアウト?

11
grigoryvp

すべてのシステム設定のtcp値は、

$ sysctl net.inet.tcp

Tcp_var.h、tcp_subr.c、およびtcp_timer.cから解釈:

  • net.inet.tcp.keepidle =キープアライブアイドルタイマー
  • net.inet.tcp.keepintvl =キープアライブを送信する間隔
  • net.inet.tcp.keepinit = synを確立するためのタイムアウト
  • net.inet.tcp.mssdflt =デフォルトTCP最大セグメントサイズ
  • net.inet.tcp.v6mssdflt =デフォルトTCP IPv6の最大セグメントサイズ
  • net.inet.tcp.minmss =最小TCP最大セグメントサイズ
  • net.inet.tcp.minmssoverload = TCP 1秒あたりのセグメント数がMINMSSサイズを下回ることを許可
  • net.inet.tcp.rfc1323 = rfc1323(高性能TCP)拡張を有効にする
  • net.inet.tcp.rfc1644 = rfc1644(TTCP)拡張を有効にする
  • 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 =すべての接続でSO_KEEPALIVEを想定するTCP接続
  • net.inet.tcp.broken_peer_syn_rxmit_thres =前に再送信されたSYNの数TCP=残りの試行中にrfc1323およびrfc1644を無効にします
  • net.inet.tcp.pmtud_blackhole_detection =パスMTUディスカバリブラックホール検出
  • net.inet.tcp.pmtud_blackhole_mss =パスMTUディスカバリブラックホール検出によりMSSが低下

SO_KEEPALIVEが設定されている場合、デフォルトでは、接続が閉じる前に8つのキープアライブが送信されると思います。時間はミリ秒単位です。

15
fuzzyTew

Linuxの場合、以下を使用できます。

$ sysctl -a | grep net.ipv4
4
NMaslarski

これがあなたが探しているものかどうかはわかりませんが、キープアライブ値を次のように確認できます:

$ netstat -o
3
atx

多分無関係ですが、私にとってはうまくいきます:

サーバーの1つに対する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
1
huch