IEやネットスケープといったブラウザは,あるコンテンツを転送したとき,ファイルの転送が終了したことをどうやって把握しているのでしょうか?
HTTP GETで取得を開始した後,TCPのコネクションを切る判断をどうやってしているのか知りたいのです.
HTTPプロトコルのRFC定義で決められているのでしょうか?
もしご存知の方いらっしゃいましたら教えてください.

このQ&Aに関連する最新のQ&A

A 回答 (5件)

HTTP1.1 では、hyde-la さんのいうように、他の手段も定義されてますね。


現実に使われてるかどうかはわかりませんけど…

ただ、http://www.asahi.com/ を見てみましたけど、IE 5.5 と unix 上の NN
4.76 で調べたかぎりでは、複数のコンテンツを1セッションで取得している例
がみつかりませんでした。"/" の取得に限っては、確かに Content-Length は
ありませんでしたが、それ以外の *.gif なんかの取得には全部付加されてい
ましたよ。
    • good
    • 0
この回答へのお礼

いろいろありがとうございます.
もう少しいろいろ調べてみます.
また質問させていただくこともあるかと思いますが
よろしくお願いいたします.

お礼日時:2000/12/27 21:32

思いっきりハズしてしまいましたhyde-laです。


ちょっと調べてみました。

HTTPのメッセージ終了を決定する方法は、他にもいくつかあるようです。

特にmultipartの場合は事前にメッセージ長を決定出来ない為、
lengthが付加されないそうです。
その場合は、transfer-encodingにchunkを指定して、
それでメッセージの終わりを指定することが出来るようです。

この辺は、3.6章のchunkedの説明、4.4章のContent-Lengthの説明、
あと7.2.2章のNoteを読むと解るようです。

また、HTTP/1.1のブラウザは"chunked"Transfer-encodingの内容を理解出来ねばならず、
それが駄目な場合は、その転送コーディングは無視されるべきだ・・・
と書いてあります。

以下の日本語訳をどうぞ。

参考URL:http://www.geocities.co.jp/SiliconValley-PaloAlt …
    • good
    • 0

HTTP1.0 でも、指定によって複数個取得することは可能です。


HTTP1.0 の場合は、Content-Length かサーバー側の切断以外には、
長さを知る方法はありませんので、複数個の転送があるときは、
Content-Length は必ず通知されるはずですが…

そうじゃない例があったのでしょうか?
どうやって確認されたでしょうか?

この回答への補足

Content-Lengthはサーバ側が付けるかつけないか決定しているようなので,
(asahi.comなんかをみていると,だいたいCLを付けずにHTTP/1.0 200 OKを返してくる)
基本的にサーバがCLを付けてくれた場合は,1つのflowに複数コンテンツを流すことができる.
付けてくれなかった場合は,おとなしくサーバ側からのTCPをFINを待つということになるのでしょうか?

そうすると,HTTPというプロトコルは,TCPの切断をサーバ側から通知されるまではそのコンテンツが転送完了したかどうかわからないというかなり不完全なプロトコルのようなきがするのですが・・・.

