NATおよびTCP

よく書かれたTCP NATの原則、と話しzhiihiuの1、:の貫通手段原則と開発実戦

stackoverflowの上一篇:どのようにソケットAPIは()関数の作業を受け入れるのですか?

どのようにaccept仕事を?それがどのように実装されていますか?このトピックに関する多くの混乱があります。多くの人々は、新しいポートを開き、あなたはそれを介してクライアントと通信受け入れる主張します。新しいポートが開かれていないとして、しかし、これは明らかに、真実ではありません。あなたは、実際には異なるクライアントと同じポートを介して通信しますが、どのようにできますか?複数のスレッドが呼び出すときにrecv同じポートで、どのデータがどこに行くために知っているのですか?

ここに答えハイ賞賛は、次のとおりです。

 

サーバーポート:ソケットはサーバーのIPで識別された思考であなたの混乱の嘘。実際には、ソケットは、一意の情報のカルテットによって識別される場合:

Client IP : Client Port そして Server IP : Server Port

サーバーのIPおよびサーバーポートはすべて受け入れた接続で一定である一方、そのため、クライアント側の情報が、それはすべてが起こっている場所を追跡することを可能にするものです。

物事を明確にする例:

私たちは、サーバーで持っていると言う192.168.1.1:80と、2台のクライアントを、10.0.0.110.0.0.2

10.0.0.1ローカルポートでの接続が開き1234、サーバへとコネクトします。今、サーバは次のように同定された1つのソケットがあります。

10.0.0.1:1234 - 192.168.1.1:80  

10.0.0.2ローカルポートでの接続が開き5678、サーバへとコネクトします。今、サーバは次のように識別される2つのソケットがあります。

10.0.0.1:1234 - 192.168.1.1:80  
10.0.0.2:5678 - 192.168.1.1:80

別の答えにZhihu:

A1:唯一の公共IPネットワークは、インターネットユーザーにアクセスすることができ、サーバのプライベートIPは、インターネットユーザーがアクセスすることはできませんサーバーIP = 10.0.0.1、同社のパブリックIP = 1.1.1.1と仮定し、ポートマッピングは、次の静的に生成されますエントリ:

 

NATデバイスの目的IP +ポート番号を受信すると1.1.1.1:443パケットが10.0.0.1:443に変換され、変換されたIPパケットはサーバに転送され続けています。

リンクします。https://www.zhihu.com/question/270396590/answer/38229019

おすすめ

転載: www.cnblogs.com/xiang-yin/p/12111673.html