【网络】 WireShark实现TCP三次握手和四次挥手

目录

一、WireShark介绍

二、什么是TCP

三、TCP三次握手

四、TCP四次挥手



一、WireShark介绍

WireShark是一个开源的网络分析工具,用于捕获和分析网络数据包。它可以在多个操作系统上运行,包括Windows、Mac OS和Linux。

使用WireShark,用户可以通过捕获网络接口上的数据包来监控和分析网络流量。它支持多种协议的解析,包括以太网、无线网络、TCP/IP、DNS、HTTP等。用户可以查看和分析数据包的详细信息,如源IP地址、目标IP地址、端口号、协议类型等。

WireShark提供了强大的过滤功能,用户可以使用过滤规则来筛选感兴趣的数据包。它还支持将捕获到的数据包保存为文件,以便后续的分析和查看。

除了捕获和分析网络数据包,WireShark还提供了一些其他功能,如网络流量统计、报文重组、协议异常检测等。它是网络管理员、网络安全专家以及网络开发人员常用的工具之一,用于故障排查、网络性能优化、安全审计等任务。

总而言之,WireShark是一个功能强大的网络分析工具,可以帮助用户监控、调试和分析网络流量,从而提升网络的性能和安全性。

二、什么是TCP

TCP(传输控制协议)是一种在计算机网络中常用的传输层协议。它是一种面向连接、可靠的协议,用于在网络上可靠地传输数据。

TCP使用三次握手建立连接,即客户端发送一个连接请求给服务器,服务器回复确认请求,客户端再次回复确认。连接建立后,双方可以通过TCP协议进行数据传输。

TCP提供了可靠的数据传输服务,通过序号和确认机制来保证数据的可靠性。每个TCP数据包都会分配一个序号,接收方会对收到的数据进行确认,并且发送方会根据确认信息进行重传,以确保数据的完整性和正确性。

TCP还具备流量控制和拥塞控制的机制,以避免网络拥塞和丢包。流量控制通过接收方发送窗口来告知发送方可以接收的数据量,拥塞控制则是通过慢启动、拥塞避免和拥塞恢复等算法来动态调整发送方的发送速率。

TCP协议还支持面向字节流的传输,将应用层数据划分为以字节为单位的数据流进行传输。

总之,TCP是一种可靠的、面向连接的传输协议,通过序号、确认、流量控制和拥塞控制等机制,保证了数据的可靠性、完整性和稳定性。它在互联网中被广泛使用,包括网页浏览、电子邮件、文件传输等应用。

三、TCP三次握手

TCP三次握手是建立TCP连接的过程。在发送端和接收端之间进行通信之前,需要先建立一个可靠的连接。下面是TCP三次握手的步骤:

  1. 第一次握手:客户端向服务器发送连接请求报文段(SYN)并指定初始序列号,进入SYN_SENT状态等待服务器确认。

  2. 第二次握手:服务器收到客户端的连接请求后,会回复一个带有确认序号(ACK)和自己的初始序列号的报文段,同时也会包含一个自己的连接请求(SYN)的报文段,进入SYN_RCVD状态。

  3. 第三次握手:客户端收到服务器的回复后,会再次回复一个带有确认序号(ACK)的报文段,确认服务器的连接请求。这个报文段发送后,客户端和服务器都进入ESTABLISHED状态,连接建立成功。

通过这个三次握手的过程,客户端和服务器都确认了对方的能力和愿望建立连接,并且双方都知道了自己和对方的初始序列号。这样就建立了一个可靠的双向通信通道,可以进行数据的传输。如果在握手过程中发生了超时、丢包或者其他错误,建立连接的过程会失败,需要重新进行握手。

TCP在断开连接时需要进行四次挥手,与建立连接时的握手过程不同。

四、TCP四次挥手

