2016-11-04 6 views
0

ウェブサイトに接続するには、TCPレイヤーで送信元ポートが高い乱数で、送信先が80であることがわかります。したがって、応答セグメントには送信元ポートとして80があり、そのランダムポート番号を宛先ポートとします。HTTPトラフィックとソケットトラフィック

私はこのことから、HTTPリクエストの応答を待っているときにクライアントがそのランダムなポート番号を待ち受けることを理解しています。

TCPサーバーソケットを作成して特定のポート(47860)をリッスンする場合、Webブラウザを使用するときにルーターを構成してポートを転送する必要があります? HTTPソケットと汎用TCPソケットの違いは何ですか?

+0

HTTPは、TCPを使用するアプリケーション層プロトコルです。 「ソケット」はアプリケーションではなくTCPレイヤーに関係します。 "HTTPソケット"はありません – Prabhu

+0

あなたはTCPで読む必要があります。クライアントは何も聞かず、接続はすでに開いています。また、HTTPソケットのようなものはありません。 –

+0

HTTPベースのプロセスでは、TCPソケットが見つかります。このため私は "HTTPソケット"という用語を使用しました。 – Engineer

答えて

1

NATの背後にあるクライアントがリモートホストへのトラフィックを開始すると、NATルータはこれを覚えています。これにより、そのリモートホストからローカルクライアントへの応答をクライアントにリダイレクトすることができます。

あなたが転送され、そのリスニングポートなしNATの背後にあるサーバーを持っている場合は、そのポートへの着信トラフィックがルータによってドロップされます。事前のトラフィックは、そのクライアントはにNAT 背後からありませんでしたので、覚えておくべきものは何もありません、ルーターに関する限り、転送するものはありません。

+0

私はWebサイトに接続し、ランダムな送信元ポート番号が35691であると仮定します。ルータは別の公開元ポート番号(たとえば43512)を生成します。ルータはHTTP応答を受信するためにこのポート(43512)を開いていますか? – Engineer

+0

@Engineerはい.. – CodeCaster

+0

私はルータファイアウォールを無効にしてから、canyouseeme.orgでポートをチェックしました。ポートはまだ閉じています。それらがISPからブロックされている場合、ルータはどのようにHTTP応答を受け取ることができますか? – Engineer

1

@ CodeCasterの答えが正しいです、私は詳細を与えることを試みるでしょう。

ここでは2つのケースがあります:1)NATの背後にあるWebブラウザ2)NATの背後にあるWebサーバー。それらの主な違いは、最初のパケットの方向です。

(1)Webブラウザは通信を開始し、ルータ経由でパケットを送信します。ルータのNATは、このパケットを送信元IP /ポートを宛先IP /ポートにマッピングするテーブルのエントリとして登録します。ルータはWebサーバからの応答を受信すると、NATテーブルのエントリを参照してパケットの転送先を判断し、Webブラウザが応答を受信します。

(2)ルータのNATは、あなたのウェブサーバの存在を知らない。外部WebブラウザはパブリックIPを使用してWebサーバに要求を送信し、パケットはルータに到着します。 NATテーブルもポート転送もポート80が登録されていないので、ルータはパケットをどのように扱うべきか分かりません。つまり、NATは発信接続を自動的に処理し、着信接続に対してはポート転送を設定する必要があります。

+0

ありがとう – Engineer

関連する問題