開発者ドキュメント

ソケットを理解する

序章

ソケットは、サーバー上で実行されているプログラム間、または別々のサーバー上で実行されているプログラム間のプロセス間通信を可能にする方法です。 サーバー間の通信は、ネットワークソケットに依存します。このソケットは、インターネットプロトコル(IP)を使用して、データの送受信をカプセル化および処理します。

クライアントとサーバーの両方のネットワークソケットは、ソケットアドレスによって参照されます。 アドレスは、伝送制御プロトコル(TCP)やユーザーデータグラムプロトコル(UDP)などのトランスポートプロトコル、IPアドレス、およびポート番号の一意の組み合わせです。

このチュートリアルでは、プロセス間通信に使用される次のさまざまなタイプのソケットについて学習します。

このチュートリアルの各セクションでは、Linuxシステムでそれぞれのソケットタイプを列挙する方法も学習します。 さまざまなコマンドラインツールを使用して、各タイプのソケットを調べます。

前提条件

このチュートリアルの例は、Ubuntu20.04サーバーで検証されています。 ディストリビューションに必要な各ツールの同等のバージョンがインストールされている限り、ローカルコンピューターまたはリモートサーバーで最新のLinuxディストリビューションを使用してこのチュートリアルに従うことができます。

Ubuntu 20.04の使用を開始するには、 Ubuntu20.04の初期サーバーセットアップガイドに従って構成された1台のサーバーが必要です。

また、システムのソケットを調べるために、他のいくつかのパッケージが必要になります。 を使用して、システムのパッケージキャッシュが最新であることを確認します。 apt update 指図:

  1. sudo apt update

次に、次のコマンドを使用して必要なパッケージをインストールします。

  1. sudo apt install iproute2 netcat-openbsd socat

The iproute2 パッケージには、 ss ユーティリティ。これは、ソケットを検査するために使用します。 を使用します netcat-openbsd netcatをインストールするためのパッケージ。 netcatは次のように省略されていることに注意してください nc コマンドラインで呼び出されたとき。 最後に、 socat サンプルソケットを作成するためのパッケージ。

ストリームソケットとは何ですか?

ストリームソケットはコネクション型です。つまり、ネットワークソケットとの間で送受信されるパケットは、アプリケーションで処理するためにホストオペレーティングシステムによって配信されます。 ネットワークベースのストリームソケットは通常、伝送制御プロトコル(TCP)を使用して、ネットワークインターフェイスを介してデータをカプセル化して送信します。

TCPは、ステートフル接続に依存する信頼性の高いネットワークプロトコルになるように設計されています。 TCPベースのストリームソケットを使用してプログラムによって送信されたデータは、リモートシステムによって正常に受信されます(ルーティング、ファイアウォール、またはその他の接続の問題がないことを前提としています)。 TCPパケットは、物理ネットワークインターフェイスに任意の順序で到着できます。 パケットが順不同で到着した場合、ネットワークアダプタとホストオペレーティングシステムは、アプリケーションで処理するためにパケットが正しい順序で再構築されることを保証します。

TCPベースのストリームソケットの一般的な使用法は、ApacheやNginxなどのWebサーバーがポートでHTTP要求を処理する場合です。 80、またはポートのHTTPS 443. HTTPの場合、ソケットアドレスは次のようになります。 203.0.113.1:80、HTTPSの場合は次のようになります 203.0.113.1:443.

TCPベースのストリームソケットの作成

次の例では、 socat (略して SOcket CAT)ポート8080(代替HTTPポート)でHTTP要求をリッスンするWebサーバーをエミュレートするコマンド。 次に、を使用してソケットを調べます ss、 と nc コマンド。

まず、以下を実行します socat ポートで接続をリッスンする2つのTCPベースのソケットを作成するコマンド 8080、IPv4およびIPv6インターフェースを使用:

  1. socat TCP4-LISTEN:8080,fork /dev/null&
  2. socat TCP6-LISTEN:8080,ipv6only=1,fork /dev/null&

次のような出力が表示されます。これは、2つを示しています。 socat シェルセッションのバックグラウンドで実行されているプロセスID。 プロセスIDは、ここで強調表示されているものとは異なります。

Output
[1] 434223 [2] 434224

これで2つあります socat TCPポートでリッスンしているプロセス 8080 バックグラウンドで、を使用してソケットを調べることができます ssnc ユーティリティ。

