• 締切済み

HTTP GET直後のFIN,ACKについて

ある特定のサイトをWebアクセスした際のWiresharkトレースを解析しています。 そのWebサイトにはTwitterのAPIが埋め込まれていて、Twitterのアイコンを取得するためにJPGファイルを取得しているTCPセッションがあります。 3WAYハンドシェイクの後、クライアントはHTTP GETでJPGファイルを要求しているのですが、直後にFIN,ACKフラグを伴うパケットを送出しています。 クライアントは自らHTTP GETしておきながら、JPGファイルを受け取る前にTCPセッションを終了しようとするのは理解しがたいと思っています。 このようにHTTP GET直後にFIN,ACKフラグをつけるような挙動をみせるのはどのような状況が予想されるでしょうか?

みんなの回答

回答No.2

お使いのブラウザが複数のTCPコネクションを張っているからではないでしょうか。 例えばHTMLをダウンロードするための接続を終了している部分を、質問者がアイコンの取得のための接続を終了していると勘違いしていると予想します。 特定のサイトをアクセスする際に使ったブラウザの名前やOSがわからないとこれ以上はなんとも言えませんが。

jinjin7777
質問者

補足

ご回答いただきありがとうございます。 まず、OSとブラウザはWindows 7、IE9でした。 >お使いのブラウザが複数のTCPコネクションを張っているからではないでしょうか。 IEでは単一タブでそのサイトのみアクセスしている状態でした。 HTTPですので、複数のTCPコネクションは張ることになると考えています。 >例えばHTMLをダウンロードするための接続を終了している部分を、質問者がアイコンの取得のための接続を終了していると勘違いしていると予想します。 特定のJPGファイルをGETするために新たにTCPコネクションを張っています。

noname#174784
noname#174784
回答No.1

HTTPはCUNTです。

jinjin7777
質問者

補足

ご回答いただきありがとうございます。 恐れ入ります、CUNTとはどのような意味でしょうか?

