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

は、同じホストオペレーティングシステム内で実行されているプロセス間でデータを交換するためのデータ通信エンドポイントです。

4
Debian Squeezeのシェルを介してUnixドメインソケットと通信するにはどうすればよいですか?
Debian Squeeze Webサーバーを実行しています。memcachedをインストール/tmp/memcached.sockし、同じサーバー上にあるWebサイトからメッセージを受信するだけでよいため、memcachedがUnixドメインソケット(で)をリッスンするように構成しました。 それはうまく機能しているようですが、シェルを介してmemcachedと通信し、私が思っていることを実行していることを確認したいと思います。 memcachedは、単純なASCIIプロトコルを介してメッセージを受け入れます(正しく理解している場合)。TCP / IPでリッスンしている場合、たとえばnc次のようにメッセージを送信できます。 $ echo "stats settings" | nc localhost 11211 しかし、代わりにそのテキストをドメインソケットに送信する方法がわかりません。 私のラップトップ(OS X Lionを実行)では、両方ncとドメインソケットを使用するtelnetオプション(-Uおよび-uそれぞれ)があります。ただし、私のDebian Squeeze Webサーバーには、これらのオプションはありません。
99 shell  debian  socket  telnet 

7
このUnixソケットペアのもう一方の端は誰ですか?
UNIXソケットのもう一方の端があるプロセスを判別したい。 具体的には、で作成されたものについて尋ねてsocketpair()いますが、問題はどのUNIXソケットでも同じです。 、およびparentを作成するプログラムがあります。親プロセスは閉じて、通信を続けます。子供は反対のことをします。次に、子は別のプログラムを実行します。2人は、このソケットペアを介して相互に通信できます。socketpair(AF_UNIX, SOCK_STREAM, 0, fds)fork()fds[1]fds[0]close(fds[0]); s=fds[1]exec()child1 さて、私は誰parentが知っているとしましょうが、私は誰が誰かを知りたいと思いchild1ます。どうすればいいですか? 私が自由に使えるツールはいくつかありますが、どのプロセスがソケットの反対側にあるのかを知ることはできません。私が試してみました: lsof -c progname lsof -c parent -c child1 ls -l /proc/$(pidof server)/fd cat /proc/net/unix 基本的に、2つのソケットとそれらに関するすべてを見ることができますが、それらが接続されていることはわかりません。親のどのFDがどの子プロセスと通信しているかを判断しようとしています。

6
ソケットとは何ですか?
誰かが私にソケットとは何かを説明できますか?SSLなどの文脈で多くの頭字語で見られます。 また、なぜソケットと呼ばれるのですか?純粋に彼らが発明した名前だったからですか?それとも彼らが思いついた最初の名前でしたか?

2
UNIXソケットとTCPポートのパフォーマンス
php-fpmの例: #listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sock TCPポートでUNIXソケットベースのリスナーを使用する場合、パフォーマンスに大きな違いはありますか?(PHPだけでなく、一般的なものです。サービスごとに異なりますか?)

2
/ proc / PID / fd / Xリンク番号
Linuxでは、で/proc/PID/fd/X、パイプまたはソケットであるファイル記述子のリンクには、次のような番号があります。 l-wx------ 1 user user 64 Mar 24 00:05 1 -> pipe:[6839] l-wx------ 1 user user 64 Mar 24 00:05 2 -> pipe:[6839] lrwx------ 1 user user 64 Mar 24 00:05 3 -> socket:[3142925] lrwx------ 1 user user 64 Mar 24 00:05 4 -> socket:[3142926] lr-x------ 1 user user 64 …


5
FIFO、パイプ、UnixドメインソケットはLinuxカーネルでも同じですか?
FIFOは名前付きパイプだと聞きました。そして、それらはまったく同じセマンティクスを持っています。一方、Unixドメインソケットはパイプに非常に似ていると思います(使用したことはありませんが)。だから、彼らはすべてLinuxカーネルの同じ実装を参照しているのだろうか。何か案が?