TCPベースのストリームソケットの調査

を使用して最新のLinuxシステムでTCPソケットを調べるには ss コマンドを実行し、次のフラグを指定して実行し、出力を制限します。

最初に実行します ss -4 -tln システム上の接続をリッスンしているIPv4TCPベースのソケットを調べるコマンド:

  1. ss -4 -tln

次のような出力が表示されます。

Output
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . . LISTEN 0 1 0.0.0.0:8080 0.0.0.0:* . . .

システムで実行されているサービスによっては、出力に他のポートを持つ他の回線が存在する場合があります。 強調表示 0.0.0.0:8080 出力の一部は、IPv4TCPソケットがポートで使用可能なすべてのIPv4インターフェイスをリッスンしていることを示しています 8080. 特定のIPv4アドレスのみをリッスンしているサービスは、たとえば、強調表示されたフィールドにそのIPのみを表示します。 203.0.113.1:8080.

今同じを実行します ss もう一度コマンドしますが、 -6 国旗:

  1. ss -6 -tln

次のような出力が表示されます。

Output
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . . LISTEN 0 5 [::]:8080 [::]:* . . .

システムで実行されているサービスによっては、出力に他のポートを持つ他の回線が存在する場合があります。 強調表示 [::]:8080 出力の一部は、IPv6TCPソケットがポートで使用可能なすべてのIPv6インターフェイスをリッスンしていることを示しています 8080 (によって示されるように :: 文字。すべてゼロで構成されるアドレスのIPv6表記です)。 特定のIPv6アドレスのみをリッスンしているサービスでは、たとえば、強調表示されたフィールドにそのIPのみが表示されます。 [2604:a880:400:d1::3d3:6001]:8080.

TCPベースのストリームソケットへの接続

これまで、IPv4インターフェイスとIPv6インターフェイスの両方でTCPソケットを作成および列挙する方法を学習しました。 接続をリッスンする2つのソケットがあるので、netcatユーティリティを使用してソケットへの接続を試すことができます。

netcatを使用してローカルおよびリモートソケットへのTCP接続をテストすることは、システム間の接続とファイアウォールの問題を切り分けるのに役立つ非常に便利なトラブルシューティング手法です。

netcatを使用してローカルループバックアドレスを介してIPv4ソケットに接続するには、次のコマンドを実行します。

  1. nc -4 -vz 127.0.0.1 8080

次のような出力が表示されます。

Output
Connection to 127.0.0.1 (127.0.0.1) 8080 port [tcp/http-alt] succeeded!

強調表示されている行は、netcatからの出力です。 これは、netcatがTCPソケットに接続してループバックをリッスンしていることを示しています 127.0.0.1 ポートのIPv4アドレス 8080. 2行目は無視してかまいません。これは、端末のバックグラウンドで実行されているsocatプロセスからのものです。

これで、同じ接続テストを繰り返すことができますが、IPv6を使用します。 次のnetcatコマンドを実行します。

  1. nc -6 -vz ::1 8080

次のような出力を受け取るはずです。

Output
Connection to ::1 8080 port [tcp/http] succeeded!

強調表示されている行は、netcatからの出力です。 これは、netcatがTCPソケットに接続してループバックをリッスンしていることを示しています ::1 ポートのIPv6アドレス 8080. ここでも、出力の2行目を無視できます。

ソケットをクリーンアップするには、を実行する必要があります fg 作成した各socatプロセスの(フォアグラウンド)コマンド。 次に、を使用します CTRL+C 各socatを閉じます。 fg プロセスを実行したのとは逆の順序でターミナルのフォアグラウンドに移動します。したがって、プロセスを実行すると、2番目のプロセスが実行されます。 socat インスタンスは、最初に対話するインスタンスになります。

走る fg 2番目のIPv6socatインスタンスを端末のフォアグラウンドに移動します。 次に実行します CTRL+C それを閉じます。

  1. fg

次のような出力が表示されます。

Output
socat TCP6-LISTEN:8080,ipv6only=1,fork /dev/null

プレス CTRL+C プロセスを停止します。

今すぐ実行 fg もう一度、最初のIPv4ソケットをクリーンアップします。 次のような出力が必要です。

Output
socat TCP4-LISTEN:8080,fork /dev/null

プレス CTRL+C プロセスを停止します。