関連するQ&A

  • FIN,ACKとACKについて

    はじめまして。5月よりTCPソケット通信を勉強しているものです。 クライアントとサーバーのプログラムを作り試行錯誤しながら動かしているのですが一つ不思議な現象が起きたので質問させて頂きます。 処理が終わり、通信を切断する時なのですが、ソケット通信に関連する書籍やWebページを見ていると接続を切断するときにFIN,ACKを送信して相手側がACKを送信し、FIN,ACKを送信して最後にACKを送信するとなっています。図にすると以下のような感じでしょうか。 PCA       PCB FIN,ACK送信 → FIN,ACK受信 ACK受信   → ACK送信 FIN,ACK受信 → FIN,ACK送信 ACK送信   → ACK受信 この手順でPCA,PCBともに切断されるとあるのですが、自分が作ったプログラムを実行させて、etherealでパケットをモニタリングすると以下のような状態で終わってしまいます。 PCA       PCB FIN,ACK送信 → FIN,ACK受信 FIN,ACK受信 → FIN,ACK送信 ACK送信   → ACK受信 PCAからのFIN,ACK受信に対してのACKの送信が省略されて、いきなりFIN,ACKを送信してしまいます。その後PCAからはACKが返されて終了となります。 プログラム的には希望通り動作しているので問題は無いのですが、なぜ途中のACKが省略されてしまうのか原因が知りたいです。また、自分の認識が間違っている場合のご指摘等頂ければと思います。 つたない文章で申し訳ありませんがご存知の方がいらっしゃいましたら教えて下さい。

  • FINパケット、RSTパケットが返却される理由?

    アパッチのヘルスチェックにて、パケットをみました。 シーケンス番号を追っていきましたが、下記のような 通常ではない動作がありました。 <ケース1> (1)サーバからのHTTPのGETに対して、クライアントがFIN.ACKパケットを返却する。 (2)サーバがFIN.ACKパケットをクライアントに送る。 (3)クライアントからRSTパケットが返却される。 ※RSTパケット内にて、broken tcpとの記載あり <ケース2> (1)サーバからのFIN.ACKパケットに対して、クライアントからRST.ACKパケットが返却される。 ・質問1 それぞれについて、正常な動作とはおもえないのですが、 異常でしょうか? ・質問2 FIN.ACKパケット又はRSTパケットが返却されるのはどんな場合が想定されるのでしょうか? ・質問3 FIN.ACKパケット→RST.ACKパケットは異常な動作でしょうか? よろしくお願いします。

  • HTTPアクセスの処理

    HTTPで「http://www.yahoo.co.jp」にアクセスしようとした場合、どのような内部処理が行われるのでしょうか? 大まか流れとして 1・DNSによる名前解決 2・TCPセッションの確立 3・HTTP要求 と考えてます。(ARP解決は省略します) 1・DNSによる名前解決 プロトコルスタックの流れだとHTTP→DNS→TCP→IP→Ethernetでネットワークに送信され、応答がEthernet→IP→TCP→DNSになると思います。 2・TCPセッションの確立(省略) SYN→SYN ACK→ACK 3・HTTP要求(省略) HTTP GET→HTTP 200 OK わからない部分は1・DNSによる名前解決が終わったあとどうやって2・TCPセッションの確立に移行するのかということです。 (同様に2・TCPセッションの確立が終わったあとに3・HTTP要求)

  • 「HttpSendRequest」の異常終了の原因について

    プログラム環境は「WinXP SP3 + VB2008 Express Edition」です。 Webサーバ上のファイルを取得するプログラムを作成しています。 「VB6」で「Inet/OpenURL」を使用して実現していた機能を「WinInet.dll」を使用して実現したいと思っています。 その処理の途中の「HttpSendRequest」で異常終了してしまいます。 「エラーコード:2(ERROR_FILE_NOT_FOUND:The system cannot find the file specified.)」です。 「Wireshark」でPCとサーバの交信をチェックしたところ、「Inet/OpenURL」でうまくいった時と、「HttpSendRequest」でうまくいかない時に違いが見当たりません。「HTTP:GET」に対して「HTTP:200 OK」が返ってきます。TCPでも「SYN-->ACK」で始まって、「FIN-->ACK」で終っています。交信は正常に行われているのに、「HttpSendRequest」の内部の処理でエラーにしているように見えます。(例えば、「HTTP:GET」~「HTTP:200 OK」でPCとサーバの間でパケットのやり取りがありますが、その回数が限界値を超えたため、エラーにしてしまうような処理があれば、エラーになりそうです。このあたりがわかりませんでした。) また、この「HttpSendRequest」が異常終了する事態は「GET」の対象が「*.php」の場合に発生します。「GET」の対象が「*.html」「*.jpg」「*.zip」の場合には、正常終了して、ファイルが正常に取得できます。「GET」の対象が「*.php」の場合に「HttpSendRequest」を実行する前に何か設定が必要なのでしょうか? よろしく、お願いいたします。

  • TCPの接続処理と終了処理について

    TCPでコネクションを確立するとき、制御フラグでSYN、SYN+ACK、ACKで3パケットをやりとしますが、終了手順のときは、FIN、ACK、FIN、ACKと4パケットをやりとりします。 これは何故でしょうか? コネクション確立時と同じく、FIN、FIN+ACK、ACKにしないのは何故でしょうか?教えてください。

  • windowsでSYN/ACKを返すプログラム

    以下の現象が発生して、大変困っております。 <現象> クライアントからhttpsアクセスをしようとして、 ブラウザに「ページが表示できません」エラーとなることがある。 <調査状況> クライアント、OS上でWireSharkを仕掛けて、TCPの通信をキャッチしたところ、 問題が発生した通信は「SYN」がOSまでは来ているが、 「SYN/ACK」が返ってきていない。 <環境> サーバ:windows2003server,Apache クライアントOS:WindowsXP <質問内容> クライアントからの「SYN」要求に対して、「SYN/ACK」を返すのは、具体的に何が返しているのでしょうか。 (windowsのソケットプログラム?) また、その調査方法があれば教えて頂けないでしょうか。 よろしくお願い致します。

  • BBルータでTCP通信のデータ部が捨てられている?

    インターネット上のServerと自宅PC間でWebを併用したデータ交換をしているのですが、ある限られたデータ部のみ、自宅のBBルータにより毎回捨てられているようで受信できません。 Serverと自宅PC(Client)にEtherealを同時に仕掛けPacketをモニタリングしました。 Server側のLogを見る限り、Serverは該当データを正しく送り、BBルータも正しく受信しているようです。 しかし、Client側のLogを見ると、その部分は Len=0 になっており、ヘッダ部だけのPacketが送信されて来たかのようになっております。 BBルータの設定可能項目では、いたって通常の設定になっており、また、自宅PCはWindowsXP SP2でFirewallはOff、ウィルス対策ソフトもアンインストール状態で実験しております。今回のトラブル以外は全てにおいて不具合は発生しておりません。 何か単純なTCP規則違反に該当しているのではとRFC793も確認したのですが原因がわかりません。 該当部分のEtherealのLogは以下の通りです。 何か大事なことを忘れていそうなのですが、どなたかご教授をお願い致します。 <Server側Log> ※No.292~294は3way handshakeです。 ※()内はTCP詳細部の内容抜粋です。 ※Server側のPortはWeb併用なので80番をそのまま使用。 No. SRC  DIST  Prot  Info 295 Client Server HTTP Continuation or non-HTTP Trafic 296 Server Client HTTP Continuation or non-HTTP Trafic (http > 62327 [PSH,ACK] Seq=1 Ack=24 Win=65512 Len=90) 297 Server Client TCP http > 62327 [FIN,ACK] Seq=91 Ack=24 Win=65512 Len=0 298 Client Server TCP 62327 > http [ACK] Seq=24 Ack=92 Win=65535 Len=0 299 Client Server TCP 62327 > http [FIN,ACK] Seq=24 Ack=92 Win=65535 Len=0 300 Server Client TCP http > 62327 [ACK] Seq=92 Ack=25 Win=65512 Len=0 <Client側Log> ※No.295と297~300はServer側Logと矛盾はありません。 No. SRC  DIST  Prot  Info 296 Server Client TCP http > 1157 [PSH,ACK] Seq=1 Ack=24 Win=65512 Len=0 以上

  • RFC793 TCPのコネクション解放について

    TCPのコネクションを解放するときの手続きについて、 フラグの意味がわからない部分があります。 A────────B  →FIN,ACK→→→   (1)  ←←←←←ACK←   (2)  ←←←FIN,ACK←   (3)  →ACK→→→→→   (4) 上記の手続きにより、コネクションの解放が完了しますが、 (2)は(1)に対しての肯定応答だとわかるのですが、 (3)のACKの意味がわかりません。 何に対して応答しているのでしょうか? Bは2連続でACKを送っている理由、決まりがわかりません。 RFCには「FINとセットでACKを送らなければならない」とは書いていませんので、 決められたものではないと解釈しております。 では、なぜFINとセットでACKを送るかがわかりません。 (1)のACKについては、今までのやり取りに対するACKと解釈しており、 問題視しておりませんが、ここの解釈が間違っていたら訂正お願いします。

  • ソケット通信の送受信遅延-02 その後

    前回のNo.1031658 「ソケット通信の送受信遅延」に追加させてもらいます その後、プロトコルアナライザで現状調査を行い以下の現象を確認しました ◇正常時  サーバがメッセージ送信  TCPヘッダ内フラグ ACK:1, PSH:1 + 送信データあり ↓  0.2msec前後で クライアントが 返信  TCPヘッダ内フラグ ACK:1, PSH:1 + 返信データあり ↓  10msecで サーバが送信  TCPヘッダ内フラグ ACK:1, PSH:1 + 送信データあり ↓  0.2msec前後で クライアントが 返信  TCPヘッダ内フラグ ACK:1, PSH:1 + 返信データあり ↓          以下繰り返り ◇不具合時  サーバがメッセージ送信  TCPヘッダ内フラグ ACK:1, PSH:1 + 送信データあり ↓  0.2msec前後で クライアントが 返信  TCPヘッダ内フラグ ACK:1, PSH:1 + 返信データあり ↓  10msecで サーバが送信  TCPヘッダ内フラグ ACK:1, PSH:1 + 送信データあり ↓  約130msec前後で クライアントが 返信  TCPヘッダ内フラグ ACK:1, PSH:0 + 返信データなし ↓  約250msec前後で クライアントが 返信  TCPヘッダ内フラグ ACK:1, PSH:1 + 返信データあり ↓ といった状況です どう解釈すれば良いのでしょうか 遅延の原因はソケットなのかそれ以外なのでしょうか?是非アドバイスをおねがいします。

  • httpsのページがIE 7で表示できません

    httpsのページがIE 7で表示できません。 表示できないページは、apache version 2.2系で自分で建てたサーバーです。 オレオレ証明書に使ったopensslのversionは0.9.8e, private keyの鍵長は、 1024でも2048でもだめでした。 また、mozilla firefox 3.0では同様に証明書の警告が出ますが、 例外設定をすることで表示されることを確認しています。 IE 7の現象としては、 "この Web サイトのセキュリティ証明書には問題があります。" - (A) と警告が出て、閲覧を続行すると "Internet Explorer ではこのページは表示できません" - (B) といわれます。 このとき、wiresharkでパケットのダンプを見てみると、 (A), (B)の通信が両方とも以下のようなシーケンスになっていました。 1, client -> server : tcp syn 2, server -> client : syn, ack 3, client -> server : syn 4, client -> server : client hello 5, server -> client : server hello, change cipher spec, Encrypted Handshake message 6, client -> server : change cipher spec, encrypted handshake message 7, client -> server : FIN ACK 8, server -> client : ACK 9, server -> client : encrypted alert 10, server -> client : FIN ACK 11, client -> server : RST ACK [ client: IE 7 ], [ server: apache22 ] 7の段階でIEからFIN ACKを送っているためページを表示できないのだと思うのですが、 なぜFIN ACKをおくっているのかが分かりません。 問題を解決したいのですが、はまってしまって困っています。 プロトコル・原因の調査方法等々、何か知っていることがありましたらご教授ください。 よろしくお願いいたします。