TCP四次挥手是指在TCP连接断开时,双方进行关闭连接的过程。具体步骤如下:

  1. 第一次挥手:客户端发送一个FIN(Finish)报文给服务器端,表示客户端不再发送数据。

  2. 第二次挥手:服务器端收到FIN报文后,发送一个ACK(Acknowledgment)报文给客户端,表示收到了客户端的关闭请求。

  3. 第三次挥手:服务器端发送一个FIN报文给客户端,表示服务器端不再发送数据。

  4. 第四次挥手:客户端收到FIN报文后,发送一个ACK报文给服务器端,表示收到了服务器端的关闭请求。

在这个过程中,双方都可以发送和接收数据,因此需要四次挥手来完成连接的关闭。这样可以确保双方都有机会发送和接收剩余的数据,并且可以保证数据的可靠传输。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/361131.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【体验有奖】5 分钟函数计算部署 AI 艺术字应用,晒姓氏头像赢 Cherry 键盘!

作者:姜曦(筱姜) 目前,大多数开发者使用的 AI 绘画项目 Stable Diffusion WebUI 难以适应企业多用户、多场景的复杂需求,用户急需一套成熟解决方案去进行基于 Stable Diffusion 的 AI 绘画创业,本实验基于…

【lesson3】高并发内存池的三层框架介绍

文章目录 高并发内存池需要考虑的问题高并发内存池的3个核心部分thread cachecentral cachepage cache 高并发内存池需要考虑的问题 现代很多的开发环境都是多核多线程,在申请内存的场景下,必然存在激烈的锁竞争问题。malloc本身其实已经很优秀&#xf…

代码随想录 Leetcode538. 把二叉搜索树转换为累加树