これで、システムのIPv4およびIPv6ソケットが作成、調査、および接続されました。 これらの手法とツールは、ローカル開発システムまたはリモート実稼働サーバーで機能するため、各ツールを試して、TCPソケットのテストとトラブルシューティングにどのように使用できるかを理解してください。

データグラムソケットとは何ですか?

データグラムソケットはコネクションレス型です。つまり、ソケットとの間で送受信されるパケットは、アプリケーションによって個別に処理されます。 ネットワークベースのデータグラムソケットは通常、ユーザーデータグラムプロトコル(UDP)を使用してデータをカプセル化および送信します。

UDPはパケットヘッダーのシーケンス情報をエンコードせず、プロトコルに組み込まれているエラー訂正はありません。 データグラムベースのネットワークソケットを使用するプログラムは、データ送信を成功させるために、独自のエラー処理およびデータ順序付けロジックを組み込む必要があります。

UDPソケットは、ドメインネームシステム(DNS)サーバーで一般的に使用されています。 デフォルトでは、DNSサーバーはポートを使用します 53 ドメイン名のクエリを送受信します。 DNSサーバーのUDPソケットアドレスの例は次のようになります。 203.0.113.1:53.

:プロトコルは人間が読める形式のソケットアドレスには含まれていませんが、オペレーティングシステムは、アドレスの一部としてTCPプロトコルとUDPプロトコルを含めることでソケットアドレスを区別します。 したがって、人間が読める形式のソケットアドレスは次のようになります。 203.0.113.1:53 どちらのプロトコルを使用している可能性もあります。 のようなツール ss、および古い netstat ユーティリティは、使用されているソケットの種類を判別するために使用されます。

ネットワークタイムプロトコル(NTP)は、ポートでUDPソケットを使用します 123 コンピュータ間でクロックを同期します。 NTPプロトコルのUDPソケットの例は次のとおりです。 203.0.113.1:123.

データグラムソケットの作成

前のTCPソケットの例と同様に、このセクションでは使用します socat 再度、UDPポートで要求をリッスンするNTPサーバーをエミュレートします 123. 次に、を使用して作成したソケットを調べます。 ssnc コマンド。

まず、以下を実行します socat IPv4およびIPv6インターフェイスを使用して、ポート123で接続をリッスンする2つのUDPソケットを作成するコマンド:

  1. sudo socat UDP4-LISTEN:123,fork /dev/null&
  2. sudo socat UDP6-LISTEN:123,ipv6only=1,fork /dev/null&

次のような出力が表示されます。これは、2つを示しています。 socat シェルセッションのバックグラウンドで実行されているプロセスID。 プロセスIDは、ここで強調表示されているものとは異なります。

Output
[1] 465486 [2] 465487

これで2つあります socat UDPポートでリッスンしているプロセス 123、を使用してソケットを調べることができます ssnc ユーティリティ。

データグラムソケットの調査

