ネットワーク屋さん,おはようございます。
いただいた質問内容からの推測ですが, ネットワーク屋さんは 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番)<----->(*番)クライアント (*番)はそのマシンの中でユニークなポート番号なら何でもよい
こんな説明でわかるかしら?
More information about text formats
Proxyはパケットの転送ではない
ネットワーク屋さん,おはようございます。
いただいた質問内容からの推測ですが,
ネットワーク屋さんは
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番)<----->(*番)クライアント
(*番)はそのマシンの中でユニークなポート番号なら何でもよい
こんな説明でわかるかしら?