検索
ホームページ運用・保守安全性TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

1. TCP (伝送制御プロトコル)

TCP は接続指向であり、信頼性の高いプロセスです。 -プロセス間通信プロトコル
TCPは全二重サービスを提供します。つまり、データは同時に両方向に送信できます

2. TCPセグメント(カプセル化) IP データグラム内)

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

1、ポート番号

1) 送信元ポート番号: 送信者に対応するポート番号process では、送信元 IP とポートの機能は、メッセージの返信アドレスをマークすることです。

2) ターゲット ポート番号: 受信側のプロセスに対応し、受信側はデータ セグメントを受信した後、このポートに基づいてデータをアプリケーション インターフェイスにマッピングします。

注: TCP ヘッダーの送信元ポート番号と宛先ポート番号は、TCP 接続を一意に決定するための IP データグラムの送信元 IP と宛先 IP と同じです。

2. シーケンス番号: 送信側は、受信側による正しい再構成を容易にするために各バイトに番号を付けます。

3. 確認番号: 送信者からの情報を確認するために使用されます。

4. 制御ビット

1) URG: 緊急ポインタ有効ビット。
2) ACK: シーケンス番号確認ビット このビットが 1 の場合、送信者のデータを確認するために使用されます。
3) PSH: フラグビットが 1 の場合、受信アンプはデータエンドをできるだけ早くアプリケーション層に配信する必要があります。
4) RST: 1 の場合、TCP 接続を再確立します。
5) SYN: 同期シーケンス番号ビット。TCP が接続を確立する必要がある場合は、この値を 1 に設定します。
6) FIN: TCP の場合この位置を 1

5 に設定します。ウィンドウ値: ローカルで受信可能なデータ セグメントの数を示すために使用されます。ウィンドウ サイズは可変です。これにより、送信側がデータを送信する速度が制御され、フロー制御が実現されます。

6. チェックサム: エラー制御に使用されます

7. 緊急ポインタ: 緊急ポインタは、URG フラグが 1 に設定されている場合にのみ有効です。

8. オプション: TCP ヘッダーにある 40 バイトのオプション情報 最も一般的なオプション フィールドは、最長のメッセージ サイズです。

注: 8 つのフィールドのうち、より重要なものは、ポート番号、シーケンス番号、確認シーケンス番号、および ACK、SYN、および FIN の 3 つの制御ビットです。

3. TCP スリーウェイ ハンドシェイク (Wireshark によるパケット キャプチャ分析)

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

#PC1実マシンの場合、PC2 は仮想マシン CentOS です。PC1 と PC2 は同じ仮想ネットワーク カード VNet8 にバインドされています。PC1 の IP アドレスは 192.168.90.10、PC2 の IP アドレスは 192.168.90.40 です。事前に CentOS 上にアカウント Web サイトを構築し、PC1 が PC2 にアクセスし、次に示すようにパケット キャプチャ ツールを使用して TCP レポートをキャプチャします:

1. 最初のハンドシェイク

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

上記のように、パケット キャプチャ ツールを使用すると、送信元アドレス (source) は 192.168.90.10、送信元ポート番号 (source port) は 55604、宛先アドレス (destination) は 192.168.168.90 であることがわかります。 .40、宛先ポート番号(宛先ポート)は80です。初期シーケンス番号(シーケンス番号)と確認シーケンス番号(確認応答番号)は両方とも 0 です。最初のハンドシェイクでは、PC1 はランダムなポート番号を使用して、PC2 のポート 80 に接続確立要求を送信します。このプロセスの最も一般的な表現は、TCP の SYN 制御ビットが 1 で、他の 5 つの制御ビットがすべて 0 であることです。

2. 2 番目のハンドシェイク

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

上に示すように、2 番目のハンドシェイク、送信元アドレス、ポート番号、宛先アドレス、およびポートは、ハンドシェイクと同じです。最初のハンドシェイク 代わりに、初期シーケンス番号は 0、確認応答シーケンス番号は 1、制御ビットの ACK と SYN は両方とも 1 です。 2 番目のハンドシェイクは、実際には 2 つの部分で完了します:

1) PC2 は PC1 からの要求を受信し、PC1 に確認メッセージで応答します。このプロセスの兆候は、TCP ACK 制御ビットが 1 で、他の 5 つの制御ビットが 1 であることです。がすべて 0. であり、シリアル番号が PC1 の最初のシリアル番号に 1 を加えたものであることを確認します。
2) PC2 も PC1 への接続を確立する要求を送信します。このプロセスのフラグは最初のハンドシェイクと同じです。TCP の SYN 制御ビットは 1 で、他の 5 つの制御ビットはすべて 0 です。

3. 3 回目のハンドシェイク

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

図に示すように、送信元アドレス、ポート番号、宛先アドレス、ポート番号は最初のハンドシェイクと同じです。ここで、最初のシーケンス番号は 2 番目のハンドシェイクの確認シーケンス番号 1 であり、確認シーケンス番号は 2 番目のハンドシェイクの最初のシーケンス番号に 1 を加えたものです。 PC1 が PC2 の応答 (要求と確認を含む) を受信すると、PC2 に確認メッセージで応答する必要もあります。このプロセスの最も一般的な兆候は、TCP ACK 制御ビットが 1、他の 5 つの制御ビットが 0、および確認シーケンス番号は、PC2 の初期シリアル番号に 1 を加えたものです。これにより、3 ウェイ ハンドシェイクが完了し、PC1 と PC2 の間に TCP 接続が確立されます。

4. 4 波の TCP 接続終了

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

