一、什么是 Wireshark ?

简单地说,Wireshark 是抓包工具。官网说,“Wireshark 是一个网络包分析工具。网络数据包分析仪将尝试捕获网络数据包并试图尽可能详尽显示该数据包。”


推荐一本书《Wireshark 网络分析就这么简单》


Wireshark 不单单能抓包,主要的 Features 是对数据包进行各种的分析。下载打开界面非常简单直观:

TCP 三次握手_网络数据

最上面是 Packet List 窗口,它列出了所有网络包。

在 Packet List 中选定的网络包会详细地显示在中间的 Packet Details 窗口中。

最底下是 Packet Bytes Details 窗口(16 进制数据),我们一般不会用到它。


二、我们抓什么包呢?如题 TCP

TCP 一脸懵逼。记得上次在 《图解Http协议》得知,HTTP 是一个客户端和服务器端请求和响应的标准 TCP。其实建立在 TCP 之上的。那我们就抓 HTTP,这很简单。


三、实操 Wireshark

选择 Capture - Options,选择当前网络,点击 Start 。如图:

TCP 三次握手_传输层_02

选择第一行,如第一张图,简单介绍下 Packet Details 窗口参数详情:

TCP 三次握手_网络数据


Frame - 物理层

Ethernet - 数据链路层

Internet Protocol Version - 网络层

Transmission Control Protocol - 传输层


大家知道 网络层次划分为 标准的OSI七层模型,还有 TCP/IP四层协议 以及 TCP/IP五层协议。如图:

TCP 三次握手_三次握手_04

其中,Transmission Control Protocol - 传输层是我们最为关心的。如图已经展开了:

TCP 三次握手_网络数据_05

具体我们先学习 TCP 报文段格式:

TCP 三次握手_网络数据_06

那么第二个红框,由上至下,一一大家可以对应下,重点的是:


Sequence number - 序号

Acknowledgment number - 确认号

Flags - 标志位 

-- Acknowledgment 确认位

-- Push 急迫位

-- Reset 重置位

-- Syn 同步位 

-- Fin 终止位



a. 第一次握手标志位

从标志位看出,同步位有值,在做请求(SYN):Syn 同步位为1

TCP 三次握手_三次握手_07


b. 第二次握手标志位

博客地址 Seq=0 Ack=1 -> localhost 

从标志位看出,确认位、同步位有值,在做应答(SYN+ACK):Syn 同步位为 1 、Acknowledgment 确认位为 1

TCP 三次握手_网络数据_08


c. 第三次握手标志位

localhost Seq=1 Ack=1 -> 博客地址 (注: Seq=Seq+1)

从标志位看出,只有确认位有值,在做再次确认(SYN):Acknowledgment 确认位为 1

TCP 三次握手_三次握手_09


综上所述,一个完整的三次握手就是:请求(SYN) --- 应答(SYN+ACK) --- 再次确认(SYN)

TCP 三次握手_三次握手_10

如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈。你也可以分享到朋友圈哦,让更多的人阅读这篇文章。

--END--


TCP 三次握手_网络数据_11