2

私はBSDコードを調べましたが、どこかで迷子になりました:(

私がチェックしたい理由はこれです:

TCP RFC(http://www.ietf.org/rfc/rfc793.txt)秒2.7は次のように述べています。

「各TCP内で一意のアドレスを提供するために、TCPを識別するインターネットアドレスをポート識別子と連結して、相互に接続されたすべてのネットワーク全体で一意になるソケットを作成します。接続は、両端のソケットのペアによって完全に指定されます。 「」

これは、ソケット=ローカル(IP +ポート)を意味しますか?

はいの場合、Unixのaccept関数は新しいソケット記述子を返します。クライアントの要求に応答するための新しいソケットが作成される(次に新しいポートが作成される)ことを意味しますか?

PS:私はネットワークプログラミングの初心者です。

[更新]私が読んだ内容を理解しました@ソケットAPIのaccept()関数はどのように機能しますか?。私の唯一の疑問は、socket =(local port + local ip)の場合、新しいソケットは同じIPの新しいポートを意味します。このロジックに従って、acceptは新しいソケットを返します(したがって、新しいポートが作成されます)。したがって、すべての送信はこの新しいポートを介して行われる必要があります。私がここで理解していることは正しいですか?

4

1 に答える 1

8

あなたはほとんど正しいです。を実行するaccept()と、新しいソケットが作成され、リスニングソケットは開いたままになり、より多くの着信接続が可能になりますが、新しいソケットはリスニングソケットと同じローカルポート番号を使用します。

接続は、protocol、local-addr、local-port、remote-addr、remote-portの5つのタプルによって定義されます。

したがって、リモートIP /ポートは常に異なるため、受け入れられた各接続は、すべて同じローカルポート番号を共有していても一意です。リスニングソケットにはリモートIP/ポートがないため、これも一意です。

于 2012-11-06T03:44:17.990 に答える