返信

ネットワーク屋さん,おはようございます。

いただいた質問内容からの推測ですが,
ネットワーク屋さんは
ProxyがクライアントとWebサーバの間でパケットを転送する,
というようなイメージで考えているように見受けます。
もし,そうなら,そこが理解の妨げになっているように思います。

Proxyが転送するのはパケットではなく,TCPのコネクションの中を流れるデータです。
つまり,Proxyはクライアントとコネクションを張って,そこから届いたデータを受け取り,
それをアクセス先のWebサーバに転送するわけです。
その転送動作は,Webサーバとの間にコネクションを張って,
そこにクライアントから受け取ったデータをそのまま入れて送信する,
というイメージです。

別の角度から説明しましょう。
クライアントからProxyサーバに届いたパケットはProxyサーバが受け取り,
その中に入っているデータもProxyサーバが受け取ります。
IPとTCPの動作はここで終わりで,パケットはここで消滅する考えてよいでしょう。
そして,別のIPとTCPの動作によってProxyはWebサーバにデータを転送します。
つまり,Webサーバ宛のパケットを新たに作って,
そこにクライアントから受け取ったデータを入れて,Webサーバに送ります。
クライアントとProxy間のIPおよびTCPの動作と
ProxyとWebサーバ間のIPおよびTCPは全く別のものなのです。
付け加えると,パケットは1対1に対応しないかもしれません。
つまり,一つのパケットに入っていたデータが分割されて複数のパケットに入る,
あるいは,複数パケットのデータが一つのパケットに入るかもしれません。

ソケットのレベルで見ると次のような格好になります。
Proxyにはクライアントと接続したソケットとWebサーバと接続したソケットの二つがあり,
一方のソケットから受信したデータを他方のソケットから送信するという感じです。

それで,ポート番号はこんな感じになります。
Webサーバ(443番)<----->(*番)Proxy(3128番)<----->(*番)クライアント
(*番)はそのマシンの中でユニークなポート番号なら何でもよい

こんな説明でわかるかしら?

<code>Only

  • 使用できるHTMLタグ: <code>
  • 文字で図を描く場合に<code>と</code>で囲んでください
画像認証
機械的なスパムメッセージ送信を防止するために画像認証を設けています。ご協力ください。
Image CAPTCHA
Enter the characters shown in the image.