试验要求
- wireshark的深入学习与把握,如过滤器的运用,归纳办法
- 经过试验阐述ARP的作业原理
- 运用试验成果剖析 ICMP 协议的报文结构字段界说
- 依据试验数据深入剖析 TCP 协议的衔接进程原理,报文的分片等功能
- 从学校网建议向外网中某 Web 服务器的拜访,记载并剖析从 MAC 层协议、IP 协议、TCP 协议一直到 HTTP 协议的进程
1. Wireshark学习
1.1 什么是Wireshark?
Wireshark 是一个网络数据包剖析器。以下是 Wireshark 供给的很多功能中的一部分:
- 适用于UNIX和Windows。
- 从网络接口 捕获实时数据包数据。
- 显现包含非常具体协议信息的数据包。
- 保存捕获的数据包数据。
- 以多种捕获文件格局 导出部分或悉数数据包。
- 依据许多标准 过滤数据包。
- 依据许多条件 查找数据包。
- 依据过滤器对数据包显现 进行上色。
- 创立各种核算数据。
- ….等等
1.2 Wireshark支撑的网络类型
Wireshark运用 libpcap/WinPcap 捕获库,其捕获机制不支撑在一切平台上捕获一切网络类型。各平台支撑的网络类型如下:
Interface | Linux | macOS | Windows |
---|---|---|---|
蓝牙 | ✅ | ❌ | ❌ |
以太网 | ✅ | ✅ | ✅ |
USB | ✅ | ❌ | ❌ |
无线局域网 | ✅ | ✅ | ✅ |
PPP链路 | ✅ | ✅ | ✅ |
- 蓝牙 – 捕获蓝牙流量 – 目前仅限于在 linux 上附加堆栈。
- 以太网 – 在不同的以太网拓扑上捕获,包含交换网络。
- USB – 捕获原始 USB 流量。
- WLAN – 在 802.11(WLAN、Wi-Fi)接口上捕获,包含“监控模式”、原始 802.11 标头和无线电信息。
- PPP链接 – 在拨号线路、ISDN 衔接和 PPP-over-Ethernet(PPPoe,例如 ADSL)上捕获。
1.3 Wireshark过滤器
1.3.1 试验环境
体系 | 信息 |
---|---|
操作体系称号 | Microsoft Windows 11 家庭中文版 |
版别 | 10.0.22621 版别 22621 |
处理器 | Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz,2112 Mhz,4 个内核,8 个逻辑处理器 |
体系类型 | 依据 x64 的电脑 |
网卡类型 | Intel(R) Wireless-AC 9462 |
Wireshark版别 | 4.0.5-64bit |
1.3.2 界面
Wireshark主页首要分为以下几个界面:
- 菜单栏(包含文件、编辑、视图、捕获等功能)
- 工具栏(开端/停止捕获、查找分组等)
- 过滤栏(用于设置过滤条件进行数据包列表过滤)
- 数据列表区(显现捕获到的数据包,每个数据包包含编号,时刻戳,源地址,方针地址,协议,长度,以及数据包信息。)
- 数据具体区(显现数据包的一切具体信息内容)
- 数据字节区(显现数据包原始字节流信息)
- 数据核算区(核算捕获到的分组数)
1.3.3 过滤器的运用
Wireshark的过滤器能够分为两种首要类型:捕获过滤器 和 显现过滤器。
- 捕获过滤器:运用Wireshark的捕获过滤器,用户能够过滤捕获的数据包以匹配用户指定的条件。这些过滤器能够依据协议、源/方针IP地址、端口、协议标志等条件进行设置。捕获过滤器能够手动输入或经过菜单挑选,也能够从过滤器面板中挑选预界说的过滤器。
- 显现过滤器:运用Wireshark的显现过滤器,用户能够将已捕获的数据包依照指定的条件进行过滤,并只显现与这些条件匹配的数据包。这些条件能够依据协议、源/方针IP地址、端口、时刻戳等。显现过滤器能够经过在过滤器面板中手动输入或挑选预界说的过滤器来创立。显现过滤器能够协助用户快速查找感兴趣的数据包,也能够节省屏幕空间和处理时刻。
1.3.3.1 捕获过滤器
捕获过滤器坐落菜单栏的 捕获–> 捕获过滤器。用于捕获数据包前设置捕获条件。
1.3.3.2显现过滤器
显现过滤器坐落主页的 工具栏下方 的输入框。
当咱们在终端输入 ping www.baidu.com
时,在捕获时未设置抓包过滤规矩直接经过网卡进行抓取一切数据包,如下
此刻数据包内容较多,为了挑选咱们想要的信息,则需求在显现过滤器中增加咱们想要的过滤条件
如:ip.addr == 39.156.66.14
,得到如下成果
即可得到咱们想要的 Ping 之后的 ICMP 报文。这基本上满意了咱们的需求!
1.3.3.3 过滤规矩总结
当运用Wireshark时,能够运用过滤规矩来挑选和检查感兴趣的数据包。以下是一些常用的Wireshark过滤规矩:
- 过滤特定IP地址:能够运用以下过滤器来检查特定IP地址的数据包:
ip.addr == x.x.x.x //x.x.x.x为特定IP地址
- 过滤特定IP地址和端口号:能够运用以下过滤器来检查特定IP地址和端口号的数据包:
(ip.addr == x.x.x.x) && (tcp.port == n) //x.x.x.x为特定IP地址,n为端口号
- 过滤特定协议:能够运用以下过滤器来检查特定协议的数据包:
tcp //只显现TCP协议的数据包
udp //只显现UDP协议的数据包
icmp //只显现ICMP协议的数据包
- 过滤特定的数据包巨细:能够运用以下过滤器来检查特定巨细的数据包:
frame.len == n //只显现巨细为n的数据包
frame.len > n //只显现巨细大于n的数据包
frame.len < n //只显现巨细小于n的数据包
- 过滤特定的数据包类型:能够运用以下过滤器来检查特定类型的数据包:
dns //只显现DNS数据包
http //只显现HTTP数据包
ssl //只显现SSL数据包
- 过滤特定的数据包内容:能够运用以下过滤器来检查特定内容的数据包:
http.request.method == "POST" //只显现HTTP POST恳求
http.response.code == 200 //只显现HTTP 200呼应
dns.qry.name == "www.example.com" //只显现恳求www.example.com的DNS数据包
这些是常用的Wireshark过滤规矩示例。还有很多其他过滤规矩,能够依据具体状况进行挑选和设置。
官网显现过滤器参阅:www.wireshark.org/docs/dfref/
2. ARP 原理探求
ARP(Address Resolution Protocol,地址解析协议)是一种用于将IP地址映射到物理MAC地址的协议。ARP是在本地网络中运行的协议,其意图是为了在不同网络层之间树立映射联系,使得数据包能够正确地被传送到其意图地。
2. 1 试验预备
两台主机A、B,且衔接同一个局域网。
2.1.1 检查主机IP地址和MAC地址
Windows 下翻开命令提示符,输入ipconfig/all
:
得到当时A主机的MAC地址为 A4-B1-C1-9B-28-** ,学校网下IP地址为:192.168.1.101
B主机的MAC地址为 D8-12-65-6E-D3-** ,学校网下IP地址为 192.168.1.100
主机 | IP地址 | MAC地址 |
---|---|---|
A | 192.168.1.101 | A4-B1-C1-9B-28-** |
B(试验机) | 192.168.1.100 | D8-12-65-6E-D3-** |
2.2 检查ARP表
在 A 主机下检查当时 ARP 表,输入 arp -a
,成果如下:
此刻并未有 B 主机的 ARP表项。
2.3 Wireshark捕获
后台翻开相应网卡开端捕获,此刻 A 主机命令提示符输入ping 192.168.1.100
,向B发送 ICMP 报文以及 A主机发送ARP播送。
此刻在从头输入 arp -a
,发现得到 B 主机的相应MAC地址,试验成功!
2.4 Wireshark剖析ARP原理
-
首先,假设主机A需求向主机B发送一个数据包,可是不知道主机B的物理地址(MAC地址),只知道主机B的IP地址,主机A将一个ARP恳求播送到本地网络中的一切设备,恳求包含方针IP地址和发送者MAC地址(通常是播送地址)。
-
交换机S接纳到ARP恳求,并将其转发到本地网络中的一切设备。因为这是一个播送音讯,因而每个设备都会接纳到此恳求。主机B接纳到ARP恳求,检查其中的IP地址是否匹配自己的IP地址。如果是,主机B会向主机A发送一个ARP呼应,该呼应包含其MAC地址。
-
ARP呼应被播送到本地网络中的一切设备,主机A接纳到呼应并保存主机B的MAC地址到其ARP缓存中,以备将来运用。
经过上述试验,咱们能够看出ARP的作业原理是经过播送的方式,在本地网络中进行的。ARP恳求和呼应都是播送音讯,这意味着一切的网络设备都能够接纳到并处理它们。ARP缓存记载了IP地址和对应的MAC地址,这能够防止重复的ARP恳求并加快数据包的传输。
总结:ARP是一种在本地网络中作业的协议,它允许主机在不知道方针MAC地址的状况下查找方针设备的物理地址,然后完成数据包的正确传输。
3. ICMP 协议的报文结构界说
3.1 获取ICMP报文
因为 Ping 作业在应用层且直接运用网络层的 ICMP 协议,依据这个原理,在命令提示符输入 ping 192.168.1.100
即可在 Wireshark 捕获到 ICMP 报文,在显现过滤器里边输入 icmp
即可得到相应的 ICMP 报文数据。
3.2 ICMP结构剖析
3.2.1 IP数据报
检查IP数据报,调查IP数据报的首部字段及其内容,其报文结构如下:
3.2.2 ICMP 数据报
点击Internet Control Message Protocol翻开,检查 ICMP报文,如下分别为ICMP问询报文的回送恳求报文和回答报文的首部字段。
由此咱们能够得到的 ICMP报文结构界说如下:
- 类型(8 bits):标明ICMP报文的类型,共有14种类型(例如回显恳求、回显呼应、方针不可达等)。Type的值在1~255之间,不同的类型有不同的Code值。
- 代码(8 bits):标明ICMP报文的代码,用于更精确地描述ICMP报文的意图。Code的值在0~255之间,不同的Code值对应不同的类型。
- 校验和(16 bits):是ICMP报文的校验和,用于检测数据是否传输进程中发生了错误。
- 数据(可变长度):是ICMP报文的数据部分,其长度取决于ICMP报文的类型和代码。
4. TCP 原理探求
4.1 试验预备
-
获取
www.baidu.com
的实践IP地址,在命令提示符输入:ping www.baidu.com
得到当时
www.baidu.com
的 IP 地址为:39.156.66.14 -
翻开 Wireshark 捕获,开端抓取数据包,并在显现过滤器参加过滤条件:
ip.addr == 39.156.66.14
4.2 TCP 三次握手原理
此刻在主机的浏览器查找栏输入 www.baidu.com
进入百度网站,在 Wireshark 中调查TCP报文的捕获状况,如下:
能够看到浏览器翻开百度网站时,本主机与百度服务器进行了 TCP三次握手 ,依据这三次握手,剖析 TCP衔接管理的原理。
4.2.1 第一次握手阶段
因为 TCP协议是担任主机 端到端 的衔接,因而本主机操作体系随机选取其中一个 动态端口号(49152~65535) ,本例中选取了 54617
作为源端口号,意图端口号是百度服务器供给的 HTTPS端口 443
,因为此报文是 TCP同步报文,因而此刻 ACK 位为 0(Not set),SYN 位为 1,随机序列号为 948123796
。此刻为客户端恳求树立链接阶段,客户端进入 同步已发送 状况,等候服务器端承认,如图所示,TCP报文如下:
4.2.2 第2次握手阶段
此刻源端口为百度服务器供给的 HTTPS端口 443
,意图端口为本主机的 54617
,承认号为 948123796+1
,即标明已成功收到 第一次握手阶段 的恳求树立衔接报文!此刻第2次握手阶段的TCP报文随机选取一个序列号为 3375721040
,同步位和承认位均为 1。百度服务器将该数据包发送给客户端以标明承认衔接恳求,服务器端进入同步已接纳 状况。TCP报文如下所示:
4.2.3 第三次握手阶段
本主机收到第2次握手阶段的TCP报文后,向百度服务器发送一个承认报文,标明收到了承认信息。该报文中的ACK字段值为收到的 3375721040+1
,并且序列号为收到的ACK值 948123796+1
。客户端和服务器端进入 衔接已树立 状况,完成三次握手,此刻 TCP 报文如下:
至此本主机和百度服务器成功树立牢靠的TCP衔接!随后客户端与服务器端之间能够开端传输数据。
4.3 报文的分片
4.3.1 不分片报文传输
-
较短 IP 报文
调查不分片标志对于较短的 IP 报文传输的影响,在 命令提示符中输入
ping -l 1472 -f 192.168.1.102
,意思是向 192.168.1.102 主机发送长度为 1472字节的数据包,可是此 IP报文 不进行分片,成果如图所示:可见以太网帧总长度为 IP首部 20 + ICMP首部 8 + 数据长度1472 =1500(小于等于 MTU 的 1500),不分片标志的片位移为 0,由此可知:不分片标志对较小的 IP 报文传输没有影响。
-
较大 IP 报文
调查不分片标志对较大 IP 报文传输的影响,在 命令提示符中输入
ping -l 1473 -f 192.168.1.102
,成果如图所示:可见:因为IP报文的长度(IP首部 20 + ICMP首部 8 + 数据长度1473 =1501 )过大(超越了 MTU 的 1500 长度),不分片标志会导致超越 MTU 的长报文无法传输。
4.3.2 分片报文传输
翻开命令提示符,输入ping -l 3000 -n 1 192.168.1.102
,意思为只发送一个巨细为3000的数据包。成果如下:
需求封装在 IP数据包里边发送的数据巨细为 8(ICMP首部)+3000(数据包)= 3008。
第一个分片不能超越 MTU,所以为 20(IP首部)+ 1480(数据分片)= 1500;第二个分片不能超越 MTU,所以也为 20(IP首部)+ 1480(数据分片)= 1500;因为 3008(数据总长度)- 1480 – 1480 = 48,因而第三个分片巨细为 20(IP首部) + 48(剩余数据)=68。剖析成果与试验数据一致!
5. Web服务器衔接进程
要求:从学校网建议向外网中某 Web 服务器的拜访,记载并剖析从 MAC 层协议、IP 协议、TCP 协议一直到 HTTP 协议的进程。
5.1 拜访云 Web服务器
以个人网站 http://47.94.12.50
为例,后台翻开 Wireshark嗅探,显现过滤器输入 ip.addr == 47.94.12.50
。
5.2 收到的数据报文
在Wireshark嗅探到的数据报文如下所示:
首先 主机先与云服务器进行第一次 TCP 衔接,完成三次握手,然后应用层运用 HTTP 协议进行传输,最后传输层运用 TCP四次挥手释放第一次 TCP 衔接。下面依据自下而上地剖析从 MAC 层协议、IP 协议、TCP 协议一直到 HTTP 协议的进程。
5.3 MAC 协议
以初次收到的 HTTP 报文为例,其收到的以太网帧数据如下:
由 以太网Ⅱ 帧的格局可知,此以太网帧的意图地址为 ca:9e:6b:d1:d7:,源地址为 a4:b1:c1:9b:28: ,类型为 0x0800。因为在咱们抓到的包中,前八个字节的前导码和帧开端符现已被网卡过滤掉了所以咱们抓不到。
常见的类型对应值如下:
值 | 协议 |
---|---|
0x0800 | IPv4 |
0x0806 | ARP |
0x86DD | IPv6 |
0x88CC | LLDP |
0x8035 | RARP |
咱们的帧类型为0x0800
是一个 IPv4 的封装帧,后边的冗余校验也和前导码相同,现已被网卡删掉了,所以捕获不到,以太网的头部就现已悉数抽离了,咱们持续剖析下一层协议:IPv4。
5.4 IPv4 协议
由此 IP报文 可知:
-
版别:
4
(即 IPv4,0x0100 = 4); -
首部长度:
20
(即 5 * 4B = 20B); -
ECN:
Not-ECT
(显式拥塞告诉Explicit Congestion Notification,简称ECN,00
代表不支撑 ECN); -
DF:
1
(不分片); -
MF:
0
(没有分片); -
Offset:
0
(没有偏移);
因为以太网有 MTU 的包巨细限制,IPv4 挑选了经过分片重组的方式来向上层的传输层协议供给传输任意包巨细的能力,DF、MF、Offset位就是用来进行分片操控的。
- TTL:
0x40 = 64
,代表了这个包的存活时刻,还剩 64 s;
- 上层协议:
0x06 = 6
,代表 TCP, 常见取值如下:
取值 | 协议 |
---|---|
1 | ICMP |
6 | TCP |
17 | UDP |
- 源 IP 地址:192.168.93.86
- 意图 IP 地址:47.94.12.50
5.5 TCP协议
IP 数据部分就是 TCP报文,其数据如下:
- 源端口:
c0 8a -> 49290
。 - 意图端口:
00 50 -> 80
。
最大端口值为 2^16-1 = 65535,端口号区分成了三段:
端口范围 | 用途 |
---|---|
0-1023 | 公认端口。常见的公认端口有:ftp(21)、ssh(22 )、smtp(25)、http(80 )、https(443) 等。 |
1024-49151 | 用户自用。一般操作体系会随机在其中挑选可用端口。 |
49152-65535 | 保存端口。一般不推荐运用,因为用户端口也很够用了。 |
-
序列号:
2288663079
。 -
承认号:
2099426961
。
之后紧接着是九个启用中的标志位,下面咱们来逐位剖析。
- NS: ECN-nonce,显式拥塞告诉(Explicit Congestion Notification),这个是和 IP 层的 ECN 相同,主动标明发生了网络拥塞的信号。
- CWR: Congestion Window Reduced,这个是配合 ECN 标志位运用的,用来告诉发送者拥塞窗口现已调小。
- ECE:ECN-Echo,这个标志位首要是用 TCP 衔接在握手的时候用来协商两头是否都支撑显现拥塞操控。
- URG: Urgent Pointer field significant,代表存在于选项中的紧迫指针字段现已启用,需求赶快处理这些数据,不过运用的范围不广。
- ACK: Acknowledgment field significant,代表 ACK 字段有效。
- PSH: Push Function,用于将缓冲区内的一切数据悉数发送,不再等候,同时对端在收到 PSH 标志时,应立即将数据悉数递交给上层应用处理,不必再等候数据兼并提交。PSH 标志位和 TCP_NoDelay 选项的差异在于,PSH 是 TCP 报文中的字段,对端也会做出对应的呼应,而 TCP_NoDelay 仅仅内核的一个参数,用于在当时应用中封闭 Nagle 算法。
- RST: Reset,用于重置当时衔接,一般用于拒绝衔接,或许出现错误时指示重建衔接。
- SYN: Synchronize sequence numbers,同步序列号,用于树立衔接并同步序列号。
- FIN: Finish, 用于封闭衔接,标明没有数据要发送了。
在咱们的包中,这九个标志位分别是:000011000,ACK = 1,PSH = 1,代表 ACK 字段是收效的,
- 窗口巨细:
259
,单位是字节。
- 校验和:
5c 05
,这个校验和在核算时不仅包含头部,也包含了传输内容。
- 紧迫指针:咱们这里 URG 标志位是 0,所以也就不存在紧迫指针,这 16 位满是
0
。
- TCP 的选项字段:TCP 选项是不定长的。
5.6 HTTP 协议
由此 HTTP报文可知主机经过 HTTP/1.1 协议运用 GET 的恳求办法向 服务器 资源建议恳求。
- Host :
47.94.12.50
,代表了恳求资源所属的主机。 - User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
,代表主机运用的 HTTP 协议的客户端类型。 - Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
, 代表客户端这边支撑任何类型的资源。
5.7 总结
核算机网络的组成能够自底向上地总结为以下几个层次,每个层次担任不同的功能和任务:
-
物理层
- 物理层是核算机网络的最底层,担任传输原始的比特流。
- 它界说了电气、光学和机械接口的标准,以及传输介质的特性和传输速率等。
- 首要任务是将比特流从发送端传输到接纳端,没有对数据进行处理或剖析。
-
数据链路层
- 数据链路层树立在物理层之上,担任在直接相连的节点之间牢靠地传输数据。
- 它将比特流区分为帧,处理错误检测和纠正,以及帧的传输操控。
- 首要任务是供给牢靠的数据传输,并处理节点之间的通信错误。
-
网络层
- 网络层是在数据链路层之上,处理不同网络之间的数据包转发和路由挑选。
- 它担任将数据包从源主机传输到方针主机,经过路由挑选算法确认数据包的最佳路径。
- 首要任务是完成逻辑上的主机到主机的通信,以及网络互联和互操作性。
-
传输层
- 传输层树立在网络层之上,供给端到端的数据传输和服务质量操控。
- 它为应用程序供给牢靠的数据传输和错误恢复,并进行流量操控和拥塞操控。
- 首要任务是确保数据在源主机和方针主机之间的牢靠传输,以及供给端到端的衔接和通信服务。
-
应用层
- 应用层是网络的最高层,供给特定应用程序和用户之间的接口。
- 它包含各种应用层协议和服务,例如电子邮件、文件传输、Web浏览等。
- 首要任务是为用户供给各种应用程序和服务,以满意特定的通信需求。
经过这次Wireshark抓包试验协助了我更深层次地理解每一层的功能和责任,以及它们怎么协同作业来完成牢靠的数据通信和应用服务!