Wireshark浅析Tcp三次握手

作者&投稿:主父咱 (若有异议请与网页底部的电邮联系)
~

我不想 一开始直接搬网络描述图来讲三次握手亦或试图用大量专业词汇让你熟悉它,而是想用 简单的描述 ,让大家对 三次握手 有个大概的印象。用 Wireshark 抓包工具分析TCP报文中大家比较关注的syn(Synchronize Sequence Numbers 同步序列号)和ack(ACKnowledge Character 确认字符)。

字面意思就是三次交互,也是三次 「TCP数据包」 的传输。交互的目的是 建立连接 ,让通信双方 确认 「对方」 能够接收到自己发送的消息

下图简单描述了 三次握手 的过程:[^xr1]

有同学问我为什么要回复x+1,这就是 协议 的魅力所在了。协议本质上就是一种 约定 ,设计tcp的那群大佬们完全可以设计为x+2, 这不应该是我们纠结的点

tcp是 传输层 协议,握手的目的是 建立连接 。事实上四次,甚至更多次的握手更能保证通信的建立,但无疑也会增加网络开销。 「三次」 是一个 能够保证双方建立连接的最小通讯数。

下图为Tcp的报文构成,因本文主要讲述 三次握手 ,侧重点也主要放在序列号和确认应答号上,对TCP的报文感兴趣的可以 看看思否的这篇文章 。下面结合Wireshark,对应这张图浅析一下三次握手。<p id="1"></p>

三次握手也就是三次TCP的报文传输,这里可以注意到序列号和确认应答号都是 32位 。所以这也解释了ACK和SYN的取值范围是 0 - 2^32 -1 即4,294,967,295。

简单介绍一下wireshark,它是一款优秀的 抓包 工具。可以抓取经过我们电脑网卡上的网络信息,当然也包括我们今天要抓取的TCP数据包。

以打开百度为例,首先需要确认百度的ip,可以通过ping命令获取:

注意这里使用 www.baidu.com 而不是 baidu.com 。记录下反馈的ip地址:180.101.49.12。这个ip因人而异,每个地区会有所不同。

打开wireshark界面:

【ps:建议打开前先退出浏览器。】

左侧对应你的电脑网卡,如果你不知道选择哪个,可以注意右侧的 折线图 ,有波动的就是你在使用的网卡。

因为我们的电脑的网络流量是实时在变的,所以需要在这里过滤出来自 www.baidu.com 的流量信息。

对应的过滤规则为:

注意这里的ip为上一步通过 ping 命令获取的ip。

输入后,回车。可以看到下面还是空的流量信息。 现在再打开百度首页 ,关注这里的流量信息,可以发现三次握手的流量包信息已经显示在下方了:

我们双击第一条报文,查看详情:

wireshark中显示报文格式为16(2^4)进制,即每个字符对应 4位 ,一共 8 个字符一共占用 4 * 8 = 32 位。和可以看 TCP报文 中syn序列号长度是一致的。16进制下的: e2026015 即对应十进制的: 3791806485

当然我们也可以查看原始的2进制数据包,32位的长度也会更加直接。只需要在下方空白处右击,选择: ‘... as bits 即可。

接下来我们点击第二次数据包,即 第二次握手 ,也是百度服务器对我们的回复包:

可以看到百度回执ack确实为我们第一次握手中的syn+1(3791806485 + 1)。另外自身生成的seq序列为: 1559326373 ,也对应文章一开始放的小红和小蓝对话图[^xr1]的第七步:

这里ack即对应响应ACK(y)值,seq对应服务器返回的 x 值。

接下来看第三次响应,也是客服端对百度的回执包信息:

可以看到最后的一次 握手 中,ack值为第二次握手回执的syn值+1。seq序列为二次握手中服务器回执的ack确认序列号。至此三次握手完成,连接建立完毕,可以开始进行数据的传输。

分析数据包虽然是个比较耗时的事情但确实可以加深我们的印象,也可以让抽象的描述具体化。

另外多说一句,虽然分析的过程比较久但tcp的建立时间是非常快的,我们在打开一个网站的瞬间就建立好了。四次挥手同理,有兴趣的话你可以试试用wireshark抓取4次挥手的数据包看看。欢迎关注,无限进步。




