• ベストアンサー

SYNが2つ?

質問が2つあります。    HTTPリクエストのパケットを観察してみたのですが、コードビットがSYNのものが、2つ連続で送信されていました。ACKをみるとレスは最初のパケットに対するものでした。2つも送信する意味はあるのでしょうか?  リクエストするIPアドレスがIPヘッダに含まれていません。 (Proxy使用)これはどうやって目的のホームページの情報を得ているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ShaneOMac
  • ベストアンサー率39% (356/898)
回答No.2

私もHTTPの受け渡しの仕組みについては詳しくありませんが。 別にHTTPでも一つのオブジェクトを読み込むだけならば、一つだけのコネクションで、データを順に受け取って終わりで良いでしょう。でも往々にしてwebページは複数のオブジェクトから成り立っていますよね? まず手順としてはメインのHTMLページを最初に読み込まなければなりません。そこでHTMLを解釈し、その中に埋め込まれている内部下位ディレクトリリンクや外部リンクによる画像、またはさらなるHTMLページの存在を知ります。それら全てを順番に一つずつリクエストして読んでいっても良いとは思います。しかし別のオブジェクトなんですから、別にコネクションを確立して並行して取得することもできます。そこはソフトウェアの機能部分ですから、開発者が効率を求めてうまくいく動作パターンを考えて組み込んでいると思います。 その並行取得の方式に制限や一般規則があるのかどうかまでは知りませんが、順行取得でも問題ないことは確かです。ですから使うHTTPクライアント次第では、コネクション数を制限して順にデータを取り込むこともあるでしょう。

negi-bozu
質問者

お礼

なるほど、確かに画像やリンク情報など多数のオブジェクトがありますね。 これらの表示の効率をあげるために多数のコネクションをつくるわけですかー。分かりやすい説明ありがとうございました。大変参考になりました。

その他の回答 (1)

  • ShaneOMac
  • ベストアンサー率39% (356/898)
回答No.1

HTTPはHTTPというプロトコルでもって会話をします。IPの下のTCPのさらに下にくるものです。IPヘッダがあり、TCPヘッダがあり、その下にHTTPが入っています。TCPデータの中を見れば分かると思いますが。例えば GET / HTTP/1.1..Host: www.google.com..User-Agent: Mozilla/5.0 (Windows; U;Windows NT 5.0;en-US; rv:1.2.1) Gecko/20021130..Accept: こんな感じになってるでしょう。プロクシはHTTPプロクシっていうくらいですから、HTTP部分を中継して伝達する機能をもっています。リクエスト側はあくまでプロクシサーバーとIP-TCPレベルで通信しているのであって、HTTPでどういった通信をするかは、IP-TCPレベルでは関知しません。プロクシサーバーはルータじゃないんですから、TCPコネクションがどう機能しているかはそれで分かると思いますが。 パケットの件については、それだけではどういう状態であるかは分かりませんが、例えばブラウザは1ページ読むだけでも複数のコネクションを利用します。キャプチュアの具合によってはそれがログ上で並ぶこともあるかもしれません。本当に2つ目のSYNフラグパケットに対してACKフラグパケットが返っていませんか?以下のパケットに対してシーケンス番号と確認応答番号をチェックしましたか? メッセージフラグはパケットの状態を示す一要素に過ぎません。全体をチェックしておかしいところがないのか見てみましょう。キャプチュアソフトの不具合で単に重複記録されただけという可能性もありますし。

negi-bozu
質問者

補足

 ご回答ありがとうございます。たしかにTCPやIPは上位層の事を気にするわけありませんよねー。しかも言われてみればプロクシはルーターではないですよね。  SYNフラグの件については連続してリクエストがされていたもので、つい最初のSYNに対するACKのすぐ後を探していましたが、しっかりと後ろのほうで返ってきていました。  ただ一つさらに分からないことがあるのですが、複数のコネクションを利用するとの事ですが、HTMLなどの情報を取得する一連のやりとりが複数の断片的な操作によって行われる仕組みがどうも理解出来ません。そのような事がどうやって可能になるのでしょうか?

関連するQ&A