验证性实验
ipconfig
ipconfig是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它用来显示当前网络连接的配置信息。
tips: 直接使用ipconfig会显示简略的网络连接配置信息,加上参数(/all)可以显示详细信息。同时还有其他的参数可以通过ipconfig /?来查看使用方法。
实作一: 查看自己的网络配置
ipconfig /all
Windows IP 配置
主机名 . . . . . . . . . . . . . : DESKTOP-R4VFJEQ
主 DNS 后缀 . . . . . . . . . . . :
节点类型 . . . . . . . . . . . . : 混合
IP 路由已启用 . . . . . . . . . . : 否
WINS 代理已启用 . . . . . . . . . : 否
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Realtek 8822CE Wireless LAN 802.11ac PCI-E NIC
物理地址. . . . . . . . . . . . . : 5C-3A-45-C2-61-CD
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::81bb:1f56:ced3:351%6(首选)
IPv4 地址 . . . . . . . . . . . . : 192.168.0.133(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
获得租约的时间 . . . . . . . . . : 2022年12月17日 10:05:17
租约过期的时间 . . . . . . . . . : 2022年12月18日 10:05:17
默认网关. . . . . . . . . . . . . : 192.168.0.1
DHCP 服务器 . . . . . . . . . . . : 192.168.0.1
DHCPv6 IAID . . . . . . . . . . . : 73153093
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-29-DB-73-31-5C-3A-45-C2-61-CD
DNS 服务器 . . . . . . . . . . . : 192.168.0.1
TCPIP 上的 NetBIOS . . . . . . . : 已启用
-
主机名:本机的hostname,主机名指得是网络上设备的名称,主机名即计算机名。
-
主DNS后缀:默认是没有的,也就是本地解析,也就是说DNS后缀是用来解析主机名用的。
-
连接特定的DNS后缀:网卡对应的DNS服务器帮助解析IP。本地的连接没有DNS服务器则空。
-
描述:网卡的品牌型号。
-
物理地址:以太网适配器(网卡)的物理地址。
-
DHCP已启用:DHCP是动态分配IP的协议,IP自动获取时会启用。
-
自动配置已启用:同上。
-
本地链接 IPv6 地址:IPv6表示法的IP地址%后面的14是网络号的个数。
-
IPv4 地址:本地在局域网内的IP地址。
-
子网掩码:化成二进制,前面是1的表示为网络号,后面为0的表示为主机号。
-
获得租约的时间:此IP地址的开始使用时间。
-
租约过期的时间:此IP地址的到期时间。
-
默认网关:默认网关IP地址,意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。也就是路由器的地址。
-
DHCP服务器:DHCP服务器地址,提供DHCP服务的电脑的IP地址。
-
DHCPv6 IAID:身份关联标识符。
-
DHCPv6 客户端 DUID:DHCP 唯一标识符 。
-
TCPIP 上的 NetBIOS:当安装TCP/IP协议时,NetBIOS
也被Windows作为默认设置载入,我们的计算机也具有了NetBIOS本身的开放性。
对于本机来说,本机在2022年12月17日 10:05:17被分配使用网络号为192.168.0.0中的IPv4地址为192.168.0.133通过默认网关192.168.0.1进行网络活动。
实作二: 比较自己与其他计算机网络配置异同
ipconfig /all
Windows IP 配置
主机名 . . . . . . . . . . . . . : 3b32
主 DNS 后缀 . . . . . . . . . . . :
节点类型 . . . . . . . . . . . . : 混合
IP 路由已启用 . . . . . . . . . . : 否
WINS 代理已启用 . . . . . . . . . : 否
以太网适配器 本地连接 3:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Reealtek PCIe GBE Family Controller #3
物理地址. . . . . . . . . . . . . : C0-3F-D5-5E-2E-B6
DHCP 已启用 . . . . . . . . . . . : 否
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::24b9:cc8:3d77:8203%14(首选)
IPv4 地址 . . . . . . . . . . . . : 10.1.201.79(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.128
默认网关. . . . . . . . . . . . . : 10.1.201.1
DHCPv6 IAID . . . . . . . . . . . : 297811925
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-27-24-00-1B-C9-3F-D5-5E-0A-0B
DNS 服务器 . . . . . . . . . . . : 202.202.240.33
TCPIP 上的 NetBIOS . . . . . . . : 已启用
即对于学校的电脑来说,主机3b21处于网络号为10.1.201.0中IPv4地址10.1.201.79通过网关10.1.201.1进行网络活动,他是使用202.202.240.33学校的DNS服务器进行解析URL的。
是同一子网吗?
我和学校的电脑目前并不处于同一子网中,通过我们两台主机网络号的不同,可以明确看出我们并不处于同一子网下。
本机网络号:192.168.0.0
学校电脑网络号:10.1.201.0
ping
PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序 。
tips : 同样可以使用ping /?进行使用帮助,后文不再进行阐述。
实作一: 简单ping使用
ping www.cqjtu.edu.cn
正在 Ping www.cqjtu.edu.cn [218.70.34.236] 具有 32 字节的数据:
来自 218.70.34.236 的回复: 字节=32 时间=59ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=54ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=54ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=58ms TTL=50
218.70.34.236 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 54ms,最长 = 59ms,平均 = 56ms
-
ping命令会自动根据DNS解析到对应的IP地址,也就是说使用URL和IP地址同等作用。
-
默认会发送四个ICMP的数据包进行探测网络情况。
-
其中的时间表明数据包发送往返行程的时间,综合四个包将对其进行计算。
-
TTL原本是协议原本希望使用过期时间,但是实际使用中是反馈的去到该IP已经历跳数。
实作二: 使用 ping/? 命令了解该命令的各种选项并实际使用。
>ping/?
用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
[-4] [-6] target_name
选项:
-t Ping 指定的主机,直到停止。
若要查看统计信息并继续操作,请键入 Ctrl+Break;
若要停止,请键入 Ctrl+C。
-a 将地址解析为主机名。
-n count 要发送的回显请求数。
-l size 发送缓冲区大小。
-f 在数据包中设置“不分段”标记(仅适用于 IPv4)。
-i TTL 生存时间。
-v TOS 服务类型(仅适用于 IPv4。该设置已被弃用,
对 IP 标头中的服务类型字段没有任何
影响)。
-r count 记录计数跃点的路由(仅适用于 IPv4)。
-s count 计数跃点的时间戳(仅适用于 IPv4)。
-j host-list 与主机列表一起使用的松散源路由(仅适用于 IPv4)。
-k host-list 与主机列表一起使用的严格源路由(仅适用于 IPv4)。
-w timeout 等待每次回复的超时时间(毫秒)。
-R 同样使用路由标头测试反向路由(仅适用于 IPv6)。
根据 RFC 5095,已弃用此路由标头。
如果使用此标头,某些系统可能丢弃
回显请求。
-S srcaddr 要使用的源地址。
-c compartment 路由隔离舱标识符。
-p Ping Hyper-V 网络虚拟化提供程序地址。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
- -t 持续不断ping主机,直到使用中止或统计。
ping -t www.cqjtu.edu.cn
正在 Ping www.cqjtu.edu.cn [218.70.34.236] 具有 32 字节的数据:
来自 218.70.34.236 的回复: 字节=32 时间=55ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=52ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=53ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=61ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=53ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=56ms TTL=50
218.70.34.236 的 Ping 统计信息:
数据包: 已发送 = 6,已接收 = 6,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 52ms,最长 = 61ms,平均 = 55ms
Control-C
^C
- -a 该参数需要对应的DNS支持该服务,其会将ping的ip主机名进行返回。
ping -a 218.70.34.236
正在 Ping 218.70.34.236 具有 32 字节的数据:
来自 218.70.34.236 的回复: 字节=32 时间=53ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=52ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=74ms TTL=50
来自 218.70.34.236 的回复: 字节=32 时间=55ms TTL=50
218.70.34.236 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 52ms,最长 = 74ms,平均 = 58ms
其中的 正在 Ping www.cqjtu.edu.cn 即为解析结果。
-
-n 可以设定要发送的回显请求数
-
-l 可以设定要发送的缓冲区大小
ping www.cqjtu.edu.cn -n 5 -l 64
正在 Ping www.cqjtu.edu.cn [218.70.34.236] 具有 64 字节的数据:
来自 218.70.34.236 的回复: 字节=64 时间=58ms TTL=50
来自 218.70.34.236 的回复: 字节=64 时间=53ms TTL=50
来自 218.70.34.236 的回复: 字节=64 时间=53ms TTL=50
来自 218.70.34.236 的回复: 字节=64 时间=54ms TTL=50
来自 218.70.34.236 的回复: 字节=64 时间=53ms TTL=50
218.70.34.236 的 Ping 统计信息:
数据包: 已发送 = 5,已接收 = 5,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 53ms,最长 = 58ms,平均 = 54ms
可以看到,其中传输的字节变为了64,而包数也发了5个。
利用Ping命令进行网路排查
- 测试本机网络软件硬件工作状态,ping 127.0.0.1,若不正常返回,则问题在本机,检查本机 TCP/IP 配置即网卡状态等。
- 测试本子网内部工作状态,ping 本子网另一主机ip,若不正常返回,问题在本机网络出口到交换机之间,检查本机网卡到交换机的连线等。
- 测试本子网出口工作状态,ping 本子网网关ip,若不正常返回,找网管麻烦。
测试目的IP连通状态,ping 目的ip,若不正常返回,找目的IP负责人麻烦。
tracert
TRACERT,即路由追踪,该命令行程序可用于跟踪 Internet 协议(IP)数据包传送到目标地址时经过的路径。
tracert /?
用法: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
[-R] [-S srcaddr] [-4] [-6] target_name
选项:
-d 不将地址解析成主机名。
-h maximum_hops 搜索目标的最大跃点数。
-j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
-w timeout 等待每个回复的超时时间(以毫秒为单位)。
-R 跟踪往返行程路径(仅适用于 IPv6)。
-S srcaddr 要使用的源地址(仅适用于 IPv6)。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
tracert www.cqjtu.edu.cn
通过最多 30 个跃点跟踪
到 www.cqjtu.edu.cn [218.70.34.236] 的路由:
1 9 ms 3 ms 5 ms 192.168.0.1
2 10 ms 8 ms 4 ms 10.242.0.1
3 10 ms 8 ms 8 ms 10.11.23.117
4 19 ms 17 ms 18 ms 10.11.23.81
5 * * * 请求超时。
6 * * 17 ms 36.102.3.1
7 17 ms 17 ms 17 ms 123.178.211.205
8 18 ms 15 ms 16 ms 219.148.173.169
9 34 ms 39 ms 33 ms 202.97.38.125
10 * 48 ms 46 ms 202.97.20.102
11 * 55 ms * 222.176.9.186
12 55 ms 57 ms 171 ms 222.176.89.34
13 43 ms 44 ms 43 ms 222.177.128.234
14 54 ms 53 ms 54 ms 218.70.34.236
跟踪完成。
参数学习
- -d 追踪到的节点仅显示IP,不解析为主机名
- -h 最大跃点数,即最多追踪几步
tracert -h 5 www.cqjtu.edu.cn
通过最多 5 个跃点跟踪
到 www.cqjtu.edu.cn [218.70.34.236] 的路由:
1 5 ms 2 ms 2 ms 192.168.0.1
2 8 ms 10 ms 9 ms 10.242.0.1
3 48 ms 5 ms 6 ms 10.11.23.117
4 19 ms 19 ms 15 ms 10.11.23.81
5 * * * 请求超时。
跟踪完成。
- -w -4 -6 参数与ping命令中的同等使用方法。
实作一: 追踪分析
tracert -h 64 www.baidu.com
通过最多 64 个跃点跟踪
到 www.a.shifen.com [182.61.200.7] 的路由:
1 3 ms 5 ms 3 ms 192.168.0.1
2 7 ms 9 ms 9 ms 10.242.0.1
3 15 ms 8 ms 8 ms 10.11.23.125
4 23 ms 22 ms 22 ms 10.11.23.85
5 * * * 请求超时。
6 * * * 请求超时。
7 33 ms 32 ms 48 ms 103.205.137.185
8 23 ms 22 ms 26 ms 103.205.137.42
9 31 ms 31 ms 31 ms 182.61.255.40
10 * 30 ms 28 ms 182.61.254.179
11 * * * 请求超时。
12 * * * 请求超时。
13 * * * 请求超时。
14 * * * 请求超时。
15 23 ms 23 ms 23 ms 182.61.200.7
跟踪完成。
每步返回结果中,第一个数字表示第几个跃点,后面三个时间表示发送了三个ICMP包分别的往返时间,最后是本步主机名[IP],但是其中部分数据会含有号,有号的都代表访问超时,但是其中又有两种情况。
一种是所有时间全部为*号,对应的主机名[IP]显示请求超时,此时一般是对应主机并不允许ICMP回显,就跟之前无法Ping通一个道理。
另一种情况是因为确实数据返回比较缓慢,可以看到三个时间是存在不为*号的,后面的主机名[IP]也是正常现实的。
实作二:分析全球ISP到qige.io线路状态
据此可以分析出qige.io的ip地址,各个ISP地区、名称、丢包率、发送测试包数量、最后返回的包往返行程的估计时间、平均时间、最好时间等等。
问题一:该命令的追踪方法其实很简单,通过发送不同TTL根据返回信息进行追踪,比如首先发送TTL为1的包,这样他就会返回第一步到达的网关信息。以此类推,逐步到达需要访问的点。
问题二:前几条基本时从本机连接到互联网上必须有的操作,出网关,上ISP等等。
问题三:其中部分数据会含有号,有号的都代表访问超时,两种不同的情况可以见上文分析。
ARP
ARP(Address Resolution Protocol)即地址解析协议,是用于根据给定 IP 地址,查找并得到其对应的 MAC地址的协议。主要用于局域网内不知道目的IP地址的MAC地址时。
实作一: arp缓存
arp -a 该命令可以查看当前的arp缓存
可以看到当前的arp已经对部分ip地址有缓存,包括本机的全局广播和网关等。
arp -d * //该命令可以删除所有的arp缓存
在我们使用ping命令去访问一个IP地址时,首先我们会查看缓存中是否具有该IP的MAC地址,只有知道了MAC地址我们的请求才能通过数据链路层正确发送出去,如果没有,将立即调用arp协议,发送arp包出去,在局域网内进行广播,询问谁是目的IP,然后根据回应自动存储相应地址到本地缓存。
实作二:帮助命令
可以看到,其中有我们刚刚使用了的arp -a查看所有ARP缓存命令,同时我们也可以对其中的静态项手动添加,而动态项则基本是自动添加上去的,经典的就是我们的网关。
DHCP
DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一个用于 IP 网络的网络协议,位于 OSI 模型的应用层,使用 UDP 协议工作,主要有两个用途:
- 用于内部网或网络服务供应商自动分配 IP 地址给用户
- 用于内部网管理员对所有电脑作中央管理
简单的说,DHCP 可以让计算机自动获取/释放网络配置。
实作一:尝试DHCP过程
- 释放:ipconfig/release
IP地址,子网掩码,默认网关,都消失了。
netstat
netstat(Network Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。
实作一:端口服务
C:\Windows\System32\drivers\etc中service文件
其中可以看到我们熟知的一些服务对应端口,比如:
* ftp 对应tcp 21端口
* ssh 对应tcp 22端口
* http 对应tcp 80端口
* https对应tcp/udp 443端口
* ...
实作二:查看计算机当前的网络连接状况
“-a"选项意在显示所有连接,当不附加”-n"选项时,它显示的是本地计算机的netbios名字+端口号。而加了"-n"选项后,它显示的是本地IP地址+端口号。
DNS
DNS(Domain Name System)即域名系统,是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 的 53 号端口。
实作一:查看本机hosts
C:\WINDOWS\system32\drivers\etc\hosts 文件查看
可以看到我们可以使用本地映射,来访问一些被DNS污染的网址。比如github.com
实作二:查看所有缓存并清除
ipconfig /displaydns 查看所有dns缓存
ipconfig /flushdns 清除所有dns缓存
发现其中,我已经写进hosts的记录还在
实作三:nslookup
nslookup qige.io
服务器: UnKnown
Address: 192.168.0.1
非权威应答:
名称: qige.io
Addresses: 2606:4700:3032::ac43:8f35
2606:4700:3033::6815:272e
104.21.39.46
172.67.143.53
>nslookup qige.io 8.8.8.8
服务器: dns.google
Address: 8.8.8.8
非权威应答:
名称: qige.io
Addresses: 2606:4700:3033::6815:272e
2606:4700:3032::ac43:8f35
172.67.143.53
104.21.39.46
我们可以通过自己修改hosts来过滤广告,基础原理其实就是在文件中添加该广告链接,并且指定一个ip地址(通常为本机地址),因为hosts文件优先级是高于DNS服务器,这样浏览器解析该广告链接时,优先hosts文件,这样我们就相当于更改了该链接本来的ip地址,从而使该链接失效。
cache
cache 即缓存,是 IT 领域一个重要的技术。我们此处提到的 cache 主要是浏览器缓存。
浏览器缓存是根据 HTTP 报文的缓存标识进行的,是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。
实作一:网页cache
内存缓存和磁盘缓存,基本上这个网页的所有资源我都已经在cache缓存了。
实作二:禁用cache
禁用缓存后,从大小可以看出全部从网络请求,较慢。
Wireshark 实验
数据链路层
实作一: Ethernet帧结构
双击任意一个包,即可弹出详细信息界面,在这里选择数据链路层的Ethernet帧,下方即可展开该帧结构,包括目的MAC,源MAC、类型,下方还会高亮对应的数据字节。甚至还会根据MAC地址特点分析出设备厂家等。
实作二:子网内/外通信时MAC地址
实作三:掌握ARP解析过程
当我在ping 192.168.1.18的时候,会发出一个arp广播,
询问谁有192.168.1.18(目的ip),请告诉192.168.1.0(本机ip)
目的mac都是f,即广播
网络层
实作一:IP包结构
实作二:ip包的分段与重组
tips:利用ping命令的-l指令即可改变要发送的数据长度
ping 202.202.240.16 -l 2000
正在 Ping 202.202.240.16 具有 2000 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
202.202.240.16 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
实作三:考察TTL时间
使用tracert www.baidu.com进行追踪,可以看到每次发送的ttl都是逐一增加的,每个都发三次,刚好与其结果对应。
tracert www.baidu.com
通过最多 30 个跃点跟踪
到 www.a.shifen.com [182.61.200.7] 的路由:
1 5 ms 6 ms 33 ms 192.168.0.1
2 7 ms 10 ms 9 ms 10.242.0.1
3 8 ms 8 ms 8 ms 10.11.23.125
4 27 ms 41 ms 23 ms 10.11.23.85
5 * * * 请求超时。
6 * * * 请求超时。
7 36 ms 30 ms 30 ms 103.205.137.185
8 22 ms 27 ms 26 ms 103.205.137.42
9 30 ms 30 ms 30 ms 182.61.255.40
10 * 32 ms 28 ms 182.61.254.179
11 * * * 请求超时。
12 * * * 请求超时。
13 * * * 请求超时。
14 * * * 请求超时。
15 29 ms 24 ms 24 ms 182.61.200.7
跟踪完成。
传输层
实作一:熟悉TCP与UPD段结构
- 熟悉 TCP 段的结构,如:源端口、目的端口、序列号、确认号、各种标志位等字段。
- 熟悉 UDP 段的结构,如:源端口、目的端口、长度等。
实作二:分析TCP建立与释放连接
- 打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用 tcp 过滤后再使用加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间使得能够捕获释放连接的包。
第一次握手,SYN为1,ACK为0
第二次握手,SYN为1,ACK为1
第三次握手,SYN为0,ACK为1
SYN 同步序列号,用来发起一个TCP连接
- 四次挥手释放连接的包
第一次挥手,FIN为1,ACK为1
第二次挥手,ACK为1
第三次握手,FIN为1,ACK为1
第四次握手,ACK
TCP断开连接是通过发送FIN报文,来告诉对方数据已经发送完毕,可以释放连接了。
应用层
实作一:DNS解析
- 先使用 ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。
>ipconfig /flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。
>nslookup qige.io
服务器: UnKnown
Address: 192.168.0.1
非权威应答:
名称: qige.io
Addresses: 2606:4700:3032::ac43:8f35
2606:4700:3033::6815:272e
104.21.39.46
172.67.143.53
- 当前计算机使用 UDP,向默认的 DNS 服务器的 53 号端口发出了查询请求,
- DNS 服务器的 53 号端口返回了结果。
QR:查询/应答标志。0表示这是一个查询报文,1表示这是一个应答报文
opcode:定义查询和应答的类型。0表示标准查询,1表示反向查询(由IP地址获得主机域名),2表示请求服务器状态
AA:授权应答标志,仅由应答报文使用。1表示域名服务器是授权服务器
TC:截断标志,仅当DNS报文使用UDP服务时使用。因为UDP数据报有长度限制,所以过长的DNS报文将被截断。1表示DNS报文超过512字节,并被截断
RD:递归查询标志。1表示执行递归查询,即如果目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,直到获得结果并把该结果返回给客户端。0表示执行迭代查询,即如果目标DNS服务器无法解析某个主机名,则它将自己知道的其他DNS服务器的IP地址返回给客户端,以供客户端参考
RA:允许递归标志。仅由应答报文使用,1表示DNS服务器支持递归查询
zero,这3位未用,必须设置为0
rcode:4位返回码,表示应答的状态。常用值有0(无错误)和3(域名不存在)
实作二:HTTP请求和应答
- 打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用http 过滤再加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间以将释放连接的包捕获。
选择qige.io使用的是https,使用http过滤已经无法抓取信息,换了个url进行抓取。
其中获取资源,大部分用的get
- HTTP 请求包,查看请求使用的什么命令,如:GET, POST。并仔细了解请求的头部有哪些字段及其意义。
- 请在你捕获的包中找到 HTTP 应答包,查看应答的代码是什么,如:200, 304, 404 等。并仔细了解应答的头部有哪些字段及其意义。
其中还有更多的应答代码:
1开头 基本是消息响应
2开头 基本是成功响应,200——OK
3开头 基本是重定向,即文件换位置了,比如304——Not Modified没有修改,在缓存中有
4开头 基本就是客户端错误了,比如404——Not Found,403——Forbidden
5开头 基本是服务段错误了,比如502——Bad Gateway