跪求能在windows server 2008 r2 Enterprise 64位系统下正常运行的wi...
到 官网 \/download\/win64\/all-versions\/ 下载 2.2.17 版本直接使用 系统打上所有补丁,并升级到sp1,这是个痛苦的过程... 然后安装2.9.0版本,再升级最新版本,升级时不要升级驱动程序

玛沁县18410492561: 图为某台设备上的数据包,通过wireshark抓到的数据包,其中包括tcp建立连接的三次握手过程. -
戴力碧宁: 1)source destination就是ip地址.发SYN的是客户端,客户端一般发起主动连接.2)菜单项里面有个follow tcp什么的选项,自己看一下就好了.再结合wiki上提到的三次握手.

玛沁县18410492561: tcp三次握手是什么 -
戴力碧宁: 如图所示,tcp三次握手指当客户端向服务端请求数据时,才会发生tcp三手握手的动作. 如下: 1、客户端请求服务器表示第一次握手; 2、授予连接表示第二次握手; 3、客户端确认连接表示第三次握手.

玛沁县18410492561: 用wireshark抓包,为什么校验和错误还是能建立TCP三次连接 -
戴力碧宁: 在使用WireShark等截取数据包时,往往会出现错误的CheckSum,这主要是因为网卡开启了CheckSum Offload(硬件校验和) 功能,系统将CheckSum的计算工作交由网卡去计算,在高速网络交换的情况下可以大大减轻CPU的工作负荷.在...

玛沁县18410492561: 怎样用wireshark抓包,三次握手三次挥手 -
戴力碧宁: (1)TCPClient向TCPServer发送连接请求SYN(2)TCPServer收到连接请求后反馈SYN+ACK(3)TCPClient收到SYN+ACK后反馈ACK,三次握手完成,连接建立(4)TCPClient向TCPServer发送100字节的数据(5)TCPServer收到(4)后确认并发送78字节的数据,即捎带确认(6)TCPClient收到(5)后,发送ACK进行确认(7)TCPClient发送100字节的数据(8)TCPClient发送RST报文,终止连接

玛沁县18410492561: 传输层协议TCP在建立连接时为什么要使用三次握手? -
戴力碧宁: TCP 连接是通过三次握手进行初始化的.三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息. TCP 使用类似的握手过程来结束连接.这可确保两个主机均能完成传输并确保所有的数据均得以接收.三次握手防止了已...

玛沁县18410492561: 测试工作中如何使用Wireshark进行抓包 -
戴力碧宁: 启动Wireshark软件,进入软件主页面,点击菜单栏中左上角(如图中圆圈所示)可用网卡列表按钮,打开后弹出如图示小窗口,在小窗口中Packets和Packets/s两项中,有数字变化的网卡即为正在运行的可监控网卡,点击“Start”即可开始监...

玛沁县18410492561: 如何让利用wireshark学习tcp/ip -
戴力碧宁: 利用wireshark软件可以很清晰地理解tcp建立和释放的过程.我们用TCP/UDP Socket调试工具 来模拟tcp的发送.两台电脑,一台作为客户端,ip为192.168.1.100 另一台作为服务器,ip为192.168.134.248 服务器的监听端口设为8101,开始监听.在客户端机器上打开wireshark软件,开启监听,并且规则设置成 tcp.port==8101 点击Apply应用,这样软件就能帮我们过滤掉很多不关心的内容,只剩下相应的8101端口的tcp包.点击客户端的tcp工具的连接按钮,发现wireshark监控界面,出现三条记录,即三次握手.

玛沁县18410492561: wireshark软件info删掉可以重新弄回来吗? -
戴力碧宁: 应该不能吧.

玛沁县18410492561: TCP协议的三次握手过程
戴力碧宁: 一、TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,...

玛沁县18410492561: wireshark抓包三次握手怎么判断有问题 -
戴力碧宁: finack指的是数据已经传完了,可以断开连接,如果你仔细观察的话,可以看到最后有两个finack的.pshack都是tcp的头部字段,psh指的是不用在等待其他包了,自己就可以单独发送,所以带有pshack的是数据发送的包,传的应该就是你要的数据,当然到底是不是要看源和目的的ip对不对.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网