使用 wireshark 软件对协议进行还原
需要一些计算机网络的基础,还是比较容易分析的
实验基本信息:
实验环境:Windows10 x64 , WireShark3.6.2
先进行抓包,抓包过程在此不赘述,参考链接:
(1) TCP协议分析
源IP: 172.20.120.252 | 目的IP:167.71.198.221 |
源端口:59267 | 目的端口:443(https默认端口) |
源MAC:dc:71:96:5e:8a:e4 | 目的MAC:44:ec:ce:d2:ff:c3 |
一共四层:
层名 | 作用 |
Frame:物理层 | 数据包概述 |
Ethernet:链路层 | 双方的mac地址 |
Internet Protocol:网络层 | 双方的IP地址 |
Transmission Control Protocol:传输层 | TCP/UDP层,双方的端口 |
以太网帧结构:
链路层抓包(以太网头部):
其中,目的MAC(44:ec:ce:d2:ff:c3)六字节,源MAC(dc:71:96:5e:8a:e4)六字节,类型(0x0800)两字节,0x0800 表示 IPv4 协议
我们可以得到应该以IPv4的格式分析下面的数据
Ipv4数据报格式:
网络层抓包(IP数据头部):
结构名称 | 解释 | 在实例中的体现 |
IP版本,首部长度 | 版本为4,头部长度为20字节(以4字节为一单位,故写5) | 0x45 |
区分服务 | 默认为0x00 | 0x00 |
总长度 | 总长度为52 | 0x0034 |
Id | 50972 | 0xc71c |
三个标志位3bits+片位移13bits | 其中不得分片有效 | 0x40 |
生存时间TTL | 128 | 0x80 |
上层协议 | 6代表tcp协议 | 0x06 |
首部校验和 | 在此失效 | 0x0000 |
源IP | 172.20.120.252 | 0xac1478fc |
目的IP | 167.71.198.221 | 0xa74c6dd |
下面分析TCP报文段结构:
传输层抓包(TCP报文头部):
结构名称 | 解释 | 在实例中的体现 |
源端口 | 59267 | 0xe783 |
目的端口 | 443(https默认端口) | 0x01bb |
序列号 | 436007830 | 0x19fcf396 |
确认号 | 0 | 0x00000000 |
TCP首部长度 | 二进制1000 | 0x80 |
首部长度+保留+八个标志位(图中只有六个标志位) | ------ | 0x8002 |
窗口大小 | 64240 | 0xfaf0 |
检验和 | 0x935c | 0x935c |
紧急指针 | 0 | 0x0000 |
选项 | ------ | 0x020405b40103030801010402 |
到此,TCP头部结束
(2) UDP协议分析
随机抓取一个UDP包,物理层、链路层、网络层基本不变,除了蓝框里由TCP(06)变成了UDP(17)
下面分析不同的传输层
UDP报文段结构:
结构名称 | 解释 | 在实例中的体现 |
源端口 | 8000 | 0x1f40 |
目的端口 | 4016 | 0x0fb0 |
长度 | 311 | 0x0137 |
校验和 | ---- | 0x5f05 |
后面全都是数据: