• ベストアンサー

HTTPの仕組みに関する酷く拙い愚問です。

複数のネットワークのクライアントから同じサーバへのアクセスが同時に行なわれている間には、各クライアントの峻別の為に、メインメモリのソケットへ書き込んでいるのだろう、と私は勝手に考えております。 従いまして、若しかしますと、そのせいで起きている誤解なのかも知れませんが、次の疑問が浮かんで参りましたから、畏れ入りますが、教えて下さい。 Q:「HTTP1.1のKeepAlive機能では、ソケットとの組み合わせが固定化されるのでしょうか?」

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

はい,KeepAliveの間,そのTCPコネクションは固定されています。

JidousyaGaisya
質問者

補足

有り難う御座います。 質問文の中には誤りが含まれていないのですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ソケットについての酷く初歩的な愚問です。

    多数のクライアントが同じポートへのアクセスを同時に行なってきた際に、サーバ側ではメインメモリ上のソケットを割り当ててセッションを管理しているのでしょうか? 用語の使い方の誤りが表現の中に含まれているのかも知れませんが、 御手柔らかな御教授を御願い致します。

  • HTTP コンテンツの要求

    UNIX環境上でC言語を用いてプログラミングしているのですが、完全に詰まってしまいました。 実現したい動作は、クライアントがサーバーにURLを送ってコンテンツを要求するという至って単純なものです。 現在実装が済んでいるのは、クライアントとサーバーがソケット通信をして、例えば以下のような文字列をクライアントからサーバーに送信できるようになりました。(ホスト名は適当) GET /index.html HTTP/1.1 Host: www.host.jp: 8080 調べたところ、サーバーにこの要求を渡せば対応するコンテンツが返ってくる、らしきことが書いてあったのですが、クライアントもサーバーも同じコンピュータ内にあり、ソケットでクライアントとサーバーを接続しただけで全く関係のない場所にあるコンテンツを取得できるとは到底思えません。 一体どうすればコンテンツを取得できるのか、全くわかりません。初歩的な質問かと思いますが、分かる方教えてください。

  • PPPoEの仕組みについての異常に拙い愚問です。

    LAN側にDHCPクライアントが加わった際には、ネットワークアドレスさえもが分からない故に、そのクライアントPCが【ブロードキャスト】でDHCPサーバを探すのだろう、と思われますが、IPアドレスを貰う事情から類推しまして次の内容を知りたくなったものですから、教えて下さい。 Q:「WAN側へのPPPoE接続が初めて【BBルータ】によって行なわれる際にも、パブリックネットワーク側のグローバルIPアドレスが当該【BBルータ】に割り当てられていませんので、その値のリースを何らかのサーバに御願いせねばならないのでしょうけれども、『WAN側へのブロードキャスト』が許されていないのでしょうから、どういう仕組みが採用されているのでしょうか?」

  • HTTP_Downloadで接続数の制限

    HTTP_Downloadでsendして、そのセッションが終了(ダウンロード終了とかキャンセル等)を、phpソースの処理にハンドリングする方法はあるでしょうか? やりたいことは、HTTP_Downloadでクライアントに複数のファイルをダウンロードさせているのですが、1クライアントが同時に複数のファイルをダウンロードさせないようにしたいのですが。

    • ベストアンサー
    • PHP
  • HTTPでファイル転送させるには?

    質問1 HTTPでのファイル転送 以下のようなことを考えています。 1)多数のクライアントから、サーバに対してテキストファイルをある周期で転送します。 2)クライアントには固定IPアドレスが割り振られています。 3)クライアントはWindows2000/XPです。 4)サーバはWindowsServer2003かUNIX(メーカ未定)を導入予定です。 5)クライアントとサーバの間にはセグメント越えが必要な場合があり、HTTPのみ利用可能です。 6)ファイル転送のソフト(もしくはコマンド)はクライアント側にあり、クライアントからサーバにファイルをPUSHします。(サーバからPULLするのではありません) こういった上記の要件の場合、HTTPでテキストファイルをサーバに転送させることは可能でしょうか? 質問2 ファイル転送の結果を検証する ファイル転送後に、確実に送信できたかどうかを知る方法を教えてください。FTPだと、ファイルリスト、ファイルサイズ、タイムスタンプなどを確認してチェックするという方法が思いつくのですが、HTTPの場合はどうなんでしょうか? 以上、2つの質問に対して、可能であるならば、 ・こういうコマンドを利用すればよいよ ・こういう関数があるよ ・こういうソフトがあるよ など、どんなささいな情報でも結構ですので、情報をいただけると大変幸いです。

  • winsockを使った通信での同時接続について

    WSAAsyncSelectを使ってソケットにくるネットワークイベントを受け取って処理しようとしています。 サーバーに複数のクライアントが接続してくる通信プログラムを作っています。 クライアントがバラバラのタイミングで接続してくると問題なく通信が行えるのですが 同時に接続してくると通信がうまく行えなくなってしまいます。 サーバー側で接続してくるクライアント分だけソケット作る必要がありますか? lまた、listen関数を使って無いのですが使う必要はありますか?

  • 接続の有無の認識についての拙い愚問です。

    サーバへアクセスしてきたクライアント群との個別的なコネクション・セッションが継続しているのか否かの情報は、サーバのメインメモリへ記録されているのでしょうか?

  • C言語でHTTP1.1のキープアライブを使用したい

    ご存知であればお知恵を貸してください。 C言語のソケットプログラムで、HTTP1.1のキープアライブを有効にする方法を調べています。 経緯としては、Unix(SystemV系)のC言語でHTTPクライアントを作成しました。 GET(またはPOST)メソッドのHTTPリクエストを発行して、そのレスポンスをコンソールに表示するような一般的なソケットプログラムです。 (socket() → connect() → send() → recv()と言った流れです) 連続してリクエストする場合があるので、connect()で作成したコネクションをプログラム中で使用し続けたいのですが、一度のリクエスト、レスポンスでコネクションが切断されてしまいます。(HTTPの仕様) HTTP1.1で定義されているキープアライブを使用すればよいと考え、ソースコードにおいて以下の対応を追加しました。 ・setsockopt()でSO_KEEPALIVEを有効にする。(socket()とconnect()の間で呼び出し) ・送信するHTTPヘッダのプロトコルバージョンを1.1として、Host:ホスト名、Connection: Keep-Aliveを設定 HTTP1.1でキープアライブを有効にしている自宅のApache2.2がターゲットなのですが、上記対応後もコネクションが切断されてしまいます。 Apacheについては、環境変数の出力結果からHTTP1.1でキープアライブが有効になっていることは確認済みです。 HTTPクライアントプログラムについては、都度コネクションを張れば問題なく動作するので基本部分は間違っていないと考えています。 HTTPクライアントプログラムで、キープアライブを有効にするための何かが欠けているのだと推測しているのですが、どなたか何かお気づきのことはございませんでしょうか? #手元にソースコードがないために、掲載できないので漠然とした質問になってしまいました。すみません。

  • 複数人で同時にアクセスするとHTTP504エラー

    自宅サーバへ複数人で同時にアクセスするとHTTP504エラーが発生することがあります。 LAPPサーバを構築しています。 HTTP504エラーが発生した場合に、まずどのような調査をすればよいのでしょうか・・・ 全く見当もつかず、困っています。 原因解明の手助けをお願いします。

  • HTTP1.1のProxyServerを作りたい

    HTTP1.1のProxyServerを作りたい いきなりですが、私がこの質問をするにいたったまでの経緯を話させていただきます。その後、その経緯を踏まえたうえで何点か質問があるのですが、それは後に書きます。 現在HTTP1.1のProxyServerを、C言語でBSDソケットを使って作成しようとしています。 しかし通信がうまくいきません。自分なりにおそらくこれが原因ではないかという、あたりをつけたんですが、その原因の解決方法がわかりません。その原因とは、 レスポンスのデータの区切りがわからないせいでデータがごっちゃになっているのではないか?。とうことです。 もう少し詳しく言うと、WebServerは、HTTP1.1Proxyは持続的接続を前提としたパイプライン接続をサポートしていると考えて通信しているため、一つのソケットに対して複数のレスポンスを返す。しかし現在の自分の書いているソースでは、一つのソケットから読み取れるだけ読み取ってそれをすべてclientのソケットに書き込んでいるため、レスポンスの区別がついていないのではないか?というのが問題点ではないかと考えています。 これを解決するためには、レスポンスのデータを区切りらなくてはなりません。それを知るためにはヘッダのContent-Lengthラベルを、読むのが一番早いのではないかと考えていますが、Transfer-Encodingなるプロトコルがあるようで、これを使って送信されてくるレスポンスの場合はContent-Lengthが使えません(データ部がhtmlの場合は大抵Transferを使っています)。なのでこのTransferプロトコルに対応するプログラムを書く必要性があるのですが、そのためにはデータ部を見なくてはいけないようなのですが、多くのレスポンスはデータ部をgzipで圧縮して送ってきています。 この過程を踏まえたうえでいくつか質問があります。 1つは、まずこの過程の上で何か自分は間違った解釈(プロトコルの理解違いや、問題点の見間違え等)をしていないでしょうか? 2つ目は、C(OSはlinux(Iphone)を使っています。)でgzipを解凍するための方法がわかりません。なにか参考になるサイトはないでしょうか? 3つ目は、参考になるHTTP1.1ProxyServerないしはクライアントの、ソースコードはないでしょうか?(1.0はいくつかみつけたんですが・・・) どれか一つの質問へのお返事でも、結構です。よろしければご回答下さい。