WireShark抓包报文结构分析

简介: WireShark抓包报文结构分析

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。由IETF的RFC 793定义TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接。

1677074986630.jpg

(图片来源于网络)


为了解报文结构,我就把上次抓的Telnet的报文拿出来分析了一下。具体如下:

1677075004796.jpg

物理链路层中数据用电信号传输,对应0和1,一个信号为1 bit;报文中为16进制(0x表示),一个占4位(bit),一组占8 bit。


最外层(Ethernet II,数据链路层封装)占用14*8=112 bit。

其中6*8=48 bit(1-48 bit)为目的MAC地址;


6*8=48 bit(49-96 bit)为源MAC地址;


2*8=16 bit(97-112 bit)表示封装协议为IPv4。

1677075016739.jpg

第二层(IP,网络层)占用20*8=160 bit。

其中113-116 bit表示IP协议版本号为4,即IPv4;


117-120 bit表示报文头长度共20字节(byte,1 byte=8 bit),占用80 bit长度;


121-128 bit表示DS Field(区分服务域),占用8 bit,前6 bit为DSCP(区分服务代码点,即DS标记值),后2 bit为CU或ECN(显示拥塞通知),这两部分共同组成一个可扩展性相对较强的方法以此来保证IP的服务质量;


129-144 bit表示总长度,此处为60,


145-160 bit表示标识符


161-176 bit表示标志和片移位,如果报文有分片相关属性,此处标志会变化;


177-184 bit表示TTL值;


185-192 bit表示内层封装协议,本报文中为TCP协议;


193-208 bit表示头部校验和;


209-240 bit表示源IP地址,转换为点分10进制即为10.1.1.2;


241-272 bit表示目的IP地址,转换为点分10 进制即为10.1.1.2。

1677075027330.jpg


第三层(TCP,传输层)占用剩余位。

273-288 bit为源端口号;


288-304 bit为目的端口号;


305-336 bit为序列号,即TCP三次握手中的seq;


337-368 bit为应答码,即TCP三次握手中的ack;


369-384 bit为SYN标志位,即TCP三次握手中的SYN;


385-400 bit为窗口大小;


401-416 bit为校验和;


417-432 bit为URG位,urgent机制,是用于通知应用层需要接收urgent data,在urgent data接收完成后,通知应用层urgent data数据接收完毕;


433-592 bit为20bytes的各类options,其中:


433-464 bit为MMS相关项,包含8 bit的类型(2为Maxium Segment Size,TCP一次传输发送的最大数据段长度),8 bit的长度,16bit的MMS值;


465-472 bit为MOP相关项;


473-496 bit为滑动窗口项;


497-512 bit为允许SACK项(选择确认,TCP收到乱序数据后,会将其放入乱序队列中,然后发送重复ACK给对端。对端收到多个重复的ACK后,就会推测到可能发生了数据丢失,再重传数据。如果乱序的数据比较零散,则这种机制的效率会很低。使用SACK选项可以告知发包方收到了哪些数据,发包方收到这些信息后就会知道哪些数据丢失,然后立即重传缺失部分即可。这就大大提高了数据重传的速度。)


513-592 bit为时间戳项,包含报文发送时间TSvla和接收端接收时间TSecr。(当发送端收到ACK Segment后,取出TSscr,和当前时间做算术差,即可完成一次RTT的测量。若非通过Timestamp Option来计算RTT,大部分TCP实现只会以“每个Window采样一次”的频率来测算RTT。因此通过Timestamp Option,可以实现更密集的RTT采样,使RTT的测算更精确。)



然后我抓了一个本地访问远程主机的报文来对比一些关键位的信息,如下:

1677075039350.jpg

可以看到是请求远程桌面的回包,由目的主机的3389回包。个别关键字段如下:

1677075050749.jpg

最外层,因为跨三层转发,所有目的MAC地址为网关设备MAC地址,源MAC地址为服务器网卡信息,此处用的是一台安装VMWare ESXI的服务器上的虚拟机。

1677075065015.jpg


网络层,可以看到我的电脑IP地址为172.2.105.16,服务器IP地址为172.2.216.70;协议为TCP,TTL值为64,报文不允许分片,报文长度为1500 bytes。数了一下,报文共5e0行,缺6个,转换为10进制,就是95行,一行16组,为16*94-4=1514,1组8 bit为1个byte,去掉数据链路层的14 bytes,正好1500 bytes。

1677075073460.jpg

传输层,可以看到源端口为3389(远程桌面端口号),目的端口为53672;TCP分片长度为1460,此报文序列号为25588,下一个报文序列号为27048,窗口大小为254,TCP载荷为1460 bytes。

1677075084860.jpg

数据段内容主要是长度,为1460 bytes,与传输层中TCP载荷大小相同。

相关文章
|
8月前
|
网络协议 安全 网络性能优化
OSI 七层模型详解
本文介绍了 OSI 七层模型各层的功能与常见协议。物理层负责比特流传输,涉及信号编码与接口标准;数据链路层组织帧并实现差错控制;网络层处理路由与寻址;传输层提供端到端数据传输服务;会话层管理会话连接;表示层处理数据编码与加密;应用层直接为用户提供服务。文中还列举了各层的典型协议,如 IP、TCP、HTTP 等,详细解析其作用与应用场景。
2206 3
|
12月前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
3556 2
|
缓存 网络协议 网络架构
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
本文详细介绍了如何使用网络抓包工具Wireshark进行网络抓包分析,包括以太网v2 MAC帧、IP数据报、ICMP报文和ARP报文的格式,以及不同网络通信的过程。文章通过抓包分析展示了IP数据报、ICMP数据报和ARP数据报的具体信息,包括MAC地址、IP地址、ICMP类型和代码、以及ARP的硬件类型、协议类型、操作类型等。通过这些分析,可以更好地理解网络协议的工作机制和数据传输过程。
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
|
网络协议 网络性能优化
基于 Wireshark 分析 TCP 协议
基于 Wireshark 分析 TCP 协议
|
网络协议 安全 网络安全
WireShark 中的数据包捕获和过滤器详解
【8月更文挑战第20天】
1723 0
wireshark 报文颜色
wireshark 报文颜色
2308 8
|
运维 网络协议 安全
Wireshark网络抓包工具入门指南
Wireshark是一款功能强大的开源网络协议分析器,它允许用户捕获和查看网络接口上传输的详细数据包信息。无论是网络故障排查、安全分析还是开发调试,Wireshark都能提供深入的网络洞察。本文旨在为初学者提供Wireshark的基本使用方法,帮助快速掌握网络抓包技巧。
3309 0
|
监控 Android开发 数据安全/隐私保护
安卓kotlin JetPack Compose 实现摄像头监控画面变化并录制视频
在这个示例中,开发者正在使用Kotlin和Jetpack Compose构建一个Android应用程序,该程序 能够通过手机后置主摄像头录制视频、检测画面差异、实时预览并将视频上传至FTP服务器的Android应用
|
存储 网络协议 网络架构
|
运维 网络协议 Python
使用tcpdump和wireshark进行服务器抓包分析
使用tcpdump和wireshark进行服务器抓包分析
871 0