题目: 代码(首刷看解析 2024年1月31日): class Solution { public:int pre 0;TreeNode* convertBST(TreeNode* root) {if (!root) return nullptr;root->right convertBST(root->right);if (pre 0) {pre root->val;}else {root…

万物简单AIoT 端云一体实战案例学习 之 智能小车

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 1.1、背景 市面上各种遥控的小车很多,小车的性能不同具备的能力也不一样,大概实现的逻辑就是通过遥控器控制小车的前进、后退、左转或者右转。遥控小车具备一定…

【lesson4】高并发内存池ThreadCache(线程缓存)层实现

文章目录 ThreadCache层的结构申请内存逻辑释放内存逻辑自由链表的实现自由链表的成员变量自由链表的成员函数自由链表的完整实现 ThreadCache申请内存过程的实现ThreadCache需要的成员变量ThreadCache需要的成员函数ThreadCache.h文件代码Allocate的实现Deallocate的实现 封装…

实验3:利用Linux的消息队列通信机制实现三个线程间的通信

调用原型 POSIX信号量–无名信号量 POSIX信号量是Pthread线程库提供的一种同步机制,包括无名信号量和有名信号量两种机制。无名信号量,常用于多线程间的同步,也可用于相关进程间的同步(需置于相关进程间的共享内存区中&#xff…

自定义vue通用左侧菜单组件(未完善版本)

使用到的技术&#xff1a; vue3、pinia、view-ui-plus 实现的功能&#xff1a; 传入一个菜单数组数据&#xff0c;自动生成一个左侧菜单栏。菜单栏可以添加、删除、展开、重命名&#xff0c;拖动插入位置等。 效果预览&#xff1a; 代码&#xff1a; c-menu-wrap.vue <t…

模拟电路之运放

滞回比较器&#xff1a; 小幅度波动时候不受影响&#xff0c;除非超过一点范围 当输入信号慢慢增加到UT&#xff0c;就变成负电压 当输入信号慢慢减压到—UT&#xff0c;就变成正电压 电路反向接信号 正反馈&#xff0c;串联电阻接地 调整回差的方法 1.调整电阻的分压 2.…

学习在微信小程序使用富文本修改图片大小的代码,超简单

学习在微信小程序使用富文本修改图片大小的代码&#xff0c;超简单 前言代码 前言 自带img图片或大或小&#xff0c;不适应小程序页面 代码 1、replace方法全局添加图片img标签的style样式 let txt www.qipa250.com //富文本内容 txt txt.replace(/<img/gi,<img s…

c++ 字符串切分split

c 字符串切分split 的举例实现 一共给出了四种方式 1、 strtok 2、 stringstream 3、 字符串查找 4、 基于封装的方式&#xff0c;提供了 c11 foreach 接口 代码 vector<string> split(string s) {vector<string> res;const char *p strtok((char *) s.c_str(),…

linux平台 LED情报板网关项目总结

LED情报板目前已经基本稳定 主要存在两个版本LED1.5 和LED2 两个版本的主要差别是 &#xff1a; 1.1.5的配置文件存在本地 2.0的存在平台 需要通过接口从平台获取 2.1.5的下发消息的时候需要同步返回 2.0的是异步返回&#xff0c;所以1.5的要尽可能完成 不然会导致发 布平台…

C++指针比较

内存中各个数据的存放方式。 数组str1、str2、str3、str4都是在栈中分配的&#xff0c;内存中的内容都为“abc”加一个“\0”&#xff0c;但是他们的位置是不同的&#xff0c;因此代码第15行和第16行输出的都是0. 指针str5、str6、str7、str8也是在栈中分配的&#xff0c;他们…

oj赛(双周赛第二十次)

目录 碰碰车 小码哥与机器人 小码哥的跳棋游戏 竖直打印机 排队 邮箱地址 碰碰车 难度:钻石 占用内存:128 M时间限制:1秒 游乐园玩碰碰车&#xff0c;其中有一种碰碰车是在一条直线上行驶。该碰碰车有一个初始朝向和初始位置&#xff0c;并且以每秒一个单位的速度向初始方…

网络原理-TCP_IP(2)

TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol)".协议如其名,要对数据的传输进行一个详细的控制. TCP协议段格式 源/目的端口号:表示数据从哪个进程来,到哪个进程去. 32位序号/32位确认序号:后面详细讲. 4位TCP报头长度:表示该TCP头部有多少个32位…

【JS逆向实战-入门篇】某gov网站加密参数分析与Python算法还原

文章目录 1. 写在前面2. 请求分析3. 断点分析4. 算法还原 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋…

一分钟在SpringBoot项目中使用EMQ

先展示最终的结果: 生产者端: RestController RequiredArgsConstructor public class TestController {private final MqttProducer mqttProducer;GetMapping("/test")public String test() {User build User.builder().age(100).sex(1).address("世界潍坊渤…

【C项目】顺序表

简介&#xff1a;本系列博客为C项目系列内容&#xff0c;通过代码来具体实现某个经典简单项目 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

spark-cannot resolve overloaded method

使用split方法&#xff0c;出现错误&#xff1a;cannot resolve overloaded method 解决方法:那个regex应该是自动生成&#xff0c;所以split括号中输入空引号即可。 入门学习人的愚笨&#xff0c;也要继续坚持&#xff0c;加油&#xff01;

R语言基础学习-02 (此语言用途小众 用于数学 生物领域 基因分析)

变量 R 语言的有效的变量名称由字母&#xff0c;数字以及点号 . 或下划线 _ 组成。 变量名称以字母或点开头。 变量名是否正确原因var_name2.正确字符开头&#xff0c;并由字母、数字、下划线和点号组成var_name%错误% 是非法字符2var_name错误不能数字开头 .var_name, var.…

CISAW和CISP-PTE证书选择指南

&#x1f4e3;在信息安全领域&#xff0c;选择合适的证书可以为你的职业生涯增添光彩。很多从事信息渗透行业的朋友经常讨论CISP-PTE和CISAW之间的选择问题。今天就从4个方面带你详细了解这两张证书&#xff0c;帮你做出明智的选择&#xff01; 1️⃣证书的行业前景 &#x1f4…