コマンドを実行しましたがsudo lsof -i -n -P | grep TCP
、その出力についてさらに明確にすることができるかどうか疑問に思っていました。
具体的には、この画像では:
IP:PORT が別の IP:PORT を指しているのに、'ESTABLISHED' というラベルでそれ自体に戻るのはなぜですか? これが正確に何を意味するのか混乱しています。
コマンドを実行しましたがsudo lsof -i -n -P | grep TCP
、その出力についてさらに明確にすることができるかどうか疑問に思っていました。
具体的には、この画像では:
IP:PORT が別の IP:PORT を指しているのに、'ESTABLISHED' というラベルでそれ自体に戻るのはなぜですか? これが正確に何を意味するのか混乱しています。
あなたがネットワーキングと TCP 全般にどれほど精通しているかはわかりませんが、いくつかの詳細を含む簡単な説明を提供しようと思います。あなたの質問から、あなたはネットワークの内部構造にあまり詳しくないように見えます。そのため、これらの概念のいくつかを理解するのは難しいかもしれませんが、これが役立つことを願っています:
TCP プロトコルにはさまざまな状態があります。ステートマシンと考えてください。クライアント側の状態にはCLOSED
、SYN_SENT
、ESTABLISHED
、FIN_WAIT_1
、FIN_WAIT_2
およびが含まれますTIME_WAIT
。
したがって、ESTABLISHED
ラベルは、TCP 接続がそのESTABLISHED
状態にあることを意味します。確立された状態にあるということは、両方のホストが TCP 3 ウェイ ハンドシェイクを正常に完了したことを意味します (その際に、 から に移行しSYN_SENT
ましたESTABLISHED
)。CLOSED
からへの遷移はSYN_SENT
、クライアント側が TCPSYN
要求をサーバーに送信するときに発生します。
確立された接続では、両側でアプリケーション固有のデータが送受信されます。基本的に、セッションが確立され、2 つのエンド システム間で双方向のバイト ストリームが流れます。
TCP ソケットは、4 タプルによって一意に識別され(source-ip, source-port, destination-ip, destination-port)
ます。IP はエンド システムのネットワーク インターフェイスを識別し、ポート番号はそのネットワーク インターフェイスに到着するパケットを多重化および逆多重化するために使用されます (ターゲット システムがパケットの配信先サービスを認識できるようにするため)。IP:PORT
それがフィールドの意味です。
同じ接続に対して 2 つのエントリがある理由がわかりません。奇妙ですが、これはシステムに依存する可能性があります (私のシステムでは、ソケットごとに 1 つのエントリしか取得できません)。ただし、ソケットは双方向であるため、システムが各パケット フローの方向を個別のエントリとして表示する場合があります。これは、システムがソケットを実装する方法にも依存する場合があります。