捕获原理
- 当用户的计算机连接到一个网络时,它依赖一个网络适配器(比如以太网卡)和链路层驱动(网卡驱动)来发送和接收数据。
- wireshark为了捕获和分析数据包,也是依赖网络适配器和网卡驱动来传递数据。
wireshark的系统结构如下图:
- GTK:图形窗口工具,操纵所有的用户输入/输出界面
- 核心引擎:将其他模块连接起来,起到综合调度的作用
- 捕获引擎:依赖底层库Libpcap/WinPcap(Libpcap是linux的版本,WinPcap用于windows版本),进行数据捕获
- Wiretap是用来读取和保存来自于WinPcap的捕获文件和一些其他的文件格式。
认识数据包
wireshark将从网络中捕获到的二进制数据按照不同的协议包格式规范,显示在Packet List面板中。
在wireshark中关于数据包的叫法有三个术语:帧、包、段
从该界面可以看出显示了5行信息,默认这些信息是没有被展开的。各行信息如下图所示:
- Frame: 物理层的数据帧概况
- Ethernet II:数据链路层以太网帧头部信息
- Internet Protocol Version 4:互联网层IP包头部信息
- Transmission Control Protocal:传输层的数据段头部信息,这里是TCP协议
- Hypetext Transfer Protocol:应用层的信息,此处是HTTP协议
物理层的数据帧概况
Frame 242: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface \Device\NPF_{008F262F-B566-4C3A-AC15-288D82D3513E}, id 0 # 第242号帧,线路74字节,实际捕获268字节
Interface id: 0 (\Device\NPF_{008F262F-B566-4C3A-AC15-288D82D3513E}) # 接口id
Encapsulation type: Ethernet (1) # 封装类型
Arrival Time: Nov 24, 2021 15:33:26.120758000 中国标准时间 # 捕获日期和时间
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1637739206.120758000 seconds
[Time delta from previous captured frame: 0.000005000 seconds] # 此包与前一包的时间间隔
[Time delta from previous displayed frame: 0.000005000 seconds] # 此包与第一帧的时间间隔
[Time since reference or first frame: 0.543203000 seconds]
Frame Number: 242 # 帧序号
Frame Length: 74 bytes (592 bits) # 帧长度
Capture Length: 74 bytes (592 bits) # 捕获长度
[Frame is marked: False] # 此帧是否做了标记:否
[Frame is ignored: False] # 此帧是否被忽略,否
[Protocols in frame: eth:ethertype:ip:udp:data] # 帧内封装的协议层次结构
[Coloring Rule Name: UDP] # 着色标记的协议名称
[Coloring Rule String: udp] # 着色规则显示的字符串
数据链路层以太网帧头部信息
Ethernet II, Src: Micro-St_1c:a1:ce (30:9c:23:1c:a1:ce), Dst: NewH3CTe_25:a3:e6 (f0:10:90:25:a3:e6)
Destination: NewH3CTe_25:a3:e6 (f0:10:90:25:a3:e6) # 目标MAC地址
Source: Micro-St_1c:a1:ce (30:9c:23:1c:a1:ce) # 源MAC地址
Type: IPv4 (0x0800)
互联网层IP包头部信息
Internet Protocol Version 4, Src: 192.168.0.60, Dst: 108.159.5.134
0100 .... = Version: 4 # 互联网协议 IPv4
.... 0101 = Header Length: 20 bytes (5) # IP包头部长度
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) # 差分服务字段
Total Length: 283 # IP包的总长度
Identification: 0xd87d (55421) # 标记字段
Flags: 0x40, Don't fragment # 标记指端
Fragment Offset: 0 # 分的偏移量
Time to Live: 128 # 生存期TTL
Protocol: TCP (6) # 此包内封装的上层协议为TCP
Header Checksum: 0xee55 [validation disabled] # 头部数据的校验和
[Header checksum status: Unverified]
Source Address: 192.168.0.60 # 源IP地址
Destination Address: 108.159.5.134 # 目标IP地址
传输层TCP数据段头部信息
Transmission Control Protocol, Src Port: 49537, Dst Port: 80, Seq: 1, Ack: 1, Len: 243
Source Port: 49537 # 源端口号
Destination Port: 80 # 目标端口号
[Stream index: 2]
[TCP Segment Len: 243]
Sequence Number: 1 (relative sequence number) # 序列号(相对序列号)
Sequence Number (raw): 1925677966 # 下一个序列号
[Next Sequence Number: 244 (relative sequence number)]
Acknowledgment Number: 1 (relative ack number) # 确认序列号
Acknowledgment number (raw): 2488148386
0101 .... = Header Length: 20 bytes (5) # 头部长度
Flags: 0x018 (PSH, ACK) # TCP标记字段
Window: 1029 # 流量控制的窗口大小
[Calculated window size: 263424]
[Window size scaling factor: 256]
Checksum: 0x7bd1 [unverified] # TCP数据段的校验和
[Checksum Status: Unverified]
Urgent Pointer: 0
[SEQ/ACK analysis]
[Timestamps]
TCP payload (243 bytes)