このとき、PC1 は CentOS で、対応する IP アドレスは 192.168.90.40、PC2 は実機で、対応する IP アドレスは 192.168.90.10 となります。

1. 初めての Wave

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

PC1 (サーバー) が FIN ビットと ACK ビット 1 を PC2 に送信します。クライアントの TCP セグメント。

2. 2 回目のウェーブ

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

PC2 クライアントは、ACK ビット 1 を持つ TCP セグメントを PC1 サーバーに返します。

3. 3 回目のウェーブ

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

PC2 クライアントは、FIN ビットと ACK ビットが 1 の TCP セグメントを PC1 サーバーに送信します。

4. 4 回目のウェーブ

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

PC1 サーバーは ACK ビット 1 を持つ TCP セグメントを PC2 クライアントに返し、接続の終了を完了します。 。

5. TCP 4 ウェーブのセミクローズドの概念 (TCP 側はデータの送信を停止しますが、受信は可能です)

1) PC2 クライアント FIN メッセージ セグメント、セミクローズド接続、PC1サーバー ACK セグメントを送信し、ハーフクローズで受信します。

2) PC1 サーバーはデータを送信し続けますが、PC2 クライアントは ACK 確認のみを送信し、データは送信しません。

3) PC1 サーバーはすべてのデータを送信すると、FIN セグメントを送信し、PC2 クライアントは ACK セグメントを送信して、TCP 接続を閉じます。

以上がTCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcnblogsで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
win10如何重置tcp/ip协议?windows10重置tcp/ip协议栈的方法win10如何重置tcp/ip协议?windows10重置tcp/ip协议栈的方法Mar 16, 2024 am 11:07 AM

win10如何重置tcp/ip协议?其实方法很简单的,用户们可以直接的进入到命令提示符,然后按下ctrl+shift+enter的组合键来进行操作就可以了或者是直接的执行重置命令来进行设置,下面就让本站来为用户们来仔细的介绍一下windows10重置tcp/ip协议栈的方法吧。windows10重置tcp/ip协议栈的方法一、管理员权限1、我们使用快捷键win+R直接打开运行窗口,然后输入cmd并按住ctrl+shift+enter的组合键。2、或者我们可以直接在开始菜单中搜索命令提示符,右键点

Java API 开发中使用 Netty4 进行 TCP 通信Java API 开发中使用 Netty4 进行 TCP 通信Jun 17, 2023 pm 11:18 PM

TCP是计算机网络通信协议的一种,是一种面向连接的传输协议。在Java应用开发中,TCP通信被广泛应用于各种场景,比如客户端和服务器之间的数据传输、音视频实时传输等等。Netty4是一个高性能、高可扩展性、高性能的网络编程框架,能够优化服务器和客户端之间的数据交换过程,使其更加高效可靠。使用Netty4进行TCP通信的具体实现步骤如下:引入

python中怎么使用TCP实现对话客户端和服务器python中怎么使用TCP实现对话客户端和服务器May 17, 2023 pm 03:40 PM

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两次挥手,你见过吗?那四次握手呢?活久见!TCP两次挥手,你见过吗?那四次握手呢?Jul 24, 2023 pm 05:18 PM

那这里面提到的"面向连接",意味着需要 建立连接,使用连接,释放连接。建立连接是指我们熟知的TCP三次握手。而使用连接,则是通过一发送、一确认的形式,进行数据传输。还有就是释放连接,也就是我们常见的TCP四次挥手。

如何在Java中使用单个TCP连接发送多个文件?如何在Java中使用单个TCP连接发送多个文件?Apr 27, 2023 am 08:49 AM

使用一个TCP连接发送多个文件为什么会有这篇博客?最近在看一些相关方面的东西,简单的使用一下Socket进行编程是没有的问题的,但是这样只是建立了一些基本概念。对于真正的问题,还是无能为力。当我需要进行文件的传输时,我发现我好像只是发送过去了数据(二进制数据),但是关于文件的一些信息却丢失了(文件的扩展名)。而且每次我只能使用一个Socket发送一个文件,没有办法做到连续发送文件(因为我是依靠关闭流来完成发送文件的,也就是说我其实是不知道文件的长度,所以只能以一个Socket连接代表一个文件)。

Linux SIGPIPE信号Linux SIGPIPE信号Feb 19, 2024 pm 04:00 PM

在TCP通信双方中,为了描述方便,以下将通信双方用A和B代替。根据TCP协议规定,如果A关闭连接后B继续发送数据,B会收到A的RST响应。若B继续发送数据,系统会发出SIGPIPE信号告知连接已断开,停止发送。系统对SIGPIPE信号的默认处理行为是让B进程退出。操作系统对SIGPIPE信号的这种默认处理行为非常不友好,让我们来分析一下。TCP通信是全双工信道,相当于两条单工信道,连接两端各负责一条。当对端“关闭”时,虽然本意是关闭整个两条信道,但本端只是收到FIN包。根据TCP协议的规定,当一

tcp和ip的区别是什么tcp和ip的区别是什么Sep 04, 2023 pm 02:19 PM

TCP和IP是互联网中两个不同的协议:1、TCP是一种运输层协议,而IP是一种网络层协议;2、TCP提供了数据包的分段、排序、确认和重传等功能,而IP协议负责为数据包提供源和目标地址;3、TCP是面向连接的协议,而IP协议是无连接的;4、TCP还提供流量控制和拥塞控制。

面试官问:一个TCP连接可以发多少个HTTP请求?面试官问:一个TCP连接可以发多少个HTTP请求?Feb 22, 2023 pm 12:00 PM

曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール