TCP / IPプロトコルはクライアントをどのように区別しますか?

TCP / IPプロトコルはクライアントをどのように区別しますか?

リスニングソケットを作成すると、ディスクリプタ(ルートディスクリプタであると仮定)を返し、そのディスクリプタをアドレスにバインドします。新しいクライアント接続が可能になるたびに、ルート記述子は私たちに通知し、新しい接続を受け入れ、各クライアントに固有の記述子(クライアント記述子であると仮定)を受け取ります。これから、この記述子を使用してこのクライアントと通信できます。クライアント情報は、クライアント記述子が指す別の inode に保存されます。したがって、Linux はそのクライアントデータをその記述子に渡すことができます。

上記の内容が正しい場合(間違って理解した場合は訂正してください)、質問があります。 inodeに保存されているクライアント情報は何ですか? Linuxはどのようにクライアントを一意に識別しますか?

ベストアンサー1

TCP / IPおよびUDP / IPプロトコルは、ローカルおよびリモートのIPアドレスとポートによって定義された「セッション」を認識します[1]。たとえば、TCP / IPパケットには送信元と宛先のIPアドレスとポートが含まれています[2]。複数の接続を開くサーバーまたはクライアント(Firefoxなど)は、OSI [3]セッション層のアドレスとポートに分けられます。

Webブラウザを使用する場合は、シェルを開き、rootとして実行します。

netstat -tulpan

現在およびアクティブな接続を表示します[4]。

出力例:

# netstat -tulpan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1966/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1902/cupsd          
tcp        0      0 192.168.1.16:57374      172.217.23.165:443      ESTABLISHED 4730/firefox-bin     
tcp        0      0 192.168.1.16:55478      104.26.11.30:443        ESTABLISHED 4730/firefox-bin     
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1996/named          

この行は、Firefoxがどのパケットがどの要求に応答するかを識別できるように、さまざまなローカルポートへのFirefoxの「設定済み」接続を示しています。

LISTEN 状態の他の行は、sshd(Secure Shell Server)、cupsd(Printer Daemon)、named(Bind Name Server) を含むサーバープロセスとして実行されるローカルプログラムです.これにより、着信接続が許可されます。

その他の参考資料をご覧ください。

[1]https://en.wikipedia.org/wiki/Port_(コンピュータ_ネットワーキング)

[2]https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structまたhttps://en.wikipedia.org/wiki/IPv4_header#Header

[サム]https://en.wikipedia.org/wiki/OSI_model

[4]https://en.wikipedia.org/wiki/Netstat

おすすめ記事