根据在8.3.3节中介绍的协议的封包格式,再将Wireshark捕获的TCP包中的各个字段对应起来,更直观地看到TCP的通信过程。本次抓包分析使用8.1.5节中的TCP编程程序,在ubuntu系统直接本地运行客户端与服务器端,并抓包成功。本节将通过抓包主要分析关于TCP的三次握手与四次挥手的情况。
先查询三次握手,下图8.33中的3条数据包是一次TCP建立连接的过程。

图8.33 三次握手数据包
第一次握手,客户端发送一个TCP,标志位(SYN)为1,序列号seq(Sequence number)为0(假设此seq为i,i==0),源端口号为54918,目的端口号为8080。代表客户端请求建立连接,如下图8.34所示。可以看出这里的Flags与tcp封包头信息(参照图8.7)中的保留位(4位)和控制位(8位)一一对应。一共12位,Flags值为0x002,其中SYN位在低位第二位,因此SYN值为1。

第二次握手,服务器向客户端返回一个数据包,标志位SYN为1,建立回复确认序列号ACK(Acknowledgement Number)设置为i+1,即为1。同时会选选取一个序列号为0(假设为j,j==0)源端口号为8080,目的端口号为54918。如下图8.35所示。

图8.35 第二次握手数据包信息
第三次握手,客户端接收到服务器发送的数据包后检查其确认序列号(Acknowledgement number)是否正确,即i+1(为1)。若正确,客户端会向服务器发送一个数据包,其SYN为0,确认序列号ACK(Acknowledgement)为服务器端发送的序列号j+1(为1),和本次需要发送的序列号为i+1(为1)。至此,一次TCP连接就此建立,则可以开始传输数据。如下图8.36所示。

图8.36 第三次握手数据包信息
根据上述解析,可以清楚地看到TCP三次握手的具体信息参数。同时在此基础上,可以更好的理解三次握手的过程及缘由。TCP客户端之所以最后要发送一次确认,通过三次握手建立连接,主要是为了防止已经失效的连接请求报文又发送到了服务器,再次建立TCP连接产生错误。
假设在这样一个场景中,客户端发送请求报文后,在网络中的某个节点滞留一段时间,TCP客户端迟迟没有收到服务器的确认报文会重新向服务器发送这条报文,经过两次握手建立连接之后, 传输数据,关闭连接。而之前滞留的请求报文到达服务器之后也会与服务器再次建立连接。如果是三次握手,客户端就不会发出确认报文,服务器收不到确认报文,就不会建立连接,减少不必要的错误。
TCP断开连接是通过发送FIN报文,来告诉对方数据已经发送完毕,可以释放连接。 其Wireshark抓包列表如下图8.37所示。

图8.37 三次握手、四次挥手数据包列表
本次示例使用的是在一个ubuntu系统,运行服务器与客户端进行通信。因此通信使用的地址为本地主机地址(环回地址)。由于监听本地环回,速度太快,导致服务器收到FIN以后,调用close的时候,会清除socket缓存区的ACK应答,这将导致无法捕获四次挥手的情况。因此需要在服务器收到FIN之后,休眠一点时间再调用close,则可以通过Wireshark看到完整的四次挥手消息。
如上图8.37所示。第一次挥手,当客户端的数据发送完毕之后,会向服务器端发送一个FIN(==257)的报文,用来关闭客户端到服务器端的数据传送。
第二次挥手,服务器端收到FIN后,发送一个ACK给客户端,确认序号为FIN(==257)+1。此时服务器端进入关闭等待状态。
第三次挥手,服务器端发送一个FIN(==129),用来关闭服务器端到客户端的数据传送。
第四次挥手,客户端收到FIN之后,接着发送一个ACK给服务器端,确认序列号为收到序列号(==129)+1,此时服务器进入关闭状态,完成四次挥手。
TCP断开连接之所以采用四次挥手,则是因为服务器端在监听状态下,收到连接请求SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文之后,仅仅表示对方不再发送数据了但是还能接收数据。此时己方也有可能没有将全部数据发送给对方,因此己方可以发送完剩余数据之后,再发送FIN报文给对方表示同意关闭连接。因此,己方ACK和FIN一般都会分开发送。