を使用して最新のLinuxシステムでUDPソケットを調べるには ss コマンド、次のコマンドで実行します -4、-6, and 出力を制限するuln`フラグ:

The u フラグは、出力をUDPソケットに制限します。 その他のフラグは、前のTCPの例で使用されたものと同じです。

最初に実行します ss -4 -uln システム上の接続をリッスンしているIPv4UDPソケットを調べるコマンド:

  1. ss -4 -uln

次のような出力が表示されます。

Output
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . . UNCONN 0 0 0.0.0.0:123 0.0.0.0:* . . .

システムで実行されているサービスによっては、出力に他のポートを持つ他の回線が存在する場合があります。 強調表示 0.0.0.0:123 出力の一部は、IPv4UDPソケットがポートのすべてのIPv4インターフェイスで使用可能であることを示しています 123. 特定のIPv4アドレスでのみ利用可能なサービスでは、たとえば、強調表示されたフィールドにそのIPのみが表示されます。 203.0.113.1:123.

今同じを実行します ss もう一度コマンドしますが、 -6 国旗:

  1. ss -6 -uln

次のような出力が表示されます。

Output
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . . UNCONN 0 0 [::]:123 [::]:* . . .

システムで実行されているサービスによっては、出力に他のポートを持つ他の回線が存在する場合があります。 強調表示 [::]:123 出力の一部は、IPv6TCPソケットがポートのすべてのIPv6インターフェイスで使用可能であることを示しています 123 (によって示されるように :: 文字)。 特定のIPv6アドレスでのみ利用可能なサービスでは、たとえば、強調表示されたフィールドにそのIPのみが表示されます。 [2604:a880:400:d1::3d3:6001]:123.

データグラムソケットのテスト

IPv4インターフェイスとIPv6インターフェイスの両方でUDPソケットを作成および列挙する方法に精通しているので、それらに接続して実験することができます。 TCPソケットと同様に、netcatユーティリティを使用してUDPソケットを試すことができます。

ポートでサンプルUDPソケットに接続するには 123 このチュートリアルの前のセクションで作成したもので、次のnetcatコマンドを実行します。

  1. nc -4 -u -vz 127.0.0.1 123

次のような出力が表示されます。

Output
Connection to 127.0.0.1 123 port [udp/ntp] succeeded!

出力は、netcatがループバックをリッスンしているUDPソケットからエラーを受信しなかったことを示しています 127.0.0.1 ポートのIPv4アドレス 123. このエラー応答の欠如は、ソケットが 127.0.0.1:123 利用可能です。 この動作は、ソケットが使用可能かどうかを確認するためにパケットを交換する必要があるTCPソケットとは異なります。

注:この例のソケットが使用できない場合、リモートシステムはコード3ICMPタイプ3メッセージ(宛先到達不能)を返します。これは、ポートが到達不能であることを示します。リモートホスト。

エラー応答の欠如に基づいてソケットが使用可能であると推測することは、ICMPトラフィックをブロックしているファイアウォールまたは接続の問題がないことを前提としています。 UDPソケットを介してアプリケーションデータを送信、受信、および検証しない限り、リモートUDPポートが開いてパケットを受け入れるという保証はありません。

これで、同じ接続テストを繰り返すことができますが、IPv6を使用します。 次のnetcatコマンドを実行します。

  1. nc -6 -u -vz ::1 123

次のような出力を受け取るはずです。

Output
Connection to ::1 123 port [udp/ntp] succeeded!!

出力は、netcatがループバックをリッスンしているUDPソケットからエラーを受信しなかったことを示しています ::1 ポートのIPv6アドレス 123. 繰り返しになりますが、このエラー応答の欠如は、 ::1:123 利用可能です。

ソケットをクリーンアップするには、を実行する必要があります fg 作成した各socatプロセスの(フォアグラウンド)コマンド。 次に、を使用します CTRL+C 各socatを閉じます。

走る fg 2番目のIPv6を導入する socat ターミナルのフォアグラウンドへのインスタンス。 次に実行します CTRL+C それを閉じます。

  1. fg

次のような出力が表示されます。

Output
sudo socat UDP6-LISTEN:123,ipv6only=1,fork /dev/null

プレス CTRL+C プロセスを停止します。

今すぐ実行 fg もう一度、最初のIPv4ソケットをクリーンアップします。 次のような出力が得られます。

Output
sudo socat UDP4-LISTEN:123,fork /dev/null

プレス CTRL+C プロセスを停止します。

これで、システムでIPv4およびIPv6 UDPソケットを作成、調査、およびテストしました。 各ツールを試して、UDPソケットのテストとトラブルシューティングにどのように使用できるかを理解してください。

Unixドメインソケットとは何ですか?

同じサーバー上で実行されるプログラムは、Unixドメインソケット(UDS)を使用して相互に通信することもできます。 Unixドメインソケットは、ストリームベースまたはデータグラムベースにすることができます。 ドメインソケットを使用する場合、データは、ホストファイルシステム上のファイルを介して、オペレーティングシステムのカーネル内のプログラム間で直接交換されます。 ドメインソケットを使用してデータを送受信するには、プログラムはネットワークベースのソケットとプロトコルを完全にバイパスして、共有ソケットファイルの読み取りと書き込みを行います。

Unixドメインソケットは、ネットワークインターフェイスに接続する必要のないデータベースシステムで広く使用されています。 たとえば、Ubuntu上のMySQLは、デフォルトで次の名前のファイルを使用します。 /var/run/mysqld/mysql.sock ローカルクライアントとの通信用。 クライアントは、MySQLサーバー自体と同様に、ソケットからの読み取りとソケットへの書き込みを行います。

PostgreSQLは、ローカルの非ネットワーク通信にソケットを使用する別のデータベースシステムです。 通常、デフォルトで使用します /run/postgresql/.s.PGSQL.5432 そのソケットファイルとして。

Unixドメインソケットの作成

前のセクションでは、TCPがストリームソケットでどのように使用されるか、およびUDPがデータグラムソケットでどのように使用されるかについて説明しました。 このセクションでは、 socat TCPまたはUDPを使用せずに、ストリームベースとデータグラムベースの両方のUnixドメインソケットを作成して、ネットワーク経由で送信するデータをカプセル化します。 次に、を使用して作成したソケットを調べます。 ss、 と nc コマンド。 最後に、netcatを使用したUnixドメインソケットのテストについて学習します。

開始するには、次を実行します socat 2つのソケットファイルを作成するコマンド:

  1. socat unix-listen:/tmp/stream.sock,fork /dev/null&
  2. socat unix-recvfrom:/tmp/datagram.sock,fork /dev/null&

2つのUDSソケットを作成したので、次を使用してそれらを調べることができます。 ssnc ユーティリティ。

Unixドメインソケットの調査

リスニングしているすべてのUnixドメインソケットを一覧表示するには、 ss -xln 指図。 The x フラグは、ドメインソケットのみが表示されることを保証します。

  1. ss -xln

次のような出力が表示されます。

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . . u_str LISTEN 0 5 /tmp/stream.sock 436470 * 0 u_dgr UNCONN 0 0 /tmp/datagram.sock 433843 * 0 . . .

強調表示されていることに注意してください u_str の一部 /tmp/stream/sock ライン。 このフィールドは、ソケットタイプがストリームベースのUDSであることを示します。 2行目は、タイプが u_dgr これは、ソケットタイプがデータグラムベースであることを意味します。

Unixドメインソケットはファイルであるため、通常のLinuxユーザーおよびグループのアクセス許可とアクセス制御を使用して、ソケットに接続できるユーザーを制限できます。 次のようなファイルシステムツールを使用することもできます ls, mv, chownchmod UDSファイルを調べて操作します。 SELinuxなどのツールを使用して、UDSファイルにさまざまなセキュリティコンテキストでラベルを付けることもできます。

ファイルがUDSソケットであるかどうかを確認するには、 ls, file また stat ユーティリティ。 ただし、これらのツールはいずれも、UDSがストリームベースかデータグラムベースかを判断できないことに注意してください。 使用 ss Unixドメインソケットに関する最も完全な情報のためのツール。

ファイルシステム上のソケットを調べるには、 stat ユーティリティは、最も関連性の高い情報を表示します。 以前に作成したソケットで実行します。

  1. stat /tmp/stream.sock /tmp/datagram.sock

次のような出力が表示されます。

Output
File: /tmp/stream.sock Size: 0 Blocks: 1 IO Block: 131072 socket Device: 48h/72d Inode: 1742 Links: 1 Access: (0755/srwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2021-03-01 18:10:25.025755168 +0000 Modify: 2021-03-01 18:10:25.025755168 +0000 Change: 2021-03-01 18:22:42.678231700 +0000 Birth: - File: /tmp/datagram.sock Size: 0 Blocks: 1 IO Block: 131072 socket Device: 48h/72d Inode: 1743 Links: 1 Access: (0755/srwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2021-03-01 18:10:25.025755168 +0000 Modify: 2021-03-01 18:10:25.025755168 +0000 Change: 2021-03-01 18:10:25.025755168 +0000 Birth: -

各ファイルのタイプは次のとおりです。 socket (出力の右端で強調表示されています)アクセスモードには s ファイルの権限の前にある文字。

The ls ユーティリティは、ファイルがソケットであるかどうかも示します。 走る ls -l ファイルを調べるには:

  1. ls -l /tmp/stream.sock /tmp/datagram.sock

次のような出力が表示されます。 ソケットの場合、ファイルモードには s ファイル許可フィールドの前の文字:

Output
srwxr-xr-x 1 root root 0 Mar 1 18:10 /tmp/datagram.sock srwxr-xr-x 1 root root 0 Mar 1 18:10 /tmp/stream.sock

これで、Unixドメインソケットを作成し、を使用してそれらを調べる方法を学びました。 ss さまざまなファイルシステムベースのツールの場合、次のステップは、netcatなどのツールを使用してソケットをテストすることです。

Unixドメインソケットのテスト

netcatユーティリティを使用して、Unixドメインソケット、およびこのチュートリアルの前半ですでに学習したTCPおよびUDPソケットに接続できます。 作成したサンプルソケットに接続するには、追加のソケットを指定する必要があります -U netcatコマンドの実行時にフラグを立てます。 このフラグは、TCPまたはUDPベースのネットワークソケットではなく、UDSに接続するようにnetcatに指示します。

さらに、ソケットがデータグラムベースの場合は、 -u このチュートリアルの「データグラムソケット」セクションで学習したように、netcatにデータグラムを使用するように指示するフラグ。

次のコマンドを使用してストリームベースのソケットに接続することにより、UDSソケットの調査を開始しましょう。

  1. nc -U -z /tmp/stream.sock

The -U Unixドメインソケットに接続していることをnetcatに通知します。 –z オプションは、netcatがデータを送信せずにソケットにのみ接続することを保証します。 The /tmp/stream.sock ファイルシステム上のソケットのアドレスです。

コマンドを実行しても、netcatからの出力はありません。 ただし、ソケットが使用できない場合、netcatは次のようなエラーメッセージを出力します。

Output
nc: unix connect failed: No such file or directory nc: /tmp/stream.sock: No such file or directory

したがって、ストリームベースのUDSソケットをテストするときにnetcatからの出力がないということは、接続が成功したことを意味します。

今回はデータグラムベースのUDSについて、テストプロセスを繰り返します。

  1. nc -uU -z /tmp/datagram.sock

追加 -u リモートソケットがデータグラムソケットであることをnetcatに通知するためにフラグが追加されます。 この場合も、テストが成功した場合、出力は送信されません。

アドレスにソケットがない場合は、次のようなエラーが発生します。

Output
nc: unix connect failed: No such file or directory nc: /tmp/datagram.sock: No such file or directory

ソケットをクリーンアップするには、を実行する必要があります fg 作成した各socatプロセスの(フォアグラウンド)コマンド。 次に、を使用します CTRL+C 各socatを閉じます。

走る fg データグラムベースをもたらす socat ターミナルのフォアグラウンドへのインスタンス:

  1. fg

次のような出力が表示されます。

Output
socat unix-recvfrom:/tmp/datagram.sock,fork /dev/null

走る CTRL+C それを閉じます。 出力は受信されません。

今すぐ実行 fg もう一度、最初のストリームベースのUDSソケットをクリーンアップします。

ここでも、次のような出力が必要です。

Output
socat unix-listen:/tmp/stream.sock,fork /dev/null

走る CTRL+C プロセスを終了します。 出力は受信されません。

これで、システム上でUnixデータグラムソケットソケットを作成、調査、およびテストしました。 netcatで実験してみてください socat UDSを介してデータを送受信する方法、およびUnixドメインソケットをテストおよびトラブルシューティングする方法をよりよく理解するため。

結論

このチュートリアルでは、Linuxシステムでさまざまな種類のソケットがどのように使用されるかを調べました。 通常、ネットワーク通信にTCPを使用するストリームベースのソケットについて学習しました。 また、UDPを使用してネットワーク経由でデータを送信するデータグラムベースのソケットについても学びました。 最後に、Unixドメインソケットをローカルサーバーに基づいてストリームまたはデータグラムベースにする方法を検討しました。

各セクションで使用した ss Linuxシステムのソケットに関する情報を収集するユーティリティ。 さまざまなフラグがどのように ss ツールが提供するものは、システム上のソケットを調べるときに、その出力を特定のタイプのソケットに制限するのに役立ちます。

最後に、netcatを使用して socat このチュートリアルで説明する3つの異なるタイプのソケットのそれぞれを作成して接続するためのツール。 netcatユーティリティは、ソケットへの接続に広く使用されていますが、ソケットを作成することもできます。 そのドキュメント(man nc)には、どちらのモードでも使用できる例が多数含まれています。 The socat ユーティリティは、このチュートリアルでカバーされていない多くの異なるタイプのソケットに接続するために使用できる、より高度なツールです。 そのドキュメント(man socat)には、さまざまな使用方法の例も多数含まれています。

ソケットとは何か、およびソケットがどのように機能するかを理解することは、コアシステム管理スキルです。 このチュートリアルで実験したツールと手法は、ソケットについて理解を深め、サーバーとアプリケーションが相互に正しく通信していない場合にソケットのトラブルシューティングを行う方法を理解するのに役立ちます。

モバイルバージョンを終了