タグ付けされた質問 「tcp」

トランスポート制御プロトコル(TCP)は、インターネットで使用されるプロトコルスタックの低レベルの部分です。IP層の真上に位置し、ドロップされたパケットが再送信されることを確認する責任があります。

3
カーネルソケット構造とTCP_DIAG
(TCPを使用して)リアルタイムデータサーバーに接続するソフトウェアに取り組んでいますが、いくつかの接続が切断されています。私の推測では、クライアントはサーバーからのデータを十分な速度で読み取っていません。したがって、TCPソケットを監視したいと思います。このために、私は「ss」ツールを見つけました。 このツールを使用すると、すべてのソケットの状態を確認できます。コマンドの出力の例を次に示します ss -inm 'src *:50000' ESTAB 0 0 184.7.60.2:50000 184.92.35.104:1105 mem:(r0,w0,f0,t0) sack rto:204 rtt:1.875/0.75 ato:40 私の質問は次のとおりです。記憶部とはどういう意味ですか?私は、データがカーネル構造(から来ていることがわかったツールのソースコードを見てみるとsock中sock.h)。より正確には、フィールドから来ます: r = sk->sk_rmem_alloc w = sk->sk_wmem_queued; f = sk->sk_forward_alloc; t = sk->sk_wmem_alloc; 誰かがその意味を知っていますか?私の推測は次のとおりです。 rmem_alloc :インバウンドバッファのサイズ wmem_alloc :アウトバウンドバッファのサイズ sk_forward_alloc :??? sk->sk_wmem_queued :??? バッファサイズは次のとおりです。 net.ipv4.tcp_rmem = 4096 87380 174760 net.ipv4.tcp_wmem = 4096 16384 131072 net.ipv4.tcp_mem …
18 linux  tcp  socket 

1
bash自体によって確立されたTCP接続を終了する方法は?
exec 3<>/dev/tcp/192.168.0.101/6435192.168.0.101:6435とのTCP接続を確立するために使用しました。そして、pipeコマンドとともにいくつかのメッセージを受信し、送信しました。 次に、TCP接続を終了します。しかし、ss -anpetbash自体が子プロセスをフォークすることなくこの接続を保持していることがわかります。 シグナル9と15をbashプロセスに送信しようとしましたが、ご存じのとおり、bashは自分自身を殺すことはできません。 それで、使用しているPTSを終了せずに、確立したTCP接続を終了できますか(ルートで殺すこともCtrl + Dを送信することもできません)?

