TCP(Transmission Control Protocol)とUDP(User Datagram Protocol)は、現代のウェブ上でデータを転送する最も一般的な2つの方法である。ご存じないかもしれませんが、ほぼ毎日この2つを使っています。
その方法については、続きをお読みいただきたい!
なぜサーバーはすべてのデータを一度に送信できないのか?
ウェブサイトにアクセスしたり、ライブストリームを見たりすると、すべてのデータを同時に取得しているように思えるかもしれない。しかし、実際はそうではありません。インターネットはそのようには機能しない。
ネットワークに負担をかけないために、データは塊に分割される。500mbpsの接続で、100GBのビデオゲームをダウンロードしているとしよう。チャンキングがなければ、ルーターはデータを処理できず、ネットワークは這うように遅くなり、事実上クラッシュしてしまいます!
TCPやUDPといったさまざまなプロトコルが、これらのチャンクの送信方法を定義するために使用される。
- TCP:チャンクは連続して送信され、検証される。これは郵便のやりとりに似ている。あなたのマシンは手紙を受け取り、それを読み、次の手紙を要求する。
- UDP:すべてのチャンクは、50口径のデータ砲塔のように、矢継ぎ早に送信される!
伝送制御プロトコル
TCPはすべてのHTTP/HTTPSリクエストの中心にあります。TCPは、接続のすべての詳細を気にします。TCPでは、ハンドシェイクを開始すると、応答が順番に返ってきます。クライアントがレスポンスを受信するたびに、ACK(確認応答)をサーバーに送信します。こうすることで、サーバーは常に配信した情報の状態を知ることができる。
TCPでファイルをダウンロードしているとき、それが4つのチャンク(セグメント)に分割されたとしよう。サーバーは最初のチャンクを送信し、HTTPクライアントはすべてOKだったと伝えます。その後、チャンク2、3、4と同じプロセスを繰り返します。HTTPリクエストの作り方についてもっと学ぶことをお勧めする。
コア機能
TCPがどのように機能するか、ステップ・バイ・ステップで説明しよう。
- クライアント(あなたのスマートフォン)はハンドシェイクを開始し、サーバーにあなたのEメール履歴を要求する。
- 履歴は一度に送信するには大きすぎるため、チャンクに分割される(TCPでは、このチャンクはセグメントと呼ばれる)。
- サーバーは最初のチャンクを送信する。
- あなたの携帯電話は、最初のチャンクを受信したというACK(確認応答)を送信する。
- サーバーは2つ目のチャンクを送信する。
- あなたの携帯電話はもう一度ACKを送信する。
このプロセスは、すべてのデータが転送されるまでループで繰り返される。
アプリケーション
正確なデータを必要とするあらゆる場所で、TCPはフードの下で動作しています。TCPは次のようなアプリケーションで使用されています。
- ウェブブラウジング:HTTP/HTTPS(HyperText Transfer Protocol)/(HyperText Transfer Protocol Secure)は、TCPを使ってブラウザにページを送信します。
- 電子メール:SMTP(Simple Mail Transfer Protocol)、IMAP(Internet Message Access Protocol)、POP3(Post Office Protocol version 3)はすべてTCPを使い、メッセージが順番に届くようにします。
- 大容量ファイルのダウンロードFTP(File Transfer Protocol)とSFTP(Secure File Transfer Protocol)は、お客様のデータを破損することなく、大容量のダウンロードが整然と行われることを保証します。
長所と短所
長所
- ✅ 信頼性がある:TCPはすべてのデータを確実に配信する。
- エラーフリー:チャンクの送信や処理に誤りがあった場合、TCPは必ずデータを再送する。
短所
- 遅い:TCPはその厳格な精度ルールのため、しばしば遅い。
- ネットワークの輻輳:トラフィックが多い場合、TCPはすべてが完璧に整列するのを待っている間に滞ってしまう。
ユーザーデータグラムプロトコル
UDPは、TCPののんびりしたいとこのようなものだ。TCPはハンドシェイクと、データが完璧に届くまでコネクションを維持することがすべてだ。UDPのチャンクは技術的にはデータグラムと呼ばれる。UDPでは、私たちはひとつのリクエストを送信し、サーバーはその正確さを検証することなく、すべてのチャンクを連続して送信する。
応答を処理するとき、ACKシステムやハンドシェークはない。あなたのマシンは一つのリクエストを送り、そのデータを受け取る。サーバーはこのリクエストを聞いて、これらのチャンクを順不同にすべて発射して応答する。
コア機能
UDPでの処理は、もっと速く、ルーズだ。
- マシンがデータを要求する
- サーバーは、各チャンクを検証もACKもなしに矢継ぎ早に送信する。
データは可能な限り速く届くが、通常は順番が狂っている。サーバーは欠落したチャンクやデータの整合性など気にしません。
アプリケーション
- ライブストリーミング:YouTubeのライブストリームを見るとき、携帯電話やテレビのアプリがリクエストを送信し、ストリームを開きます。そしてデータが飛び始める!
- オンラインゲーム:最近のオンラインゲームでは、KB(キロバイト)、時にはMB(メガバイト)をわずか数秒で処理します。UDPは、最小限の待ち時間でゲームを画面に表示します。
- DNS(ドメインネームシステム)ルックアップ:あなたがブライトデータブログに来たとき、DNSサーバーはUDPを使ってIPアドレスをあなたのブラウザに送信します。
長所と短所
長所
- ✅ 猛烈な速さ:UDPは精度を気にせず、マシンガンのように全データを可能な限り高速で発射する。
- ✅ 無駄がない:ハンドシェイクやACKに無駄なリソースがない。
短所
- ❌ 信頼性がない:データが乱雑に届いたり、まったく届かないこともある。
- ❌ ハンズオフ:UDPサーバーはライブストリームが機能していなくても気にしません。ただデータを送り続けるだけだ。
よくある誤解
誤解その1:TCPは常にUDPより遅い
はい、TCPはハンドシェイクとACKによって遅延を追加します。しかし、TCP Fast Open (TFO)やMultipath TCP (MPTCP)のような最新のプロトコルは、TCPの遅延を減らし、パフォーマンスを向上させています。ほとんどの場合UDPの方が高速ですが、微調整されたTCPはUDPさえも上回ることがあります。
誤解その2:UDPはストリーミングとゲームにしか使えない
リアルタイム・アプリケーションはUDPの主要なニッチ分野だが、これはライブ・ストリームやオンライン・ゲームに限った話ではない。低遅延取引、センサー技術、DNSでさえもUDPを利用することができます。
誤解その3:1つしか使えない
現代のテクノロジーは、実際にはTCPとUDPの両方を利用している。HuluやYouTubeでテレビを見る場合、初期接続、メタデータ、バッファリングなどの実際のセットアップはTCPを使って送信されることが多い。このコンテンツをストリーミングしている間、UDPは適応ビットレートとストリーム中のラグ低減のために使用されることが多い。
それぞれの使用時期
ユースケース | 推奨プロトコル | 信頼性 | スピード | 注文を保証する? | 握手が必要か? | パケットロスに強い | なぜフィットするのか |
---|---|---|---|---|---|---|---|
ウェブブラウジング(HTTP/HTTPS) | TCP | ✔️ | 遅い ❌ 遅い | ✔️ | ✔️ | ❌ | 全ページが正しい順序で読み込まれるようにする |
電子メール(SMTP、IMAP、POP3) | TCP | ✔️ | 遅い ❌ 遅い | ✔️ | ✔️ | ❌ | メッセージは完全かつ正確に伝えなければならない |
ファイルダウンロード(FTP/SFTP) | TCP | ✔️ | 遅い ❌ 遅い | ✔️ | ✔️ | ❌ | 大容量転送時のデータ破損を防ぐ |
ビデオ通話 / VoIP | UDP | ❌ | ✔️ Fast | ❌ | ❌ | ✔️ | 正確さよりもリアルタイムのコミュニケーションを優先 |
オンラインゲーム | UDP | ❌ | ✔️ Fast | ❌ | ❌ | ✔️ | 枠を外すことよりも素早い対応が重要 |
ライブ・ストリーミング | UDP | ❌ | ✔️ Fast | ❌ | ❌ | ✔️ | 欠落したパケットをドロップすることでバッファリングを回避 |
DNSクエリー | UDP | ❌ | ✔️ Fast | ❌ | ❌ | ✔️ | 軽量リクエストは完全なコネクション処理を必要としない |
結論適切な仕事に適切なツールを選ぶ
TCPとUDPはどちらも、インターネット上でのデータ転送において重要な役割を果たしています。TCPは信頼性と正確性を保証するため、ウェブブラウジング、電子メール、ファイル転送に最適です。一方、UDPは速度を優先するため、ライブストリーミング、オンラインゲーム、リアルタイム通信に適しています。
プロキシに関しては、適切なプロトコルがすべての違いを生むことがあります。ウェブスクレイピングやデータ収集、セキュアなブラウジングのために安定した信頼性の高い接続が必要な場合は、TCPを使用したHTTP/HTTPSプロキシが最適です。しかし、ストリーミングやゲームなど、スピードと低遅延を優先する場合は、UDPをサポートするSOCKS5プロキシが必要なパフォーマンスを提供できます。
以下のプロキシ・サービスのセレクションをご覧ください:
- レジデンシャル・プロキシ:自宅のインターネット接続で、実際の消費者デバイスを通じてウェブにアクセスする。
- データセンタープロキシ:最新のデータセンターで利用可能な最高のハードウェアと帯域幅でお客様のリクエストをルーティングします。
- モバイルプロキシ:住宅用と似ているが、リクエストは携帯電話データネットワーク上のモバイルデバイスを経由する。
- ISPプロキシ:特定のインターネットサービスプロバイダを経由してトラフィックを実行します。
- ウェブアンロッカー自動的にターゲットサイトに最適なプロキシに接続します。CAPTCHAも手間もかかりません。
クレジットカードは必要ありません