3
アプリケーション用にポートを予約するにはどうすればよいですか?
カスタムアプリケーション用にポートのリストを予約するにはどうすればよいですか? 具体的には、私が作成している製品には多くのプロセスとそれらの間の相互通信があります。 私が抱えている問題は、OSが時々ポートを盗むことです。それはまれですが、それは起こります。 これは、別のアプリケーションがポートを指定せずに「:: bind」を使用したことが原因である可能性があります。 または、バインドされていないソケットで ":: connect"を呼び出すと、自分のアプリケーションがポートを盗むことがあります。manページからわかるように: ソケットがまだローカルアドレスにバインドされていない場合、connect()は、ソケットのアドレスファミリがAF_UNIXでない限り、未使用のローカルアドレスであるアドレスにバインドします。 だから私の質問は、OSがそれらを使用しないように必要なポートを予約できますか?これは/ etc / servicesで実現できますか?または別の方法がありますか?
29 tcp  udp  socket 

3
TCP / IPソケットが「オープンファイル」と見なされるのはなぜですか?
Linuxの基本概念であると確信していること、つまりオープンファイルの制限を把握するための支援が必要です。特に、開いているソケットがシステム上の「開いているファイル」の総数にカウントされる理由について混乱しています。 誰かがその理由を詳しく説明してもらえますか?これはおそらくLinuxの「すべてがファイルである」という原則全体に戻っていることを理解していますが、追加の詳細は歓迎されます。

4
サーバーは、どのクライアントポートに送信するかをどのように見つけますか?
私が理解しているように、これはクライアントが接続要求を行ったときに起こることです: サーバーは特定のポート番号にバインドされます。ポート番号は常にリスニングプロセスにバインドされます。サーバーのみが着信接続をリッスンしているため、クライアント側でバインドする必要はありません。 サーバーはそのポート番号でlisteninigを継続します。 クライアントはconnect()リクエストを送信します。 サーバーはを使用してリクエストを受け入れますaccept()。サーバはクライアントの要求を受け入れるとすぐに、カーネルはさらに、サーバーのためのポート番号をランダムに割り当てとしてsend()およびreceive()サーバー上の同じポート番号を聞くだけでなく、送信するために使用することはできない、と以前のポートがまだあることから、新しい接続をリッスンする 以上のことを考えると、サーバーはクライアントが受信しているポートをどのようにして見つけるのでしょうか?クライアントが送信元ポートと宛先ポートを使用してTCPセグメントを送信することを知っているので、サーバーはそのセグメントの送信元ポートを宛先ポートとして使用しますが、サーバーはそのポートを見つけるためにどの関数を呼び出しますか?それはaccept()?
26 tcp  socket 

4
Unixインターネットソケットファイルはありますか?
「すべてがファイル」はUnixの主要な概念の1つであることを理解していますが、ソケットはカーネルによって提供されるさまざまなAPI(ソケット、sendto、recvなど)を使用し、通常のファイルシステムインターフェイスとは異なります。 この「すべてがファイル」は、ここでどのように適用されますか?

3
各ソケットのファイルはありますか?
UNIXの世界では「すべてがファイル」です。 上記の文は有名です。実行するecho "hello programmer" >> /dev/tty1とTeleType 1 、...で指定された文字列を見ることができます。 各ファイルはどこにありますsocketか?友人が私のPCに接続し、そのIPがh.h.h.hである場合、それぞれのファイルにどのようにアクセスできますか?出来ますか?
21 files  kernel  socket 

2
TCPソケットをタイムアウトにする方法
サーバー環境のネットワーク大災害シミュレーションのために、TCPソケットを意図的にタイムアウトにする方法を探しています。既存のソケットに簡単な方法はありますか?また、小さなCテストケースプログラムはプラスになります。 TCPバッファーの読み取り中にネットワークインターフェイスを停止し、マウントされていないリソース(samba)から読み取りを試みました。 テストサーバーはUbuntu 12.04.4。です。
20 socket  timeout 

2
ソケットパスの長さが100文字に制限されているのはなぜですか?
Unixシステムでは、パス名には通常、長さの制限はほとんどありません(Linuxでは4096文字)...ソケットファイルのパスは100文字(Linuxでは 107文字)に制限されています。 最初の質問:なぜそんなに低い制限があるのか​​? 私はそれはいくつかのソケットが同じパスを使用して、すべてのファイルを現在の作業ディレクトリを変更し、さまざまなディレクトリに作成することによって、この制限を回避することが可能と思われることを確認しました./myfile.sockクライアントアプリケーションが正しく偶数かかわらず、期待されるサーバプロセスに接続するように見える:lsofショーのすべて同じソケットファイルパスでリッスンします。 この回避策は信頼性がありますか、それとも私は幸運でしたか? この動作はLinux固有のものですか、またはこの回避策は他のUnixにも適用できますか?

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 

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