Wireshark抓包分析三次握手四次挥手相关推荐

  1. linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手

    本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程. 执行tcpdump命令 tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113 ...

  2. 网络知识===wireshark抓包,三次握手分析

    TCP需要三次握手建立连接: 网上的三次握手讲解的太复杂抽象,尝试着使用wireshark抓包分析,得到如下数据: 整个过程分析如下: step1 client给server发送:[SYN] Seq ...

  3. 三次握手wireshark抓包分析,成功握手和失败握手

    转载之前:基于HTTP的视频流中,客户端有时会打开使用多条TCP与服务器连接,为了验证每一对话的sessionID是否相同,使用wireshark进行了抓包分析(抓到的都是加密的包,无卵用orz... ...

  4. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  5. Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析

    Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一.介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计 ...

  6. 一次HTTP(S)请求究竟需要多少流量?Wireshark抓包分析

    来自:指月 https://www.lixueduan.com 原文:https://www.lixueduan.com/post/network/06-http-flow/ 本文主要通过抓包分析了一 ...

  7. 用Wireshark抓包分析协议 计算机网络

    此篇博客记录使用Wireshark抓包分析协议. 目录 一.DNS 二.分析TCP握手过程 三.TLS报文 四.HTTP协议 五.SMTP 六.ARP 七.RTP 八.RTMP 一.DNS DNS是域 ...

  8. Wireshark抓包分析微信功能----tcp/ip选修课期末大作业

    分析相关功能所抓取的数据包和完整大作业报告(word版)均已上传至Wireshark抓包分析微信功能----tcp/ip选修课期末大作业-网络监控文档类资源-CSDN文库 适合Wireshark入门的 ...

  9. wireshark抓包分析数据怎么看 wireshark使用教程

    大家都知道Wireshark是非常流行且知名的网络抓包数据分析工具,可以截取各种网络数据包,并显示数据包详细信息,常用于开发测试过程各种问题定位.网络故障排查等情况.但是很多网友不清楚如何使用Wire ...

最新文章

  1. 2017-2018-1 20155231 《信息安全系统设计基础》第6周学习总结
  2. 爬取上千个年度基金后,才知道这有多坑,千万别被人当韭菜给割了
  3. 【转】Java杂谈(八)--Servlet/Jsp
  4. 1036 跟奥巴马一起编程
  5. 126.单词接龙II
  6. 医疗器械软件质量体系等
  7. 计算机录屏幕和声音的软件是什么,电脑录屏软件带声音哪个好用 电脑录屏软件带声音软件...
  8. HTML5七夕情人节表白网页制作【爱情树-Html5实现唯美表白动画代码】HTML+CSS+JavaScript浪漫告白 求婚必备
  9. 轻松学会分布式事务算法
  10. 电脑下载了自动捆绑怎么办?一招秒杀!
  11. Liunx修改用户密码
  12. 二元二次方程 c语言,C语言求解三元一次方程组的解
  13. Java8新特性学习第一天
  14. F22.YOLO深入理解(V1-V3)个人感觉非常详细
  15. win10常用软件汇总
  16. 数据库大数据量、高并发、高可用解决方案!
  17. html+text+shadow语法,text-shadow属性怎么用
  18. js 下载 download
  19. MongoDb查询语句($ne $in )
  20. 【Unity】Unity中的异步编程技术详解

热门文章

  1. 云计算的认识和看法_请谈谈你对云计算的理解?
  2. 我想给我的手机下载和弦铃声,哪里可以下?
  3. 双评价-土地资源评价流程
  4. linux 2.6.39 ext3 ext4 更快 tf,ext3,ext4,xfs,jfs,reiserfs和btrfs文件系统性能对比(转载)...
  5. 跨界营销新套路:立白和杜蕾斯这样“去污”
  6. 我有八千元,买苹果手机还是安卓呢?
  7. 十年风雨,一个普通程序员的成长之路(一)怀念:西安的小黑屋
  8. 一加3t刷机后还卡_一加3T变砖之后如何自救?一加3T线刷救砖教程详解
  9. 机器人二弟_“可佳二代”机器人好性感
  10. CASE 工具有哪些