リンクを確立するための TCP 3 方向ハンドシェイクとリンクを切断するための 4 方向ウェーブの分析例
### ###### 一歩ずつ。
TCP プロトコルについて簡単に紹介しましょう。 TCP (伝送制御プロトコル) は、コネクション指向で信頼性の高い、バイト ストリーム ベースのトランスポート層プロトコルです。複雑ではありますが、プログラマーと運用保守担当者の両方が知っておく必要がある基本的なスキルです。
内容: ポート番号 [16 ビット]、シーケンス番号 [32 ビット]、オフセット [4 ビット]、予約済み [6 ビット]、フラグ [6 ビット]、ウィンドウ サイズ (ウィンドウ) [16 ビット]、チェックサム [16 ビット]、緊急ポインタ [16 ビット]、TCP オプション
- TCP 接続では、同じ接続を表すために 4 つのタプル (src_ip、src_port、dst_ip、dst_port) が必要です。正確には、これは 5 つのタプルで、1 つはプロトコルです。ただし、ここでは TCP プロトコルについてのみ説明しているため、ここでは 4 倍についてのみ説明します。
- シーケンス番号
- はパケットのシーケンス番号です。
はネットワークパケットの並べ替えの問題を解決するために使用されます。
確認応答番号 - はACKです - 受信を確認するために使用され、
はパケットを失わないという問題を解決するために使用されます。
Window は Advertized-Window - とも呼ばれ、有名なスライディング ウィンドウ (Sliding Window) でもあります。
はフロー制御を解決するために使用されます 。
TCP フラグ - (パケットのタイプ)
は、主に TCP ステート マシン を制御するために使用されます。 URG: 緊急ポインタは有効です
ACK: 確認シーケンス番号は有効です PSH: 受信機はこのセグメントをできるだけ早くアプリケーション層に渡す必要があります RST : 接続の再構築 SYN: 接続の開始に使用される同期シーケンス番号 FIN: 発信者が送信タスクを完了 (アクティブに終了) スリーウェイ ハンドシェイクが確立されました Link
1. 要求側 (クライアント) は、クライアントが接続するサーバーのポートを示すために SYN=1 を送信します。TCP SYN=1 の場合はデータを伝送できないと規定されていますが、シーケンス番号が消費されるため、初期シーケンス番号 seq を seq=x として乱数として宣言します。
なぜ 3 ウェイ ハンドシェイクなのかを詳しく見てみましょう。
クライアントによって送信された最初の接続要求メッセージ セグメントは失われませんでしたが、特定のネットワーク ノードに長時間留まったため、接続が解放されてからサーバーに到達するまでに一定の時間が遅延しました。これは、かなり前に期限が切れたメッセージ セグメントであることが判明しました。ただし、サーバーはこの無効な接続要求セグメントを受信すると、それがクライアントによって再度送信された新しい接続要求であると誤って認識します。したがって、確認メッセージ セグメントをクライアントに送信し、接続の確立に同意します。 「スリーウェイ ハンドシェイク」が使用されていないと仮定すると、サーバーが確認を送信する限り、新しい接続が確立されます。クライアントは接続を確立するリクエストを発行していないため、サーバーの確認には注意を払わず、サーバーにデータを送信しません。しかし、サーバーは新しいトランスポート接続が確立され、クライアントがデータを送信するのを待っていると考えます。このようにして、サーバーの多くのリソースが無駄になります。 「スリーウェイハンドシェイク」方式を採用することで、上記の現象を防ぐことができます。たとえば、先ほどの状況では、クライアントはサーバーの確認に確認を送信しません。サーバーは確認を受信できないため、クライアントが接続の確立を要求しなかったことを認識します。 "
これは非常に明白で、サーバーが待機してリソースを浪費することがなくなります。
では、なぜ 4 つの波があるのでしょうか?
TCP プロトコルは、A 接続型で、信頼性が高く、バイト ストリーム ベースのトランスポート層通信プロトコルです。TCP は全二重モードです。つまり、ホスト 1 が FIN セグメントを送信するとき、それはホスト 1 に送信するデータがないことだけを意味します。1 はホスト 2 に、そのすべてのデータが送信されたことを伝えます。送信されました。ただし、ホスト 1 はこの時点でもホスト 2 からのデータを受け入れることができます。ホスト 2 が ACK メッセージ セグメントを返した場合、ホスト 1 には送信するデータがないことがすでにわかっていることを意味します。ただし、ホスト 2 は引き続きホストにデータを送信できます。 1; ホスト 2 も FIN セグメントを送信すると、ホスト 2 には送信するデータがないことを意味し、送信するデータがないことをホスト 1 に伝え、お互いが喜んで TCP 接続を終了します。 4 つの別れの原理を正しく理解するには、4 つの別れの間の状態の変化を理解する必要があります。
以上がリンクを確立するための TCP 3 方向ハンドシェイクとリンクを切断するための 4 方向ウェーブの分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 中国語版
中国語版、とても使いやすい

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









