Tcp と udp は、「トランスポート層」プロトコルに属します。 UDP と TCP はコンピュータのトランスポート層の重要なプロトコルで、TCP はコネクション指向、UDP はコネクションレス指向です。 TCP (Transmission Control Protocol) は、IETF の RFC 793 によって定義された、コネクション指向で信頼性の高いバイト ストリーム ベースのトランスポート層通信プロトコルです。 UDP (ユーザー データグラム プロトコル) は、アプリケーションが接続を確立せずにカプセル化された IP パケットを送信する方法を提供します。
このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。
コンピュータ ネットワーク アーキテクチャとは、コンピュータ ネットワークの階層構造モデルを指します。これは、各層のプロトコルと層間のポートの集合です。コンピュータ ネットワークでの通信は、ネットワーク通信プロトコルに依存する必要があります。1997 年に国際標準化機構 (ISO) によって提案され、広く使用されているオープン システム相互接続 (OSI) 参照モデルは、慣例的に ISO/OSI 参照モデルと呼ばれています。
OSI 7 層参照モデル:
OSI は、ネットワーク システムを機能的に比較的独立した 7 つの順序付けられたサブシステムに論理的に分割します。以下の図に示すように、機能的に比較的独立した 7 つのレベルで構成されます。低いものから高いものへと、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層となります。
TCP/IP リファレンス モデル
TCP/IP には、ネットワーク インターフェイス層、インターネット層、トランスポート層とアプリケーション層。 TCP/IP 階層と OSI 階層の比較を次の図に示します。
tcp と udp は、コンピュータ ネットワーク アーキテクチャの「トランスポート層」プロトコルに属します。
インターネットのトランスポート層には、相互に補完する 2 つの主要なプロトコルがあります。コネクションレスは UDP であり、アプリケーションにパケットを送信する機能を与え、必要なレベルで独自のプロトコルを構築できるようにすること以外は、特に何も行いません。接続指向のものは TCP で、ほとんどすべてを実行します。
トランスポート層は、ネットワーク層システム全体における重要な層の 1 つです。ネットワーク層は宛先ホストにパケットを送信するだけですが、実際の通信はホストではなく、ホスト内のプロセスです。 。トランスポート層は、その上のアプリケーション層に通信サービスを提供します。通信指向の最上位層に属します。ネットワークのエッジ部分にある 2 つのホストがネットワークのコア部分の機能を使用してエンドツーエンド通信を行う場合に使用されます。 、ホストのプロトコル スタックのみ トランスポート層のみが存在する トランスポート層は、プロセス間の論理通信を提供する トランスポート層は、基礎となるネットワーク層の核となる詳細を高レベルのユーザーから保護し、アプリケーションに終わりがあるかのように見せます2 つのトランスポート層エンティティ間のエンドツーエンド ロジック 通信チャネル;
IP パケットは宛先ホストにパケットを送信できますが、このパケットは依然としてホストのネットワーク層に留まり、配信されません2 台のコンピュータが通信するとき、そのプロセス中に、このホスト上のプロセスは実際には別のホスト上のプロセスとデータを交換します。トランスポート層の観点から見ると、通信の実際のエンドポイントはホストではなくホスト内のプロセス、つまりアプリケーション プロセス間の通信がエンドツーエンド通信です。
トランスポート層の 2 つの重要な機能:
- 多重化 : 送信側が使用しないアプリケーション プロセスは、同じトランスポート層プロトコルを使用してデータを送信できます
- ##分離: 受信者のトランスポート層は、メッセージのヘッダーを取り除いた後、宛先アプリケーション プロセスにデータを正しく配信できます。
ネットワーク層とトランスポート層の違い: ネットワーク層はホスト間の論理通信を提供しますが、トランスポート層はアプリケーションにエンドツーエンドの論理通信を直接提供します。
TCP と UDP
UDP と TCP は、コンピュータのトランスポート層の重要なプロトコルです。TCP はコネクション指向であり、UDP はコネクションレス指向です。
TCP/IP 層のトランスポート層は、 16 ビット ポート番号 ポートを表す場合、ポート番号はローカルな意味のみを持ちます。コンピュータ アプリケーション層の各プロセスとトランスポート層の相互作用の間の層間インターフェイスをマークします。異なるネットワーク番号間のポート番号これらは関連していないため、2 つのコンピュータ間のプロセスが相互に通信するには、お互いの IP アドレス (相手のコンピュータを見つけるため) とポート番号 (プロセスを見つけるため) を知っている必要があります。インターネット上の通信はクライアントサーバー方式を採用しており、クライアントが通信要求を行う際には、相手サーバーのIPアドレスとポート番号を知る必要があります。
UDP
ユーザー データグラム プロトコルは、IP メッセージに多重化、逆多重化、およびエラー検出の機能を追加するだけです。
1. UDP の特徴
- UDP はコネクションレス型です: 送信前に接続は必要ありません。
- UDP はベストエフォート配信を使用し、信頼性の高い配信を保証しません。
- UDP はメッセージ指向です。次の図に示すように、完全なメッセージが一度に送信されます。
- UDP には輻輳制御がありません。
- UDP 1 対 1 および 1 対 1 の対話型通信をサポートします。1 対多、多対 1、および多対多の対話型通信をサポートします。
- UDP ヘッダーのオーバーヘッドが小さい;
2. UDP メッセージ
ヘッダー フィールドは、送信元ポート、宛先ポート、長さ、チェックサムを含むわずか 8 バイトです。 12 バイトの疑似ヘッダは、チェックサムを計算する目的で一時的に追加されます。
TCP
伝送制御プロトコル (TCP、伝送制御プロトコル) は、コネクション指向で信頼性の高いバイト ストリーム ベースのトランスポート層通信プロトコルです。IETF の RFC 793 定義。
TCP: ユーザー メッセージ プロトコル、接続指向、データが送信される前に接続を確立する必要があり、データ送信が完了すると接続が解放されます。TCP はブロードキャスト サービスやマルチキャスト サービスを提供しません。
#1. TCP の特性
- TCP は接続指向であり、信頼性の高い配信を提供します。
- フロー制御を備えています。
- 輻輳制御;
- 全二重通信を提供;
- バイト ストリーム指向 (アプリケーション層から送信されたメッセージをバイト ストリームとして扱い、バイト ストリームをさまざまなサイズのブロックのデータに編成します) 、各 TCP 接続はポイントツーポイント (1 対 1) のみ可能です。
2. TCP 接続
TCP 接続は 2 つのホスト番号やポート番号ではなく、ソケットです: ソケット = IP アドレス: ポート番号
3. TCP セグメント ヘッダーの形式
- 送信元ポートと宛先ポート: それぞれ 2 バイトを占有し、送信元ポートと宛先ポートがそれぞれ書き込まれます;
- シリアル番号: 4 バイト、TCP はバイト ストリームに向けられており、TCP 接続で送信されるバイト ストリームの各バイトは、番号、つまり開始番号の順序になっています。送信されるバイト ストリーム全体は、送信が確立されたときに設定する必要があります;
- 確認番号: 受信されることが予想される次のメッセージ セグメントのシーケンス番号。たとえば、A が送信したメッセージ セグメントを B が正しく受信すると、シーケンス番号は 501、データ長は 200 バイトであるため、B は次のメッセージ セグメントのシーケンス番号が 701 であることを期待します。 Aさんへ、確認番号は701です。
- データ オフセット: メッセージ セグメントの先頭からのデータ部分のオフセットを指し、実際にはヘッダーの長さを指します。
- 確認 ACK: ACK=1 の場合、確認番号フィールドは有効ですが、それ以外の場合は無効です。 TCP では、接続の確立後、送信されるすべてのメッセージ セグメントの ACK が 1 に設定されている必要があると規定しています。
- 同期 SYN: 接続の確立時にシーケンス番号を同期するために使用されます。 SYN=1、ACK=0の場合、接続要求セグメントであることを示します。相手が接続の確立に同意した場合、応答メッセージでは SYN=1 および ACK=1 となります。
- 終了 FIN: 接続を解放するために使用されます。FIN=1 の場合、このセグメントの送信者のデータが送信され、接続を解放する必要があることを意味します。
- ウィンドウ: ウィンドウ値は、受信者が送信者に送信ウィンドウを設定させるための基礎として機能します。この制限の理由は、受信側のデータ キャッシュ スペースが限られているためです。
4. TCP スリーウェイ ハンドシェイク
- まず、B は LISTEN (リスニング) 状態にあり、顧客の接続要求を待っています。
- A は、接続要求メッセージ (SYN=1、ACK=0) を B に送信し、初期シーケンス番号 x を選択します。
- B は接続要求メッセージを受信し、接続の確立に同意すると、接続確認メッセージ (SYN=1、ACK=1、確認番号 x 1) を A に送信し、また、初期シーケンス番号 y 。
- A は、B の接続確認メッセージを受信した後、B にも確認を送信します。確認番号は y 1、シーケンス番号は x 1 です。
- B が A からの確認を受信すると、接続が確立されます。
5. TCP の 4 つのウェーブ
- A は接続解放メッセージ FIN=1 を送信します。
- B は確認を受信後、送信します。このとき、TCP はセミクローズド状態です。B は A にデータを送信できますが、A は B にデータを送信できません。
- B が接続を必要としなくなったら、接続解放メッセージ (FIN=1) を送信します。
- A は、確認を受信した後、確認を送信し、TIME-WAIT 状態に入り、2 MSL (最大メッセージ生存時間) 待ってから接続を解放します。
- B は、A の確認を受け取った後、接続を解放します。
4 回手を振る理由
クライアントが FIN 接続解放メッセージを送信すると、サーバーはメッセージを受信し、CLOSE-WAIT 状態に入ります。この状態は、サーバーが未転送のデータを送信するための状態であり、転送完了後、サーバーは FIN コネクション解放メッセージを送信します。
TIME_WAIT
クライアントは、サーバーから FIN メッセージを受信した後にこの状態に入ります。この時点では、直接 CLOSED 状態にはなりません。また、クライアントは、CLOSED 状態になるまで待つ必要があります。タイマーで設定した時間2MSLです。これを行う理由は 2 つあります。
- 最後の確認メッセージが確実に届くようにするためです。 B が A からの確認メッセージを受信しない場合、接続解放要求メッセージを再送信し、A はこの状況に対処するために一定時間待機します。
- 一定時間待機することで、この接続中に生成されたすべてのパケットがネットワークから消えるようになり、次の新しい接続に古い接続要求パケットが存在しなくなります。
TCP の信頼性の高い送信の実装
TCP は、信頼性の高い送信を実現するためにタイムアウト再送信を使用します。送信されたメッセージ セグメントがタイムアウト期間内に利用できない場合、 , 確認を受信した後、セグメントを再送信します;
1. TCP スライディング ウィンドウ
ウィンドウはキャッシュの一部であり、バイト ストリームを一時的に保存するために使用されます。送信者と受信者はそれぞれウィンドウを持ち、受信者は TCP セグメントのウィンドウ フィールドを通じて送信者にウィンドウ サイズを通知し、送信者はこの値とその他の情報に基づいて独自のウィンドウ サイズを設定します。
送信ウィンドウ内のすべてのバイトの送信が許可され、受信ウィンドウ内のすべてのバイトの受信が許可されます。送信ウィンドウの左側のバイトが送信および確認された場合は、左側の最初のバイトが送信および確認されなくなるまで、送信ウィンドウを右に一定距離スライドさせます。受信ウィンドウのスライドも同様です。ウィンドウの左側のバイトが送信および確認され、ホストに配信されたら、受信ウィンドウを右にスライドさせます。
受信ウィンドウは、ウィンドウ内で順番に到着した最後のバイトのみを確認します。たとえば、受信ウィンドウが受信したバイトは {31, 34, 35} で、そのうち {31} は順番に到着します。 {34, 35} はそうではないため、バイト 31 のみが確認されます。送信者はバイトの確認応答を取得すると、このバイトより前のすべてのバイトが受信されたことを認識します。
2. TCP フロー制御
TCP のフロー制御は、スライディング ウィンドウを通じて実装されます。一般に、送信者はより高速に送信することが期待されます。データは速ければ速いほど良いのですが、送信側のデータが速すぎると、受信側がそれを受け入れる時間がなくなってしまいますので、送信側のトラフィックを制御する必要があります。TCP でのトラフィック制御は主に、スライディング ウィンドウ サイズ (sliding window size). 受信者によって送信される確認 メッセージ内のウィンドウ フィールドを使用して、送信者のウィンドウ サイズを制御することができ、それによって送信者の送信速度に影響を与えることができます。ウィンドウフィールドを 0 に設定すると、送信者はデータを送信できなくなります。
3. TCP 輻輳制御
ネットワークが輻輳すると、パケットが失われ、送信者は再送信を続けるため、ネットワークの輻輳が増大します。したがって、輻輳が発生した場合には、送信側のレートを制御する必要があります。これはフロー制御に非常に似ていますが、開始点が異なります。フロー制御は受信機が時間内に受信できるようにすること、輻輳制御はネットワーク全体の輻輳レベルを下げることです。
輻輳制御条件:
輻輳制御はフロー制御とは異なります: 輻輳制御は、ネットワークに過剰なデータが注入されるのを防ぎ、ネットワーク内のルーターやリンクが過負荷または輻輳にならないようにします。制御はグローバル プロセスであり、すべてのホスト、すべてのルーター、およびネットワーク パフォーマンスの低下に関連するすべての要素を含むように設計されています。ただし、フロー制御は多くの場合ポイントツーポイント トラフィックの制御であり、エンドツーエンドの問題です。区別に注意してください。
TCP の輻輳制御の主なアルゴリズム: スロー スタート、輻輳回避、高速再送信、高速リカバリ送信側は、輻輳と呼ばれるプログラムを維持する必要があります。ウィンドウの状態変数 (cwnd)。輻輳ウィンドウと送信側ウィンドウの違いに注意してください。輻輳ウィンドウは単なる状態変数であり、実際に動作するのは送信側ウィンドウです。送信者が送信できるデータ量を決定します。
議論の便宜上、次の仮定を立てます:
- 受信側には十分な大きさの受信バッファがあるため、フロー制御は発生しません。 TCP ウィンドウはバイトに基づいていますが、ここではウィンドウ サイズの単位がメッセージ セグメントに設定されています。
1. スロー スタートと輻輳の回避### 送信の最初の実行はスロー スタートであり、cwnd = 1 とします。送信者は 1 セグメントのみ送信できます。確認応答が受信されると cwnd は 2 倍になるため、送信者が送信できるセグメントの数は次のとおりです: 2、4、8...
スロー スタートは各ラウンドで cwnd になることに注意してください。これにより、cwnd が非常に急速に増大し、送信側の送信速度が速くなりすぎ、ネットワークの輻輳が発生する可能性が高くなります。
2. 高速再送信と高速リカバリ 受信側では、メッセージ セグメントを受信するたびに、最後に受信した順序付けされたメッセージ セグメントを処理する必要があります。 。たとえば、M1 と M2 が受信されており、M4 が受信された場合は、M2 に対する確認応答が送信される必要があります。
参考: Computer Network 第 5 版、Xie Xiren 編
(学習ビデオの共有:Web フロントエンドの概要)
以上がtcp と udp はコンピュータ ネットワーク アーキテクチャにおいてどのプロトコルに属しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

