TCP vs UDP:信頼性と効率の議論を分かります

今日は、TCPに焦点を当てることから始めます。階層化に関する章の前半で、重要なポイントについて言及しました。ネットワークレイヤー以下では、ホスト接続のホストに関するものです。つまり、コンピューターが接続するために別のコンピューターがどこにあるかを知る必要があります。ただし、ネットワークでの通信は、多くの場合、マシン間通信ではなく、プロセス通信に相互に処理されます。したがって、TCPプロトコルはポートの概念を導入します。ポートは1つのプロセスのみで占有でき、これにより、異なるホストで実行されるアプリケーションプロセス間の直接通信が提供されます。

輸送層のタスクは、異なるホストで実行されているアプリケーションプロセス間で直接通信サービスを提供する方法であるため、エンドツーエンドのプロトコルとしても知られています。トランスポートレイヤーは、ネットワークのコア詳細を隠し、アプリケーションプロセスが2つのトランスポートレイヤーエンティティ間に論理的なエンドツーエンド通信チャネルがあるかのように確認できるようにします。

TCPは伝送制御プロトコルの略で、接続指向のプロトコルとして知られています。これは、一方のアプリケーションが他のアプリケーションにデータの送信を開始する前に、2つのプロセスが握手をする必要があることを意味します。ハンドシェイクは、信頼できる送信と整然としたデータの受信を保証する論理的に接続されたプロセスです。握手中に、一連の制御パケットを交換し、データ送信を成功させるためにいくつかのパラメーターとルールに同意することにより、ソースホストと宛先ホストの間に接続が確立されます。

