引言

我们在学习TCP的时候,都知道TCP的三次握手。书本上的三次握手很是理论,下面使用wireshark抓来分析三次握手。

建议在回顾下tcp协议的格式和三次握手

wireshark 抓取三次握手

wireshark解析ssh wireshark解析tcp协议的data_wireshark抓包分析TCP


图中圈出的部分是tcp的三次握手

服务端 192.168.1.125
客户端 192.168.1.238
过滤条件 ip.src192.168.1.125 or ip.dst192.168.1.125

wireshark解析ssh wireshark解析tcp协议的data_三次握手_02

  • Frame 物理层
  • Ethernet 数据链路层 以太网帧格式
  • Internet Protocol 网络层协议 IP报文
  • Transmission Control Protocol 传输层协议 tcp/ip
  • Hypertext Transfer Protocol 应用层协议

我们只看传输层
为了方便直观的看到三次握手,直接展示出三次握手的截图

第一次握手

客户端通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答。 syn=1 seq=0

wireshark解析ssh wireshark解析tcp协议的data_wireshark抓包分析TCP_03

第二次握手

服务器发送ACK包确认应答,发送SYN包请求连接。syn=1 ack=0+1 seq=0

wireshark解析ssh wireshark解析tcp协议的data_wireshark抓包分析TCP_04

第三次握手
客户端针对SYN包发送ACK包确认应答。ack=0+1 seq=0

wireshark解析ssh wireshark解析tcp协议的data_包头包体_05

包头/包体分析

由于tcp是流的形式进行发送数据的,所有会有粘包的情况发生,所以就要定义一个包头,包体的协议
包头中要有包体的长度

包头

例子中 00000002 便是包体的长度

Data: 00000002000001f400000000

wireshark解析ssh wireshark解析tcp协议的data_三次握手_06

包体

Data: 7b7d
是一个json字符串 占用两个字节

wireshark解析ssh wireshark解析tcp协议的data_传输协议_07

补充

wireshark不仅仅是解决问题的好工具,还是学习网络协议的好东西。在此进一步解说文件传输的网络协议。

wireshark 获取出的网络协议

  • Frame 物理层
  • Ethernet 数据链路层
  • Internet Protocol 网络层协议 *
  • Transmission Control Protocol 传输层协议
  • Hypertext Transfer Protocol 应用层协议

tcp/ip 协议发送文件,一定存在封包,和拆包。

发送则是封包,就收则是拆包。

封包过程

wireshark解析ssh wireshark解析tcp协议的data_包头包体_08

拆包过程则是相反,

wireshark 的作用就是拆包,并且分析数据

wireshark解析ssh wireshark解析tcp协议的data_三次握手_02


从网络接口层分析

wireshark解析ssh wireshark解析tcp协议的data_三次握手_10


Frame 物理层 不包含协议Ethernet 数据链路层 以太网帧格式

格式如下,头部包含14个字节

wireshark解析ssh wireshark解析tcp协议的data_包头包体_11

Internet Protocol 网络层协议- ip头

ip协议格式如下,头部占用20个字节

wireshark解析ssh wireshark解析tcp协议的data_传输协议_12

Transmission Control Protocol 传输层协议- tcp头

tcp报文格式,头部占用20个字节

wireshark解析ssh wireshark解析tcp协议的data_wireshark抓包分析TCP_13

数据分析

图中圈出的部分,分别是 1--14 15--34 35--54 刚刚好是 14+20+20 = 54 个字节0x7b7d 则是内容

wireshark解析ssh wireshark解析tcp协议的data_包头包体_14