wireshark抓包分析tcp的三次握手详细过程

下载安装wireshark

下载安装教程:wireshark的安装

抓包分析详细过程

  1. 打开wireshark, 打开浏览器输入 http://blog.jetwong.cn/
  2. 在wireshark中输入http过滤, 然后选中一条http记录,如下图:

    右键点击选中 追踪流 > tcp流,如下:

    会看到下图所示:

    可以发现,wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
  • 第一次握手:
    客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
  • 第二次握手:
    服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图
  • 第三次握手:
    客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图

就这样通过了TCP三次握手,建立了连接

有人可能对三次握手过程中的 +1可能有疑问,说明如下:

TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收
当某个主机开启一个TCP会话时,他的初始序列号是随机的,可能是0和4,294,967,295之间的任意值,然而,像Wireshark这种工具,通常显示的都是相对序列号/确认号,而不是实际序列号/确认号,相对序列号/确认号是和TCP会话的初始序列号相关联的。这是很方便的,因为比起真实序列号/确认号,跟踪更小的相对序列号/确认号会相对容易一些
比如,在“包1”中,最初的相对序列号的值是0,但是最下方面板中的ASCII码显示真实序列号的值是0xf61c6cbe,转化为10进制为4129057982

如果想要关闭相对序列号/确认号,可以选择Wireshark菜单栏中的 Edit -> Preferences ->protocols ->TCP,去掉Relative sequence number后面勾选框中的√即可

然后就会看到

关于tcp三次握手和四次释放连接更为详细的资料,可以参考一下:
https://blog.csdn.net/wz947324/article/details/79917486
https://blog.csdn.net/wz947324/article/details/79917623
https://blog.csdn.net/liubaoxyz/article/details/49949439

推荐阅读更多精彩内容