返信

いつも丁寧に教えていただきまして本当にありがとうございます。

先生がおっしゃることと重複しているかもしれませんが、

「何が分かっていないか」がわかっていない
「何を勘違いしているか」がわかっていない

まま質問をさせていただいたようです。

クライアント <--> Proxy <--> Webサーバ

間におけるHTTP通信(tcp:80)においては、
ProxyサーバがTCPセッションを2つ持つことは理解しておりました。
つまりルータのL3レベルでの転送動作(ルーティング)とは異なる。

でも「HTTPSの場合もProxyは2つTCPセッションを持つの?」

というところがわかっていませんでした。

すみません。。
本来なら自分で調べてから質問させて頂くべきでしたが
今日パソコンでキャプチャーしてみてHTTPS通信時のパケットの中身を
確認してみました。

Webサーバ(443番)<----->(*番)Proxy(3128番)<----->(*番)クライアント

↑このようになっていることが確認できました。
 パソコン側でキャプチャしただけですので、
 クライアント-Proxy間のみの確認ですが、
 知りたかったのはここでしたので十分でした。

このキャプチャ結果を見たときに、

>Proxyが転送するのはパケットではなく,TCPのコネクションの中を流れるデータです。

の「データ」の意味する具体的なものが、
レイヤ4よりも上の部分=パケットのレイヤ5,6,7の部分のこと、
だとわかりました。

そして、HTTPSの場合もProxyは2つTCPセッションを持っている!

■勘違いしていたこと
 クライアント-Proxy間でtcp:3128を使用する(逆に言うとtcp:443を使用しない)
 のであれば、だれがSSLの処理(パケットの暗号化)をやるのか?
 クライアントがWebサーバとHTTPS通信をしたいのだから
 パケットの暗号化はクライアントが実施するに決まっている。

 だから、クライアント-Proxy間は、tcp:443のはずだ。<--ここを勘違いしていたようです

 と考えてしまっていました。

 クライアント-Proxy間も、Proxy-Webサーバ間もtcp:443を使っている。
 これがSSLトンネルの動作だろう。<--という勘違いとも連動していたようです

■理解できたこと1
 HTTPS通信の時もProxyサーバはTCPセッションを2つ持つ。

■理解できたこと2
 クライアント-Proxy間も、Proxy-Webサーバ間もプロトコルは同じHTTPSだが、
 tcp の Port番号は、
 3128(クライアント-Proxy間)、443(Proxy-Webサーバ間)であり、異なる。

結論として、このような理解であっているでしょうか?

<code>Only

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