- ベストアンサー
ポート番号
こんにちは, httpプロトコルを使用する際にポート80番を使用すると聞きました. LANないのPCからポート80番へのパケットを送信した際に webサーバから帰ってくるポート番号が違うと伺いました. そう言ってた人に「では,何番でかってくるのでしょうか?」と問い合せたところ 「よくわからないけど,違うポートで帰ってくる」と言われました. 一体何番のポートが帰ってくるのでしょうか? よろしくおねがいします.
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>webするならお互いに80番と決めた方が管理が容易なきがします。 それでは1つのコネクションしか張れないから…です。 クライアントAがサーバaと通信する為にsocketを生成し送信元ポートとして80番に割り当て、通信を開始しました。 同時にクライアントAがサーバbと通信する為にsocketを生成し規定の80番ポートを送信ポートとして割り当てようとすると……クライアントAの80番ポートは使用中ですので割り当てができません。 HTTPプロトコルならデータの転送が終わるとたいていは切断されますので問題になることはそれほどないでしょうが…… FTPで大きいファイルのやりとりをしている場合、他のデータの送受信までできなくなってしまいます。 ということで、クライアント側のポートを固定するメリットがありません。 社内LANにホストが100台とかあるような状態で、昼休みに各自が気象庁の地震情報のサイトを見ようとしても…一人が見られるだけで、他の人が見られません。 # WAN側の80番ポートが誰かの通信の為に固定されてしまいます。 他の人は「更新」ボタンを押してたまたまタイミングよく自分の接続が通るまで連打します。便利でしょうか? ルータの処理はHTTPについては1つの通信だけ処理すればよいのですから、負荷は軽いでしょう。 が、そんなのでLAN内部の他の99のホストを使用している人が納得できるか? と言うことになりかねません。
その他の回答 (3)
- 774danger
- ベストアンサー率53% (1010/1877)
> LANないのPCからポート80番へのパケットを送信した際に > webサーバから帰ってくるポート番号が違うと伺いました. 返ってくるポートというよりも、PC側が何番のポートを使ってWebサーバの80番ポートにつなぎに行ったかで決まるのです http://win.kororo.jp/archi/tcp_ip/port.php 送信元ポート(ソースポート)は何番を割り振るかはOSによって異なります WindowsのマシンでもUNIX系のマシンでも、Webブラウザでアクセスしながらnetstatコマンドを叩けば何番のポートを使用しているかが確認できます http://www.tef-room.net/main/netstat.html http://www.tef-room.net/picture/netstat-3.jpg この例だと1032/TCP, 1034/TCPを使っています
補足
送信元ポートをパケットに乗せるのは理解できましたが、 そもそもなぜ、別々のポートにする必要があるのでしょうか? webするならお互いに80番と決めた方が管理が容易なきがします。
- Lchan0211
- ベストアンサー率64% (239/371)
> これは,80番で送ったパケットは80番で帰ってくることもあるし, > エフェメラルポートという任意のポートで帰ってくるということでよろしいでしょうか? いいえ、違います。 ポート番号には、「送信元ポート番号」と「宛先ポート番号」があり、 必ずこのペアを設定して送受信します。 httpリクエスト送信時は、 「宛先ポート番号」に80番が入り、 「送信元ポート番号」にエフェメラルポート番号が入ります。 httpリクエストの応答は、 「宛先ポート番号」に、リクエスト送信時の送信元ポート番号と同じものが入り、 「送信元ポート番号」に80番が入ります。
- osamuy
- ベストアンサー率42% (1231/2878)
システムに依存する話なので、一概には答えられないかと。 詳しくは、「ephemeral port」で検索: http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr%3Alang_1ja&q=ephemeral+port&btnG=%E6%A4%9C%E7%B4%A2&aq=f&aqi=g1&aql=&oq=
補足
>システムに依存する話なので、一概には答えられないかと。 これは,80番で送ったパケットは80番で帰ってくることもあるし, エフェメラルポートという任意のポートで帰ってくるということでよろしいでしょうか? そもそも,なぜ別のポートに帰ってくる必要があるのでしょうか?
補足
なるほど!コネクションが1つしか張れないからあて先は80番であっても、 送り主はルータなりOSなりが自動的にわりふるってことでよろしいでしょうか