0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プロキシサーバと通信プロトコルの基本

Posted at

1. プロキシサーバの役割

プロキシサーバは、クライアントとサーバの間に立ち、クライアントの要求を受けてその代わりにサーバと通信を行うサーバです。プロキシサーバを使用することで、アクセス制御、キャッシュ、トラフィックの最適化、セキュリティ強化などが可能になります。

・プロキシサーバの主な役割:
 ・通信の中継: クライアントが直接サーバにアクセスする代わりに、プロキシサーバを経由して通信を行います。

 ・セキュリティの向上: サーバとの直接的な通信を避けることで、企業の内部ネットワークを外部の攻撃から保護します。

 ・トラフィックの制御: アクセス制限やフィルタリング、通信のログ記録などが行えます。

2. プロキシサーバの宛先IPアドレスと送信元IPアドレス

プロキシサーバがクライアントとサーバの間で通信を行う場合、宛先IPアドレスや送信元IPアドレスがどのように設定されるかは重要な点です。

・宛先IPアドレス: クライアントがアクセスしたいサーバのIPアドレスです。プロキシサーバは、クライアントから受け取ったリクエストに基づき、宛先IPアドレスに通信を転送します。

 ・HTTPの場合: クライアントからのリクエストにはサーバのIPアドレスが含まれており、プロキシサーバはそのIPアドレスを基に通信を行います。例えば、クライアントがhttp://example.comにアクセスした場合、プロキシサーバはexample.comのIPアドレスにアクセスします。

・送信元IPアドレス: プロキシサーバがサーバにリクエストを送信する際の送信元IPアドレスです。プロキシサーバを使用することで、クライアントの本来のIPアドレスではなく、プロキシサーバのIPアドレスが送信元IPアドレスとして使用されます。

 ・HTTPの場合: クライアントがリクエストを送信すると、その送信元IPアドレスはプロキシサーバのIPアドレスになります。サーバには、リクエスト元がプロキシサーバであることが分かり、クライアントの実際のIPアドレスはサーバ側に渡りません。

 ・HTTPSの場合: HTTPS通信では、プロキシサーバは暗号化されたトンネルを介してデータを送信します。そのため、プロキシサーバはデータの内容を確認せず、そのまま暗号化されたデータを宛先サーバに転送します。この場合でも、プロキシサーバのIPアドレスが送信元として使用されます。

3. HTTPとHTTPSでのプロキシサーバの動作

HTTPとHTTPSの動作の違いについても理解しておくことが重要です。

・HTTP通信の場合:
 ・クライアントがプロキシサーバにリクエストを送信すると、プロキシサーバはその内容(URL、ヘッダーなど)を読み取って、目的のサーバにリクエストを転送します。この際、プロキシサーバはサーバへのリクエストにおいて、宛先IPアドレスを指定し、送信元IPアドレスはプロキシサーバのものになります。

・HTTPS通信の場合:
 ・HTTPSでは、クライアントとサーバ間で**TLS(Transport Layer Security)**を使用して暗号化された通信が行われます。プロキシサーバがHTTPリクエストを受け取ると、クライアントとサーバ間の暗号化されたトンネルを作成します。この際、プロキシサーバはクライアントとサーバ間のデータを暗号化されたまま中継するため、データ内容は確認できませんが、送信元IPアドレスとしてプロキシサーバのIPが使用されます。

 ・プロキシサーバがHTTPS通信を中継する際に使用されるプロトコルとして、**SSL/TLSトンネル(CONNECTメソッド)**があります。これにより、プロキシサーバはクライアントとサーバ間の暗号化された通信を中継しますが、内容は見ることができません。

4. プロキシサーバの種類と動作

・フォワードプロキシ:
 ・クライアントがインターネットにアクセスするために使用するプロキシサーバです。企業などの内部ネットワークからインターネットにアクセスする場合に使われます。外部のサーバからは、プロキシサーバのIPアドレスが送信元IPとして表示されます。

・リバースプロキシ:
 ・サーバ側に配置され、クライアントからのリクエストを受けて内部のサーバに転送します。例えば、負荷分散やキャッシュのために使用されます。内部のサーバからは、リバースプロキシサーバのIPアドレスが送信元IPとして表示されます。

5. WebSocket通信とプロキシサーバ

WebSocketは、HTTPと異なり、持続的な接続を確立して双方向通信を行うため、プロキシサーバとの連携が必要です。WebSocket通信では、以下の点に注意する必要があります。

・WebSocketハンドシェイク: 最初はHTTPを使ってWebSocket接続を確立します。HTTPリクエストにUpgradeヘッダーを含めてWebSocket通信に切り替えます。プロキシサーバはこの初期のHTTPリクエストを中継し、接続が確立されると、その後のWebSocket通信は直接クライアントとサーバの間で行われます。

・ポートの使用: WebSocket通信は、通常、HTTPと同じポート(ポート80または443)を使用します。これにより、プロキシサーバやファイアウォールの設定を変更せずに済む場合があります。

・ファイアウォールとルータの設定: WebSocketは持続的なTCP接続を必要とするため、ファイアウォールやルータで特定のポートを開放する必要がある場合があります。しかし、HTTPと同じポートを使用するため、既存の設定変更が最小限で済むことがあります。

6. まとめ

・HTTP通信は、リクエスト-レスポンスのサイクルで通信が行われ、プロキシサーバを利用することでセキュリティや制御が向上します。プロキシサーバを経由した場合、送信元IPアドレスはプロキシサーバのものになります。

・HTTPS通信では、暗号化されたトンネルを使ってデータを中継しますが、プロキシサーバはデータ内容を確認できません。送信元IPアドレスはプロキシサーバのものになりますが、暗号化されたままでデータを中継します。

・WebSocket通信は、HTTPを使って接続を確立した後、持続的なTCP接続で双方向通信が行われます。プロキシサーバはWebSocket接続の初期ハンドシェイクを中継し、その後は直接通信が行われます。

プロキシサーバを理解することは、ネットワーク管理やセキュリティ設計、または通信プロトコルの選定において非常に重要です。試験対策として、HTTPとHTTPS、WebSocket通信の動作、プロキシサーバの役割をしっかりと押さえておきましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?