4
LinuxラップトップでTCPが死ぬ
数日に一度、次の問題があります。私のラップトップ(Debianテスト)が突然、インターネットへのTCP接続で動作できなくなります。 次のことは引き続き正常に機能します。 UDP(DNS)、ICMP(ping)—即座に応答します ローカルネットワーク内の他のマシンへのTCP接続(例:隣のラップトップにSSH接続できます) LAN内の他のマシンではすべて問題ありません しかし、ラップトップからTCP接続を試みると、タイムアウトします(SYNパケットへの応答なし)。典型的なcurl出力は次のとおりです。 % curl -v google.com * About to connect() to google.com port 80 (#0) * Trying 173.194.39.105... * Connection timed out * Trying 173.194.39.110... * Connection timed out * Trying 173.194.39.97... * Connection timed out * Trying 173.194.39.102... * Timeout * Trying 173.194.39.98... * Timeout …
17 debian  networking  tcp 

2
/ dev / {udp、tcp}はどこでも標準化されていますか?
私は最近、/dev/udpおよび/dev/tcp擬似デバイスについてここで学びました。それらはいくつかのGNU / Linuxディストリビューションに固有のものですか、それとも他のUNIXシステムで見つけることができますか? それらは何らかの形で標準化されていますか? これまでのところ、OS X、Arch Linux、CentOSでそれらを正常に使用することができました。
17 devices  tcp  udp  portability 

1
TCPスループットがUDPスループットよりもはるかに大きいのはなぜですか?
ハードウェアまたはカーネル構成(すべてのデフォルト設定、OSの新規インストール、Linuxカーネル3.11 TCP / IPスタック)に異常なことはしておらず、平均0.75しかありませんがTCPを介して毎秒平均約383万メッセージを処理していますUDPを介して毎秒100万メッセージ。これは、2つのプロトコルに期待することを完全に無視しているようです。 劇的な違いの最も可能性の高い原因は何ですか?また、Ubuntu 13.10でどのように診断できますか? #TCP RESULTS Recv Send Send Utilization Service Demand Socket Socket Message Elapsed Send Recv Send Recv Size Size Size Time Throughput local remote local remote bytes bytes bytes secs. 10^6bits/s % S % S us/KB us/KB 87380 65536 64 10.00 1963.43 32.96 17.09 5.500 …

2
TCP_DEFER_ACCEPTの実際の使用?
私はApache httpdマニュアルをオンラインで閲覧していて、これを有効にするためのディレクティブに出会いました。次のマニュアルページで説明を見つけましたtcp。 TCP_DEFER_ACCEPT (since Linux 2.4) Allow a listener to be awakened only when data arrives on the socket. Takes an integer value (seconds), this can bound the maximum number of attempts TCP will make to complete the connection. This option should not be used in code intended to be …

3
TCP接続にin / out名前付きパイプを使用する
私はこれをしばらくの間機能させることに悩んでいたので、パイプがどのように機能するかについての根本的な誤解が私のトラブルの根本原因であると考えています。 私の目標は、リモートホストへのTCP接続を開始netcatし、ファイルシステム上に2つの名前付きパイプを作成することです。1つはプロセスから読み取りデータを取得し、もう1つはプロセスが送信データとして書き込むことができます。現在、次の構成を使用しています。 mkfifo in mkfifo out cat out | netcat foo.bar.org 4000 > in & ここから、他のプロセスがこのオープンTCP接続との間で読み書きできるようにしたいと思います。これは「うまくいく」のでしょうか、それともこのような構成が機能しない理由がありますか? 現在何が起こっているように見えるかはout問題なく読むことができるが、私が書いたときin、壊れたパイプを言及する出力が得られ、その後のすべての通信は死んでいるように見える。考え? (関連:私はもともと使用しました: netcat foo.bar.org 4000 < out > in & しかし、入力待ちをブロックすることがわかりました。私もこれに興味がありますが、おそらく別の質問で対処した方が良いでしょう。)
15 bash  pipe  tcp  netcat 

1
bashの意味-i>&/ dev / tcp / HOST / PORT 0>&1?
私は試した bash -i >& /dev/tcp/HOST/PORT 0>&1 ただし、ファイアウォールの背後では機能しないようです。このコードは実際に何をしますか、どのポートが転送され、ファイアウォールの背後で動作するでしょうか?

4
非標準ポートでSSHを使用してSVN / SSHを構成する方法
SSHをポート20000に設定しました。試してみると: svn co svn+ssh://server.com:20000/home/svn/proj1 proj1 --username jm 私は得る svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file. svn: Network connection closed unexpectedly SVNにポート20000も使用するように指示する必要があると思いますか? Ubuntu 11.10を使用しています
14 ssh  tcp  subversion 


6
SSHでログインするポートを決定するにはどうすればよいですか?
しばらく前にセットアップしたUbuntu 10.04サーバーがリモートでセットアップされています。ユーザー名とパスワードを記録している間、私は賢いようで、通常のsshポートを22から...他のものに変更しました。 そのポートが何であるかを調べるにはどうすればよいですか? ホスティング会社のバックドアを介してサーバーにアクセスできるため、必要なUnixコマンドを実行できますが、マシンで通常のパテシェルを使用してログインすることはできません。
14 ssh  tcp 

1
これらのLinux TCPデフォルト設定はどのように決定されましたか?
最近、実稼働環境で問題を追跡するのにかなりの時間を費やしました。データベースサーバーが消失するとpoll()、接続されたクライアントが最大2時間ハングします(libpqクライアントライブラリでの呼び出しの待機)。問題を掘り下げると、切断されたTCP接続がタイムリーに通知されるように、これらのカーネルパラメーターを調整する必要があることに気付きました。 net.ipv4.tcp_keepalive_time = 7200 net.ipv4.tcp_keepalive_probes = 9 net.ipv4.tcp_keepalive_intvl = 75 net.ipv4.tcp_retries2 = 15 上記の4つの値はUbuntu 12.04マシンのものであり、これらのデフォルトは現在のLinuxカーネルのデフォルトから変更されていないようです。 これらの設定は、既存の接続を開いたままにしておくことに大きく偏っており、キープアライブプローブでは非常にけちです。AIUI、デフォルトtcp_keepalive_timeの2時間は、リモートホストへの応答を待っているときに、キープアライブプローブを開始して接続がまだ有効であることを確認するまで2時間辛抱強く待つことを意味します。そして、リモートホストがキープアライブプローブに応答しない場合、それらのキープアライブプローブを9回(tcp_keepalive_probes)、75秒間隔(tcp_keepalive_intvl)で再試行するため、接続が実際に停止していると判断するまでにさらに11分かかります。 これは、フィールドで見たものと一致します。たとえば、psqlリモートPostgreSQLインスタンスに接続されたセッションを開始し、いくつかのクエリが応答を待っている場合、たとえば SELECT pg_sleep(30); そして、リモートサーバーが恐ろしい死を迎える(たとえば、そのマシンへのトラフィックを落とす)ので、接続が停止していると判断するまで、最大2時間11分間psqlセッションが待機しています。ご想像のとおり、これらのデフォルト設定は、たとえばデータベースフェイルオーバーイベント中にデータベースと通信するコードに深刻な問題を引き起こします。これらのノブを下げることは大いに役立ちました!そして、これらのデフォルトの調整を推奨するのは私だけではありません。 だから私の質問は: デフォルトはどのくらいの期間でしたか? これらのTCP設定をデフォルトにする最初の理由は何ですか? Linuxディストリビューションはこれらのデフォルト値を変更しますか? そして、これらの設定の理論的根拠に関するその他の歴史や展望をいただければ幸いです。
13 linux  tcp  history 

1
D-Bus認証および許可
D-Busへのリモートアクセスを設定しようとしていますが、認証と承認がどのように機能するか(理解できない)を理解していません。 抽象ソケットでリッスンするD-Busサーバーがあります。 $ echo $DBUS_SESSION_BUS_ADDRESS unix:abstract=/tmp/dbus-g5sxxvDlmz,guid=49bd93b893fe40d83604952155190c31 私はdbus-monitor何が起こっているか見に走ります。私のテストケースはnotify-send hello、ローカルマシンから実行されたときに機能します。 同じマシン上の別のアカウントから、そのバスに接続できません。 otheraccount$ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-g5sxxvDlmz,guid=49bd93b893fe40d83604952155190c31 dbus-monitor Failed to open connection to session bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network …

1
閉じられた後、バインドされているTCPローカルソケットアドレスはどのくらいの間使用できなくなりますか?
Linux(私のライブサーバーはRHEL 5.5上にあります-以下のLXRリンクはカーネルバージョンへのリンクです)、man 7 ipと言います: バインドされたTCPローカルソケットアドレスは、SO_REUSEADDRフラグが設定されていない限り、閉じた後しばらく利用できません。 私は使用していませんSO_REUSEADDR。「いつか」はどれくらいですか?どのくらいの長さで、どのように変更できますか? 私はこれをあちこち探してみましたが、いくつかの情報を見つけましたが、どれもアプリケーションプログラマーの観点からこれを実際には説明していません。機知に: TCP_TIMEWAIT_LENでnet/tcp.h「TIME-WAIT状態を破壊するために待機する時間」であり、「約60秒」に固定されています / proc / sys / net / ipv4 / tcp_fin_timeoutは、「ソケットが当社側で閉じられた場合、FIN-WAIT-2状態にソケットを保持する時間」であり、「デフォルト値は60秒です」 私がつまずいているのは、TCPライフサイクルのカーネルモデルと利用できないポートのプログラマーモデルとの間のギャップを埋めることです。つまり、これらの状態が「いつか」に関係するかを理解することです。

2
「/ proc」を読んで、プロセスがポートを開いたかどうかを確認します
特定のPIDを持つプロセスが外部コマンドを使用せずにポートを開いたかどうかを知る必要があります。次に、/procファイルシステムを使用する必要があります。/proc/$PID/net/tcpたとえば、ファイルを読み取って、プロセスによって開かれたTCPポートに関する情報を取得できます。ただし、マルチスレッドプロセスでは、/proc/$PID/task/$TIDディレクトリにはnet/tcpファイルも含まれます。私の質問は: すべてのスレッドnet/tcpファイルを調べる必要がありますか、それともスレッドによって開かれたポートがプロセスnet/tcpファイルに書き込まれますか?
13 linux  tcp  proc  open-files 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.