国内のAI Dark Horse Deepseekは強く上昇し、世界のAI業界に衝撃を与えました! 1年半しか設立されていないこの中国の人工知能会社は、無料でオープンソースのモックアップであるDeepseek-V3とDeepseek-R1で世界的なユーザーから広く称賛されています。 Deepseek-R1は完全に発売され、パフォーマンスはOpenAio1の公式バージョンに匹敵します! Webページ、アプリ、APIインターフェイスで強力な機能を体験できます。ダウンロード方法:iOSおよびAndroidシステムをサポートすると、ユーザーはApp Storeを介してダウンロードできます。 Deepseek Webバージョン公式入り口:HT

DeepSeek:サーバーに混雑している人気のあるAIを扱う方法は? 2025年のホットAIとして、Deepseekは無料でオープンソースであり、OpenAio1の公式バージョンに匹敵するパフォーマンスを備えており、その人気を示しています。ただし、高い並行性は、サーバーの忙しさの問題ももたらします。この記事では、理由を分析し、対処戦略を提供します。 Deepseek Webバージョンの入り口:https://www.deepseek.com/deepseekサーバーに忙しい理由:高い並行アクセス:Deepseekの無料で強力な機能が同時に使用する多数のユーザーを引き付け、サーバーの負荷が過剰になります。サイバー攻撃:Deepseekが米国の金融産業に影響を与えることが報告されています。

2025年の初めに、国内のAI「Deepseek」が驚くべきデビューを果たしました!この無料のオープンソースAIモデルは、OpenAIのO1の公式バージョンに匹敵するパフォーマンスを備えており、Webサイド、アプリ、APIで完全に起動され、iOS、Android、およびWebバージョンのマルチターミナル使用をサポートしています。 DeepSeekの公式Webサイトおよび使用ガイドの詳細な検索:公式Webサイトアドレス:https://www.deepseek.com/sing for webバージョンの手順:上記のリンクをクリックして、DeepSeekの公式Webサイトを入力します。ホームページの[会話の開始]ボタンをクリックします。最初に使用するには、携帯電話検証コードでログインする必要があります。ログインした後、ダイアログインターフェイスを入力できます。 DeepSeekは強力で、コードを書き、ファイルを読み取り、コードを作成できます

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

メモ帳++7.3.1
使いやすく無料のコードエディター