ちなみにtcpdumpでパケット収集後,ethereal(http://www.ethereal.com/)でフローを抽出しています.

そのなかでたまにCLがついていないのにもかかわらず,1flowで複数コンテンツが転送されるのを確認しています.

補足日時:2000/12/27 16:26
    • good
    • 0

ファイルの転送と終了に関しては、HTTPじゃなくて


TCPなのではないでしょうか?
・・・と今までは漠然とそう思ってたのですが、
ちょっとRFCを読んでみたらですね、
ひょっとしてRFC1945のセクション6が怪しいかなぁ、と。

基本的に一つずつファイルを要求し、完了し次第切る。
その完了の目安としてのことをおっしゃっているなら
多分同セクション6に記述されているresponseでしょうか。
    • good
    • 0

結論をいえば、ご想像のとおり、RFC2616で規定されています。



単純にHTTP1.0的なGETしかしない場合には、1個取得した段階でサー
バー側が切断してしまいますので、それで判断できますが、
HTTP1.1では複数個を連続して取得できるので、それぞれの内容に
先立ってサイズが通知され、それを利用します。

RFC2616を全部読むのは大変だと思います。HTTPを専門に扱う書籍
もありますので、これを参考にしてはいかがでしょう?
「HTTP詳説」P.S.ヘスマン(ピアソン・エデュケーション)

参考URL:http://ring.etl.go.jp/pub/doc/RFC/rfc2616.txt

この回答への補足

ご回答ありがとうございます.

現在いろいろ試しているのですが,サーバにapacheを用意して,IEでGETをして(例えばGET http://***.ne.jp/~hoge/pic.gif HTTP/1.0)
その転送をtcpdumpなどで見ていると,明らかに1つのフロー(TCPコネクション)で順次,複数コンテンツの転送が行われているんですよね.たとえばサーバが必ずContent-Lengthを通知してくれるのであれば全体のサイズがわかっているのでコンテンツの転送終了が確認できますが,そうでないのになぜIEはそのコンテンツの転送終了を判断できたのか?というのが気になります.しかもHTTP1.0を利用しているのにです.
実装方法に依存しているのかもしれませんが,その手法が謎のままなのです.

補足日時:2000/12/27 12:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHyperText 転送プロトコル (HTTP)って??

現在、YAHOOオークションにて出品をしています。
YAHOOオークションに出品している商品の画像を、自分のパソコンから消去してしまうとどうなるのでしょうか??
yahooにデーターが保存されていて消えないのでしょうか??
パソコンの調子が悪く(ウィルス&フリーズ多発)、いっその事、デカバリーをと思っているのですが、↑出品している商品の画像が消えてしまったら・・・と怖くてできません。
すみません。初心者です。よろしくお願いします。

Aベストアンサー

インターネットで見ているものは、自分のパソコンでサーバーを立てている場合を除き、業者などのサーバーにある画像や情報を見たい人が取り寄せて、ブラウザソフトで絵や文字に表現させて見ているので、一旦画像等を送って、いまそれを見ることが出来るなら、サーバー側が消すまで見れるわけです。送った後のコンピュターの故障とは関係無いです。

Q[メール,RFC822,ARPA,status 5.2.2] メールを送信したところ、エラーが発生しました

このカテゴリでいいのかとても不安だけど質問させていただきます。
あるところにメールを送ったところ、以下のメールがサーバから帰ってきました。原因と解決策を教えてください。
(各アドレスは共に架空のアドレスに変更しています)
======================
From: postmaster@foobar.co.jp
To: himajin@foobar2.co.jp
Date: Sun, 12 Feb 2006 13:18:20 +0900
Subject: +kU1P4XK2YUuQGnfl- (+MKgw6TD8-)
+MFMwbpAad+Uwb4HqUtV2hDBrdR9iEDBVMIwwX5FNT+FytmFLkBp35TBnMFkwAg-

+ayEwblPXT+GABTB4MG6RTU/hMGtZMWVXMFcwfjBXMF8wAg-

hoge@foobar.co.jp

Final-Recipient: rfc822;hoge@foobar.co.jp
Action: failed
Status: 5.2.2
X-Display-Name: =?unicode-1-1-utf-7?Q?+W65d3Q-
+bfNOAA-?=

このカテゴリでいいのかとても不安だけど質問させていただきます。
あるところにメールを送ったところ、以下のメールがサーバから帰ってきました。原因と解決策を教えてください。
(各アドレスは共に架空のアドレスに変更しています)
======================
From: postmaster@foobar.co.jp
To: himajin@foobar2.co.jp
Date: Sun, 12 Feb 2006 13:18:20 +0900
Subject: +kU1P4XK2YUuQGnfl- (+MKgw6TD8-)
+MFMwbpAad+Uwb4HqUtV2hDBrdR9iEDBVMIwwX5FNT+FytmFLkBp35TBnMFkwAg-

+ayEwblPXT+GABTB4MG6RTU/hM...続きを読む

Aベストアンサー

とりあえず文字化けしたのを直して見ました。
From: postmaster@foobar.co.jp
To: himajin@foobar2.co.jp
Date: Sun, 12 Feb 2006 13:18:20 +0900
Subject: 配信状態通知 (エラー)
この通知は自動的に生成された配信状態通知です。

次の受信者への配信に失敗しました。

hoge@foobar.co.jp

Final-Recipient: rfc822;hoge@foobar.co.jp
Action: failed
Status: 5.2.2
X-Display-Name: =?unicode-1-1-utf-7?Q?**
**?=
(****は人物名らしきものだったので伏せておきます)

恐らくですが送信しようとしたメールアドレスが存在しませんとメールサーバが返して来たものと思われます。

Q「TCP/IPプロトコルがインストールされていません」メッセージ

無線LANカードからルータに接続できなくなり(ルータ:WBR-B11、無線LANカード:WLI-PCM-L11GP)クライアントマネジャで「TCP/IPプロトコルがインストールされていません」というエラーがでるようになってしまいました。

ルータを介さず有線でFLETS簡単接続ツール(FLETS光マンションVDSLタイプ、nifty)を使って接続してみたところPPPoE接続はできてもネットにつながりません。以前はルータ使用/接続ツールどちらでもネット接続できました。OSはWin98SEです。

ウイルス・セキュリティをアンインストールした状態でLANカードのドライバ、クライアントマネジャ、かんたん接続ツールの再インストールを行い、ネットワークのネットワークコンポーネントの内容を全て削除→追加しましたが、現象は全く変わりありません。現在のネットワークのネットワークコンポーネントの内容は以下の通りです。

・Microsoft ネットワーク クライアント
・NetWare ネットワーク クライアント
・BUFFALO WLI-PCM-L11/GP Wireless LAN Adapter
・ダイヤルアップ アダプタ
・IPX/SPX 互換プロトコル -> BUFFALO WLI-PCM-L11/GP Wireless LAN Adapter
・IPX/SPX 互換プロトコル -> ダイヤルアップ アダプタ
・TCP/IP -> BUFFALO WLI-PCM-L11/GP Wireless LAN Adapter
・TCP/IP -> ダイヤルアップ アダプタ

関係ないかと思いますが以前このような質問をしました
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2075181
この件に関しては一旦解決しました。

無線LANカードからルータに接続できなくなり(ルータ:WBR-B11、無線LANカード:WLI-PCM-L11GP)クライアントマネジャで「TCP/IPプロトコルがインストールされていません」というエラーがでるようになってしまいました。

ルータを介さず有線でFLETS簡単接続ツール(FLETS光マンションVDSLタイプ、nifty)を使って接続してみたところPPPoE接続はできてもネットにつながりません。以前はルータ使用/接続ツールどちらでもネット接続できました。OSはWin98SEです。

ウイルス・セキュリティをアンインストールし...続きを読む

Aベストアンサー

確認します。
 無線LANアダプターのインストール手順は、必ず無線LANアダプターを装着しないで、Wdrv_***内のINST.EXEを先に起動し、「製品を取り付けてください」があってから装着していましょうか。

QTCPのコネクションについて。

TCPのコネクションがよくわかりません。

3ウェイハンドシェークでお互いに通信するのを了承しあう、という説明がよくあると思うのですが、それをしたのがなぜコネクションになるのでしょうか?それをしないでデータを送っても破棄されるということでしょうか?

よろしくお願いします。

Aベストアンサー

なかなかわかりずらいですよね。

> スリーウェイハンドシェイクにより双方向に通信路を確保することができるようになるというわけです。
> の部分ですね…。
> なぜこれをやったら「通信路を確保」できたのでしょう?
ここで言う「通信路」というのは「通信回線」よりもはるかに高度の概念です。
コンピューター内のソフトやファイルまで含みます。

例えとして航空管制を使いましょう。
航空機が管制空域に入ると管制官と連絡を取りスリーウエイハンドシェイクで相互確認を取ります。(通信路の開設)
このあとは適宜情報をやり取りし、管制空域を離脱するときに通信路を切断します。

> やる前とやった後で何が変わったのでしょうか?
お互いに通信台帳を準備しこれと突き合わせながら通信していきます。
> これをやらずにTCPヘッダつきのパケットを送ってもだめだよ、ってことでしょうか?
はい、通信路を開設せずにTCP/IPでの通信はできません。
UDPなら可能ですが通信の信頼性はがた落ちです。

QTCP/IPプロトコルが無くなった?

通常、無線LANアダプタを使ってパソコンを使用していますが、突然接続が出来なくなり、念のため、アダプタのクライアントマネージャーを開いてみると、TCP/IPプロトコル無しと出ていました。これだと思ったので、すぐにBUFFALO社(LANアダプタのメーカー)に電話してみると、「このような場合、TCP/IPアドレスを再取得以前の問題なので、PCのメーカーに問い合わせてください」と言われました。
何か解決策をご存知の方、教えてください!
さっきまでは、ネットワーク接続画面に、LAN接続用のアイコンも存在していたのに、いきなり消失していました。よろしくお願いします。
もしかするとWindows 再インストールでしょうか(泣)ちなみに、OSはXPです。

Aベストアンサー

マイネットワークのプロパティを開き、LANアダプタの接続のプロパティを開きます。
そこにTCP/IPがない場合は、追加でプロトコルを選択し、TCP/IPを追加すればOKだと思いますよ。
あとは、設定する部分があればそれを今まで通りにしてしまえばまた使えると思います。


人気Q&Aランキング

おすすめ情報