TCPとは何ですか? (mylinking'sネットワークタップそしてネットワークパケットブローカーTCPパケットまたはUDPパケットの両方を処理できます)
TCP(トランスミッションコントロールプロトコル)は、接続指向、信頼性の高いバイトストリームベースのトランスポートレイヤー通信プロトコルです。

接続指向:接続指向とは、TCP通信が1対1であること、つまり、UDPとは異なり、ポイントツーポイントのエンドツーエンド通信であることを意味します。
信頼性のある:TCPの信頼性により、ネットワークリンクの変更に関係なく、パケットが受信機に確実に配信されることを保証します。これにより、UDPのプロトコルパケット形式がTCPよりも複雑になります。
バイトストリームベース:TCPのバイトストリームベースの性質により、任意のサイズのメッセージの送信が可能になり、メッセージ順序が保証されます。前のメッセージが完全に受信されていなくても、後続のバイトが受信されたとしても、TCPは処理のためにアプリケーションレイヤーに配信されず、重複したパケットを自動的にドロップします。
ホストAとホストBが接続を確立すると、アプリケーションは仮想通信ラインを使用してデータを送信および受信する必要があるため、データ送信が確保される必要があります。 TCPプロトコルは、接続の確立、切断、保持などのタスクの制御を担当します。ここでは、仮想ラインは接続を確立することのみを意味すると言う必要があります。TCPプロトコル接続は、両側がデータ送信を開始し、データの信頼性を確保できることを示しています。ルーティングノードとトランスポートノードは、ネットワークデバイスによって処理されます。 TCPプロトコル自体は、これらの詳細には関係ありません。

TCP接続は全二重サービスです。つまり、ホストAとホストBはTCP接続で両方向にデータを送信できます。つまり、データは、双方向の流れでホストAとホストBの間に転送できます。

TCPは、接続の送信バッファーに一時的にデータを保存します。この送信バッファーは、3方向の握手中に設定されたキャッシュの1つです。その後、TCPは、適切な時期に宛先ホストの受信キャッシュに送信キャッシュのデータを送信します。実際には、各ピアには、ここに示すように、送信キャッシュと受信キャッシュがあります。

tcp-udp

送信バッファーは、送信されるデータを一時的に保存するために使用される送信者側のTCP実装によって維持されるメモリの領域です。接続を確立するために3方向の握手が実行されると、送信キャッシュがセットアップされ、データの保存に使用されます。送信バッファーは、ネットワークのうっ血と受信機からのフィードバックに従って動的に調整されます。

受信バッファーは、受信したデータを一時的に保存するために使用される受信側のTCP実装によって維持されるメモリの領域です。 TCPは受信したデータを受信キャッシュに保存し、上部アプリケーションが読み取るのを待ちます。

送信キャッシュと受信キャッシュのサイズは制限されていることに注意してください。キャッシュがいっぱいになると、TCPは、信頼できるデータ送信とネットワークの安定性を確保するために、混雑制御、フロー制御などの戦略を採用する可能性があります。

コンピューターネットワークでは、ホスト間のデータ送信はセグメントによって実行されます。では、パケットセグメントとは何ですか?

TCPは、着信ストリームをチャンクに分割し、各チャンクにTCPヘッダーを追加することにより、TCPセグメントまたはパケットセグメントを作成します。各セグメントは限られた時間のためにのみ送信でき、最大セグメントサイズ(MSS)を超えることはできません。途中で、パケットセグメントがリンクレイヤーを通過します。リンクレイヤーには、最大透過ユニット(MTU)があります。これは、データリンクレイヤーを通過できる最大パケットサイズです。最大送信ユニットは通常、通信インターフェイスに関連しています。

では、MSSとMTUの違いは何ですか?

コンピューターネットワークでは、異なるレベルの違いを考慮に入れるため、階層アーキテクチャは非常に重要です。各レイヤーの名前は異なります。輸送層では、データはセグメントと呼ばれ、ネットワークレイヤーでは、データはIPパケットと呼ばれます。したがって、最大透過ユニット(MTU)は、ネットワークレイヤーで送信できる最大IPパケットサイズと考えることができますが、最大セグメントサイズ(MSS)は、TCPパケットで一度に送信できる最大量のデータを指す輸送層の概念です。

最大セグメントサイズ(MSS)が最大透過ユニット(MTU)よりも大きい場合、IPフラグメンテーションはネットワークレイヤーで実行され、TCPは大きなデータをMTUサイズに適したセグメントに分割しないことに注意してください。 IPレイヤー専用のネットワークレイヤーにセクションがあります。

TCPパケットセグメント構造
TCPヘッダーの形式と内容を調べましょう。

TCPセグメント

シーケンス番号:TCP接続が確立されたときに接続が初期値として接続が確立され、シーケンス番号がSynパケットを介してレシーバーに送信されるときにコンピューターによって生成される乱数。データ送信中、送信者は送信されたデータの量に従ってシーケンス番号を増加させます。受信者は、受信したシーケンス番号に従ってデータの順序を判断します。データが故障していない場合、受信者はデータを並べ替えてデータの順序を確認します。

謝辞番号:これは、データの受領を確認するためにTCPで使用されるシーケンス番号です。これは、送信者が受信すると予想される次のデータのシーケンス番号を示します。 TCP接続では、受信者は受信したデータパケットセグメントのシーケンス番号に基づいて正常に受信されたデータを決定します。受信者がデータを正常に受信すると、ACKパケットを送信者に送信します。これには、確認確認番号が含まれます。 ACKパケットを受信した後、送信者は、返信番号を確認する前にデータが正常に受信されたことを確認できます。

TCPセグメントの制御ビットには、次のものが含まれます。

ackビット:このビットが1の場合、承認返信フィールドが有効であることを意味します。 TCPは、接続が最初に確立されたときにSynパケットを除き、このビットを1に設定する必要があることを指定します。
RSTビット:このビットが1の場合、TCP接続に例外があり、接続を切断することを強制する必要があることを示します。
syn Bit:このビットが1に設定されている場合、接続が確立され、シーケンス番号の初期値がシーケンス番号フィールドに設定されることを意味します。
フィンビット:このビットが1の場合、これ以上のデータが将来送信されず、接続が必要であることを意味します。
TCPのさまざまな機能と特性は、TCPパケットセグメントの構造によって具体化されます。

UDPとは何ですか? (mylinking'sネットワークタップそしてネットワークパケットブローカーTCPまたはUDPパケットの両方を処理できます)
ユーザーデータグラムプロトコル(UDP)は、ConnectionLess Communication Protocolです。 TCPと比較して、UDPは複雑な制御メカニズムを提供しません。 UDPプロトコルにより、アプリケーションは接続を確立せずにカプセル化されたIPパケットを直接送信できます。開発者がTCPの代わりにUDPを使用することを選択すると、アプリケーションはIPと直接通信します。

UDPプロトコルのフルネームはユーザーデータグラムプロトコルであり、そのヘッダーはわずか8バイト(64ビット)であり、非常に簡潔です。 UDPヘッダーの形式は次のとおりです。

UDPセグメント

宛先およびソースポート:彼らの主な目的は、どのプロセスUDPがパケットを送信するかを示すことです。
パケットサイズ:パケットサイズのフィールドは、UDPヘッダーのサイズとデータのサイズを保持します
チェックサム:UDPヘッダーとデータの信頼できる配信を確保するように設計されたチェックサムの役割は、UDPパケットの送信中にエラーまたは破損が発生したかどうかを検出して、データの整合性を確保することです。

MylinkingのTCPとUDPの違いネットワークタップそしてネットワークパケットブローカーTCPパケットまたはUDPパケットの両方を処理できます
TCPとUDPは、次の面で異なります。

TCP対UDP

繋がり:TCPは、データを転送する前に接続を確立する必要がある接続指向のトランスポートプロトコルです。一方、UDPは接続を必要とせず、すぐにデータを転送できます。

サービスオブジェクト:TCPは1対1の2ポイントサービスです。つまり、接続には相互に通信する2つのエンドポイントしかありません。ただし、UDPは、1対1、1対多、および多くのインタラクティブなコミュニケーションをサポートしており、複数のホストと同時に通信できます。

信頼性:TCPは、データを確実に配信するサービスを提供し、データがエラーなし、損失がなく、非重複がなく、オンデマンドで到着するようにします。一方、UDPは最善の努力をしており、信頼できる配達を保証しません。 UDPは、送信中のデータ損失やその他の状況に苦しむ可能性があります。

混雑制御、フロー制御:TCPには渋滞制御およびフロー制御メカニズムがあり、ネットワーク条件に応じてデータ送信レートを調整して、データ送信のセキュリティと安定性を確保できます。 UDPには、ネットワークが非常に混雑していても、輻輳制御およびフロー制御メカニズムはありません。UDP送信率を調整しません。

ヘッダーオーバーヘッド:TCPのヘッダー長は長く、通常は20バイトで、オプションフィールドを使用すると増加します。一方、UDPには8バイトの固定ヘッダーがあるため、UDPのオーバーヘッドは低いです。

TCP対UDP

TCPおよびUDPアプリケーションシナリオ:
TCPとUDPは2つの異なる輸送層プロトコルであり、アプリケーションシナリオにいくつかの違いがあります。

TCPは接続指向のプロトコルであるため、信頼できるデータ配信が必要なシナリオで主に使用されます。一般的なユースケースには次のものが含まれます。

FTPファイル転送:TCPは、転送中にファイルが失われ、破損していないことを確認できます。
http/https:TCPは、Webコンテンツの完全性と正確性を保証します。
UDPはコネクションレスプロトコルであるため、信頼性保証は提供されませんが、効率とリアルタイムの特性があります。 UDPは、次のシナリオに適しています。

DNSなどのローパケットトラフィック(ドメイン名システム):DNSクエリは通常短いパケットであり、UDPはそれらをより速く完了することができます。
ビデオやオーディオなどのマルチメディア通信:リアルタイムの要件が高いマルチメディア送信の場合、UDPはより低いレイテンシを提供して、データをタイムリーに送信できるようにします。
ブロードキャスト通信:UDPは、1対Manyで多くのコミュニケーションをサポートし、ブロードキャストメッセージの送信に使用できます。

まとめ
今日、TCPについて学びました。 TCPは、接続指向の信頼性が高く、バイトストリームベースのトランスポートレイヤー通信プロトコルです。接続、握手、承認を確立することにより、信頼できる送信と整然としたデータの受容を保証します。 TCPプロトコルは、ポートを使用してプロセス間の通信を実現し、異なるホストで実行されるアプリケーションプロセスに直接通信サービスを提供します。 TCP接続は全二重であるため、同時双方向データ転送が可能になります。対照的に、UDPはConnectionless志向の通信プロトコルであり、信頼性保証を提供せず、リアルタイムの要件が高いシナリオに適しています。 TCPとUDPは、接続モード、サービスオブジェクト、信頼性、混雑制御、フロー制御、その他の側面で異なり、そのアプリケーションシナリオも異なります。


投稿時間:12月3日 - 2024年