![8b4a4c35752ab2e7e8a911a51a425290.png](https://i-blog.csdnimg.cn/blog_migrate/e821957936b89864b7ab2df1993db8bb.jpeg)
1、操作步骤
(1)打开wireshark,开始捕获界面
(2)打开一个网址(如:csdn)
(3)对捕获的数据包进行分析
![c4c02e447a43374bbf058ca684a9b58c.png](https://i-blog.csdnimg.cn/blog_migrate/9430631673e097a04e2a57712e802ad0.jpeg)
第一个包的作用是第一握手,发送连接请求;第二个包的作用是第二次握手,连接接受;第三个包的作用是第三次握手,对连接接受的确认。
2、分析三次握手过程
(1)第一次握手
客户端发送一个 TCP,标志位为 SYN,序列号为0,表示:客户端请求建立连接。
![62495a4f79dbfe715ec5fdf570cb810e.png](https://i-blog.csdnimg.cn/blog_migrate/3b7a97910574328736a1cbab5a3294bd.jpeg)
(2)第二次握手
序号说明的是自己发送的数据的编号。 由于确认包是服务器发给客户端的一个数据包,对服务器来讲,这是它的第一个数据包,因此序号 seq=0。确认号是告诉对方,下一个应该发送的数据字节的编号。由于对方(客户端)上一次(第二次握手) 发来 seq 的序号字段是0,下一个应该发送的就应该是0+1=1,因此服务器发回的确认包中的确认号是1(ACK=0+1=1)。
![740e63a7b14b1aa2567f693559a8c062.png](https://i-blog.csdnimg.cn/blog_migrate/3b764f5b7c80cecbd403d54d2e841c82.jpeg)
(3) 第三次握手
客户端再次发送确认包(ACK) SYN 标志位为0,ACK 标志位为 ACK 有效.序号说明的是自己发送的数据的编号。由于客户端第一次握手的数据字段已成功发送1个字节,因此数据字段序号 seq 从0变为1。确认号是告诉对方,下一个应该发送的数据字节的编号。由于对方(服务器)上一次(第二次握手) 发来 seq 的序号字段是0,下一个应该发送的就应该是0+1=1,放在确定字段中发
送给对方(ACK=0+1=1)。
![1e8a635c11e187ab87a693378e4c2b7d.png](https://i-blog.csdnimg.cn/blog_migrate/7a5dad08feb06f1e302346744a729b48.jpeg)
另外要注意TCP 不可以使用两次握手建立连接。因为两次握手无法处理下面出现的情况:一个已失效的连接请求在超时后到达接收端,接收端收到请求,自然会接受请求,于是等待对方发送数据,可实际对方没有数据要发送,因此不会发送数据,接收方只能空等。于是该连接就这样在无数据传输的情况下白白浪费很多资源。