TCP (Transmission Control Protocol)
は接続指向のプロトコルです。つまり、データを送受信する前に相手との信頼できる接続を確立する必要があります。 TCP 接続は、確立される前に 3 つの「会話」を経る必要があります
TCPスリーウェイ ハンドシェイクプロセス:
1 ホスト A は、同期シーケンス番号のフラグ ビットを含むデータ セグメントを送信しますホスト B はホスト B に接続を確立するよう要求します。このデータ セグメントを通じて、ホスト A はホスト B に次の 2 つのことを伝えます。「あなたと通信したい。私に応答するための開始データ セグメントとしてどのシーケンス番号を使用できるか」。
2 ホスト A からリクエストを受信した後、ホスト B は確認応答 (ACK) と同期シーケンス番号 (SYN) フラグ ビットを含むデータ セグメントでホスト A に応答し、さらに次の 2 つのことをホスト A に伝えます。要求されました。データを送信できます。私に応答するための開始データ セグメントとしてどのシーケンス番号を使用しますか?
3 ホスト A は、このデータ セグメントを受信した後、それが送信されたことを確認するために確認応答を送信します。データセグメント: 「応答を受信しました。実際のデータの送信を開始します
このようにして、3ウェイハンドシェイクが完了し、ホストAとホストBはデータを送信できるようになります。
3 ウェイ ハンドシェイクの機能:
1) アプリケーション層データはありません
2) SYN フラグは、TCP 接続が確立されたときにのみ 1 に設定されます
3)ハンドシェイクが完了すると、SYN フラグが設定されます 0 に設定します
TCP では、接続を確立するために 3 回のハンドシェイクが必要であり、切断するには 4 回
1 ホスト A がデータ送信を完了すると、制御ビット FIN を 1 に設定し、TCP 接続要求の停止を提案します
2 FIN を受信した後、ホスト B はそれに応答し、この方向の TCP 接続が閉じられることを確認し、ACK を 1 に設定します
3 B 側が反対方向に別の クローズ要求を行い、 FIN を 1 に設定します。
4 ホスト A がホスト B の要求を確認し、ACK を 1 に設定し、双方向シャットダウンが終了します
。TCP の 3 ウェイ ハンドシェイクと 4 回の切断からわかるように、TCP はコネクション指向の通信方式を使用しており、これによりデータ通信の信頼性が大幅に向上し、データの正式な送信前にデータの送信側と受信側が対話できるようになります。データ、データの正式な送信のための信頼できる基盤を築く
名詞 説明
ACK - データを確認する TCP ヘッダーの制御ビットの 1 つ。たとえば、確認番号が X である場合は、最初の X-1 データ セグメントが受信されたことを意味します。確認番号は ACK=1 の場合にのみ有効です。 ACK=0 の場合、データの整合性を確保するために、データを再送信する必要があります。これは、TCP が接続を確立するときに発生します。ビットは 1 に設定されます
FIN - 送信側が送信タスクビットを完了し、TCP がデータ送信を完了して切断する必要があるとき、切断を提案する側 このビットを 1 に設定します
TCP ヘッダー構造:
送信元ポート 16 ビット
宛先ポート 16 ビット
シーケンス番号 32 ビット
応答シーケンス番号 32 ビット
TCP ヘッダー長 4 ビット
予約済み6ビット
制御コード6ビット
ウィンドウサイズ16ビット
オフセット16ビット
チェックサム16ビット
オプション3 2 ビット (オプション)
このようにして、 TCP ヘッダーの最小長 (20 バイト) を取得します。
UDP (ユーザーデータプロトコル、ユーザーデータグラムプロトコル)
(1) UDP は、データを送信する前に接続を確立せず、アプリケーションからデータを取得してできるだけ早くオンラインに送信します。送信側では、UDP がデータを送信する速度は、アプリケーションがデータを生成する速度、コンピューターの機能、受信側の送信帯域幅によってのみ制限されます。UDP は各メッセージ セグメントをキューに入れ、アプリケーションは、毎回メッセージ セグメントをキューから読み取ります。
(2) データ送信時にコネクションを確立しないため、送受信状態などのコネクション状態を維持する必要がありません。そのため、サーバーマシンは複数のクライアントに同時に同じメッセージを送信することができます。時間。
(3) UDP パケットのヘッダーは非常に短く、わずか 8 バイトであり、TCP の 20 バイトのパケットと比較して追加のオーバーヘッドが非常に小さいです。
(4) スループットは輻輳制御アルゴリズムによって規制されず、アプリケーション ソフトウェアによって生成されるデータのレート、送信帯域幅、ソースと端末のホストのパフォーマンスによってのみ制限されます。
(5) UDP はベストエフォート配信を使用します。つまり、信頼性の高い配信が保証されていないため、ホストは複雑なリンク状態テーブル (テーブルには多くのパラメーターがあります) を維持する必要はありません。
(6) UDP はメッセージ指向です。送信者の UDP によってアプリケーション プログラムに渡されたメッセージは、ヘッダーが追加された後、IP 層に配信されます。分割も結合も行われませんが、これらのパケットの境界は保持されるため、アプリケーションは適切なパケット サイズを選択する必要があります。 2 つのホスト間の TCP/IP 通信が正常かどうかをテストするために、「ping」コマンドがよく使用されます。実際、「ping」コマンドの原理は、UDP データ パケットを他のホストに送信し、次に他のホストに送信することです。データ パケットの受信を確認します。データ パケットが到着したメッセージが時間内にフィードバックされると、ネットワークはオープンになります。
UDPヘッダー構造:
送信元ポート 16ビット
宛先ポート 16ビット
長さ 16ビット
チェックサム 16 ビット
TCP と UDP の違いの概要:
1. コネクションベースとコネクションレス。
2. システムリソースの要件 (TCP が増加し、UDP が減少)。ストリーム モードとデータグラム モード;
5.TCP はデータの正確性を保証しますが、UDP はパケットを失う可能性があり、TCP はデータの順序を保証しますが、UDP は保証しません。
以上がTCP/IP と UDP の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。