win10でtcp/ipプロトコルをリセットするにはどうすればよいですか?実際、その方法は非常に簡単で、ユーザーがコマンド プロンプトに直接入力し、ctrl Shift Enter キーの組み合わせを押して操作を実行するか、reset コマンドを直接実行して設定することができます。 Windows 10 で TCP/IP プロトコル スタックをリセットする方法をユーザーに注意深く紹介します。 Windows 10 で tcp/ip プロトコル スタックをリセットする方法 1。 管理者権限 1. ショートカット キー win R を使用してファイル名を指定して実行ウィンドウを直接開き、「cmd」と入力し、ctrl Shift Enter キーの組み合わせを押し続けます。 2. または、スタート メニューでコマンド プロンプトを直接検索し、右クリックします。

TCP クライアント TCP プロトコルを使用して継続的な対話を実現するクライアントのサンプル コード: importsocket#クライアント設定 HOST='localhost'PORT=12345#TCP ソケットを作成し、サーバーに接続 client_socket=socket.socket(socket.AF_INET,socket . SOCK_STREAM)client_socket.connect((HOST,PORT))whileTrue:#ユーザー入力を取得 message=input("送信するメッセージを入力してください:&

ここで言う「コネクション指向」とは、コネクションを確立し、コネクションを利用し、コネクションを解放する必要があることを意味します。接続の確立とは、よく知られている TCP スリーウェイ ハンドシェイクを指します。接続を使用する場合、データは 1 回の送信と 1 回の確認の形式で送信されます。また、一般的な TCP 4 波である接続の解放もあります。

TCP は、コンピュータ ネットワーク通信プロトコルの一種であり、コネクション型の伝送プロトコルです。 Javaアプリケーション開発において、TCP通信はクライアントとサーバー間のデータ送信、音声や映像のリアルタイム送信など、さまざまなシーンで広く利用されています。 Netty4 は、サーバーとクライアント間のデータ交換プロセスを最適化し、効率性と信頼性を高めることができる、高性能、拡張性の高いネットワーク プログラミング フレームワークです。 TCP 通信に Netty4 を使用する具体的な実装手順は次のとおりです。

1 つの TCP 接続を使用して複数のファイルを送信することについてこのブログが書かれているのはなぜですか?最近関連の本を読んでいるのですが、単に Socket を使ってプログラミングするのは問題ありませんが、これはいくつかの基本的な概念を確立するだけです。本当の問題に対してはまだ何もできません。ファイルを転送する必要がある場合、データ (バイナリ データ) を送信しただけのように見えますが、ファイルに関する一部の情報 (ファイル拡張子) が失われていることがわかります。そして、毎回 1 つのファイルを送信するために 1 つのソケットしか使用できないため、連続してファイルを送信する方法はありません (ファイルの送信を完了するにはストリームを閉じることに依存しているため、実際にはファイルの長さがわかりません。したがって、1 つのソケット接続がファイルを表す場合にのみファイルを送信できます)。

以下では、説明の便宜上、TCPの通信当事者のうち、通信当事者をA、Bに置き換えて説明する。 TCP プロトコルによれば、A が接続を閉じた後も B がデータを送信し続けると、B は A の RST 応答を受信します。 B がデータの送信を続ける場合、システムは SIGPIPE 信号を送信して、接続が切断されたことを通知し、送信を停止します。 SIGPIPE シグナルに対するシステムのデフォルトの処理動作は、プロセス B を終了させることです。 SIGPIPE 信号に対するオペレーティング システムのデフォルトの処理動作は非常に不親切です。これを分析してみましょう。 TCP 通信は全二重チャネルであり、2 つの単信チャネルに相当し、接続の各端が 1 つのチャネルを担当します。反対側が「閉じる」場合、2 つのチャネル全体を閉じることが意図されていますが、ローカル エンドは FIN パケットのみを受信します。 TCP プロトコルの規定に従って、

TCP と IP はインターネットにおける 2 つの異なるプロトコルです: 1. TCP はトランスポート層プロトコル、IP はネットワーク層プロトコル; 2. TCP はデータ パケットのセグメント化、並べ替え、確認、再送信などの機能を提供します。プロトコルはデータ パケットの送信元アドレスと宛先アドレスを提供する役割を果たします; 3. TCP は接続指向のプロトコルですが、IP プロトコルはコネクションレスです; 4. TCP はフロー制御と輻輳制御も提供します。

かつて、面接でよくある質問で、「ブラウザに URL が入力されてからページが表示されるまでの過程で何が起こっていますか?」という質問がありました。予習をした学生ならほとんど答えられると思いますが、「受信したHTMLに数十個の画像タグが含まれている場合、どのような方法で、どのような順序で、どれだけの接続が確立され、どのようなプロトコルでダウンロードされるのか」と続けて尋ねると、これらの画像はどうでしょうか?
