In this Article
ウェブの仕組みを詳しく見ていくと、すべてが明確なルールに基づいて動いていることがわかります。現代のウェブ通信は、データの送受信方法を定めるルールであるプロトコルによって成り立っています。多くのユーザーは、サイトを開けばインターネットがすぐにすべてのデータを届けてくれるだけだと考えがちですが、実際の処理ははるかに体系的です。
ここでは、TCPとUDPとは何か、そしてプロキシを扱う際にこれらを理解することがなぜ重要なのかを解説します。
これは生のHTMLブロックです。
このHTMLを変更するには編集ボタンをクリックしてください
プロキシのワークフローがTCPとUDPに依存する理由
こちらの 記事を読めば、インターネットの仕組みはすでに理解できているはずです。データの配送はネットワークスタックのトランスポート層に依存します。TCPとUDPはまさにこの層で動作し、すべてのプロキシトラフィックはいずれかを経由します。接続をどの程度維持するか、負荷時にパケットをどう処理するか、プロキシがインフラ内でトラフィックをどう中継するか、サービスが受信リクエストをどう解釈するかなど、さまざまな要素に影響します。
これらは中核となるトランスポートプロトコルであり、プロキシシステムにおけるレイテンシからパケットの完全性まで、あらゆる要素に影響します。
TCPの仕組み
TCPはTransmission Control Protocolの略です。このプロトコルは、バイト列を転送する際に一定の保証を提供します。インターネットを支える主要なプロトコルの一つであり、高い信頼性から広く利用されています。
送信するバイトストリームはパケットに分割され、各パケットには追加情報が付加されます。この情報には、送信先ポート、メッセージのサイズ、チェックサム、シーケンス番号などが含まれます。パケットを受信者に送ると、受信者はそれを検証します。たとえば、独自にチェックサムを計算し、パケットに記録された値と比較します。値が一致すれば、パケットが破損せずに届いたことを意味します。その場合、受信側は次のような確認応答を返します。このシーケンス番号のパケットを受信しました。次のパケットを送信してください。
送信側はこの確認応答を受け取ると、次のパケットを送信します。ただし、パケットが途中で失われることもあります。その場合、受信者は再度チェックサムを計算してパケット内の値と比較し、不一致を確認すると、次のような応答を送ります。このシーケンス番号のパケットを再送してください。
送信側はそのパケットを再送し、正しく到着して確認応答が返るまで、このプロセスが繰り返されます。このプロトコルはデータストリームを信頼性高く送信するためのものです。ただし、この信頼性は速度を犠牲にする場合があります。メッセージの一部が失われると再送が必要になり、通信が遅くなるためです。
UDPとは何か?
UDPはUser Datagram Protocolの略です。TCPよりはるかに単純ですが、信頼性は保証しません。その代わり、主な利点は速度です。
重要な違いの一つは、UDPが個別のメッセージ、すなわちデータグラムを扱う点です。各メッセージは固定長で、パケットに分割せず、確認応答も行わず、ほぼ追加処理なしにそのまま送信されます。
メッセージが受信者に届く保証はまったくありません。送信したメッセージが途中で失われれば、それまでです。受信者は何かが送られたことすら知りません。また、メッセージが破損した状態で届くこともあります。
UDPは信頼性が最優先ではない場面で役立ちます。リアルタイムの音声や動画に適しており、ブロードキャストやマルチキャストに対応して多くのデバイスへすばやく送信できるため、チャット、マルチプレイヤーゲーム、ストリーミングに便利です。確認応答や再送、信頼性を担保する仕組みを持たないため、高速に動作します。
TCP vs UDP
TCPとUDPはどちらもネットワーク上でデータを転送する方法を定めますが、その仕組みは大きく異なります。TCPはデータを分割し、順序どおりに信頼性高く送信することで、すべてのバイトが宛先に届くようにします。ウェブ自動化、オンライン取引、ファイル転送など、一貫性と正確性が求められる作業にはTCPが必要です。
一方、UDPは配信や順序を保証しないため、より高速で軽量です。動画や音声のストリーミング、マルチプレイヤーゲーム、IoTデバイスなど、多少のパケット損失が許容され、完全な信頼性より速度が重要なリアルタイムアプリケーションに適しています。
セキュリティ面はどうか?
TCPはコネクション型です。ただし、そのハンドシェイクの仕組みはSYNフラッド攻撃で悪用される可能性があります。この攻撃では、攻撃者が不完全な接続リクエストでサーバーを圧迫します。TCP接続は、偽造されたRST(リセット)パケットやシーケンス番号の予測攻撃によって妨害されることもあります。UDPはコネクションレス型であり、IPスプーフィング、反射攻撃、増幅攻撃に脆弱です。このため、多くのプロキシプロバイダーは、悪用の可能性を減らすためにUDPトラフィックを制限したり、レート制限を設けたりします。
| 特性 | TCP | UDP |
| 送信方式 | 接続指向 | コネクションレス |
| 信頼性 | 高い | 低い |
| 速度 | 遅い | 速い |
| プロキシへの適性 | 安定した接続 | 低遅延トラフィックに有用 |
| DoSリスク | SYNフラッドに脆弱 | UDPフラッドに脆弱 |
| 欺骗 | 難しいが可能 | handshakeがないため容易 |
プロキシがTCPとUDPトラフィックを処理する方法
多くのレジデンシャルとモバイルプロキシは、どちらのプロトコルにも対応しています。ただし、TCPは信頼性の高い設計により、ウェブスクレイピングやAPI呼び出しといったセッションベースの作業に適しているため、一般的に優先されます。UDPにも対応していますが、レート制限やフィルタリングされたポートによって利用が制限されることがよくあります。プロキシは、クライアントデバイスと対象サーバーの間でリクエストとレスポンスが適切に流れるよう、NATやパケット変換も処理します。
TCP接続は追跡や監視が容易です。一方、UDPはより高速な送信と一定の匿名性を提供しますが、プロキシネットワークでは制限される場合があり、その結果、レイテンシに敏感なトラフィックに影響が及ぶことがあります。

