计算机网络实验 —— 验证性实验
1. ipconfig
1.1. 实作一
使用
ipconfig/all
查看自己计算机的网络配置,尽可能明白每行的意思,特别注意 IP 地址、子网掩码Subnet Mask
、网关Gateway
。
物理地址:E0-0A-F6-4A-44-3B
。电脑的MAC地址。
DHCP已启用:DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码,提高ip地址的利用率。
IPv6地址:IPv6地址有128位,用十六进制表示。
IPv4地址:此电脑在局域网内的ip地址,有32位,通常用点分十进制表示。10.61.94.96
子网掩码:子网掩码是在IPv4地址资源紧缺的背景下为了解决lP地址分配而产生的虚拟lP技术,它可以用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码全1表示网络号,全0表示主机号;将子网掩码写成二进制拿去与主机ip地址做与运算,得到的就是主机所在的网络号。255.254.0.0
默认网关:即缺省网关。是本机所在的网络的第一台主机,当要与本子网之外的子网通信时,就要把数据发给网关,通过网关完成通信。10.160.255.254
1.2. 实作二
使用 ipconfig/all 查看旁边计算机的网络配置,看看有什么异同。
主机号不同,ipv4网络号不相同;子网掩码,默认网关相同。
1.3. 问题
你的计算机和旁边的计算机是否处于同一子网,为什么?
我的IPv4地址:10.61.94.96
我的子网掩码:255.254.0.0
室友的IPv4地址:10.60.242.133
室友的子网掩码:255.254.0.0
我的ip地址与子网掩码相与所得的网络号和旁边的计算机的ip和子网掩码相与所得到的网络号相同,均为10.60.0.0/15
,所以我们是处于同一子网的。
2. ping
2.1. 实作一
要测试到某计算机如 重庆交通大学 Web 服务器的连通性,可以使用
ping www.cqjtu.edu.cn
命令,也可直接使用 IP 地址。
请掌握使用该命令后屏幕显示的反馈回来信息的意思,如:TTL、时间等。
字节:数据包大小。
时间:响应时间,这个时间越小,说明连接这个地址的速度越快。
TTL:(Time To Live)表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。一般经过一跳,TTL值减1,由此可以猜测自己的计算机与要ping的计算机之间有几个结点。
2.2. 实作二
使用
ping/?
命令了解该命令的各种选项并实际使用。
实际使用 ping -n count
-n count
发送 count
指定的 ECHO
数据包数。默认值为 4。此例中count
是10,所以会列出十条数据。
2.3. TroubleShooting1
假设你不能 ping 通某计算机或 IP,但你确定该计算机和你之间的网络是连通的,那么可能的原因是什么?该如何处理能保证 ping 通?
网络连通说明网线以及通信过程中间的通信子网没问题,则原因可能有:
1.网络协议配置问题(eg:局域网IP冲突)
2.网卡问题
3.目的IP在防火墙里面把Ping给ban了
4.IP协议未安装
解决方案:
1.ping 127.0.0.1
,检查是否是自身网卡问题
2.在网络连接属性里面查看网络协议配置是否出错
3.ping
一下其他的IP确认是否是对方计算机的问题
2.4. TroubleShooting2
假设在秘籍中进行的网络排查中,ping 百度的 IP 即
ping 14.215.177.39
没问题,但 ping 百度的域名即ping www.baidu.com
不行,那么可能的原因是什么?如何进行验证和解决?
另外,经常有同学问到的:“能上 QQ,但不能上网” 跟这个问题的原因是相似的。
原因:
域名ping不通说明域名解析不出来。负责解析域名的,就是DNS。而能上 QQ,但不能上网是因为QQ不需要DNS解析域名,DNS出问题不会影响QQ。
解决方案:
首先清空一下DNS缓存,命令窗口ipconfig /flushdns
然后设置电脑的DNS为google的DNS 8.8.8.8
或者电信的 101.226.4.6
或者114.114.114.114
大部分是可以的 如果还是Ping不通 则可联系给域名服务的服务商,他们会给出dns服务器。
3. tracert
3.1. 实作一
要了解到某计算机如 www.baidu.com 中间经过了哪些节点(路由器)及其它状态,可使用
tracert www.baidu.com
命令,查看反馈的信息,了解节点的个数。
可通过网站 http://ip.cn 查看这些节点位于何处,是哪个公司的,大致清楚本机到百度服务器之间的路径。
10.60.255.254
(内网IP) -> 172.19.2.2
(内网IP) -> 183.64.62.161
(中国 重庆 重庆市 电信) -> 222.176.89.65
(中国 重庆 重庆市 电信) -> 222.176.9.37
(中国 重庆 重庆市 电信) -> 113.96.4.106
(中国 广东省 广州市 电信) -> 106.96.135.219.broad.fs.gd.dynamic.163data.com.cn [219.135.96.106
] (中国 广东省 广州市 电信) -> 121.14.67.146
(中国 广东省 广州市 电信) -> 14.215.177.39
(中国 广东省 广州市 电信)
3.2. 实作二
ping.pe 这个网站可以探测从全球主要的 ISP 到某站点如 https://qige.io 的线路状态,当然也包括各线路到该主机的路由情况。请使用浏览器访问 http://ping.pe/qige.io 进行了解。
3.3. 问题一
tracert 能告诉我们路径上的节点以及大致的延迟等信息,那么它背后的原理是什么?本问题可结合第二部分的 Wireshark 实验进行验证。
通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert
诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL
递减 1。数据包上的 TTL
减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert
先发送 TTL
为 1 的回应数据包,并在随后的每次发送过程将 TTL
递增 1,直到目标响应或 TTL
达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL
过期的数据包,这在 Tracert
实用程序中看不到。
3.4. 问题二
在以上两个实作中,如果你留意路径中的节点,你会发现无论是访问百度还是棋歌教学网,路径中的第一跳都是相同的,甚至你应该发现似乎前几个节点都是相同的,你的解释是什么?
因为我们都处于子网中,所以当我们访问外网时,第一步都是访问网关,然后由网关给我i们进行下一步连接,所以,访问外网的路径中的第一跳都是相同的,即所在子网的网关。
3.5. 问题三
在追踪过程中,你可能会看到路径中某些节点显示为 * 号,这是发生了什么?
因为某些路由器对于 TTL
为零的数据包没有发出“ICMP已超时”的消息,不经询问直接丢弃 TTL
过期的数据包,导致某些路径显示*号。
4. ARP
4.1. 实作一
运行
arp -a
命令查看当前的 arp 缓存, 请留意缓存了些什么。
然后ping
一下你旁边的计算机 IP(注意,需保证该计算机的 IP 没有出现在 arp 缓存中,或者使用arp -d *
先删除全部缓存),再次查看缓存,你会发现一些改变,请作出解释。
ping 192.168.0.13
arp -a
ping成功了,收到返回消息将旁边计算机的IP地址和物理地址存入本机ARP缓存中。下次请求目标主机MAC 地址时,直接查询 ARP 缓存,而无须再发送 ARP 请求,从而节约了网络资源。
4.2. 实作二
请使用
arp /?
命令了解该命令的各种选项。
4.3. 实作三
一般而言,arp 缓存里常常会有网关的缓存,并且是动态类型的。
假设当前网关的 IP 地址是192.168.0.1
,MAC 地址是5c-d9-98-f1-89-64
,请使用arp -s 192.168.0.1 5c-d9-98-f1-89-64
命令设置其为静态类型的。
- 显示网络信息,查看Idx值
netsh i i show in
- 在对应的子网中增加一个静态arp
netsh -c i i add neighbors Idx destaddr destmacaddr
4.4. TroubleShooting
你可能会在实作三的操作中得到 “ARP 项添加失败: 请求的操作需要提升” 这样的信息,表示命令没能执行成功,你该如何解决?
1.先以管理员身份运行cmder
2.输入下面命令运行
net localgroup administrators 用户名 /add
4.5. 问题
在实作三中,为何缓存中常常有网关的信息?
我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点?
缓存中常常有网关的信息是因为我们在通信时,大多数数据都从网关转出,将网关信息存储起来,方便路由时查表,方便下次使用。
arp
信息设置为静态:
优点:利于管理,并且可以免除进行验证的繁琐操作。
缺点:有安全隐患,有人可以将自己的ip伪造成你的arp列表中的某个ip地址,由于静态,不会进行验证,会造成消息泄露等安全隐患。
5. DHCP
5.1. 实作一
一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。使用
ipconfig/release
命令释放自动获取的网络配置,并用ipconfig/renew
命令重新获取,了解 DHCP 工作过程和原理。
ipconfig/release
ipconfig/renew
工作原理:
1、客户端发广播寻找DHCP服务器
2、DHCP服务器回复客户端并分配ip地址
3、客户端选择并请求地址租用
4、DHCP服务器确认分配并向客户端发送ACK确认信息
5.2. TroubleShooting
如果你没能成功的释放,请思考有哪些可能的原因并着手进行解决?
可能没有开启DHCP客户端服务。
解决办法:在 “ win+R ” 然后输入 sc config DHCP start= AUTO
后重启。
5.3. 问题
在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为
169.254.x.x
这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?
169.25.x.x
地址段属于私有保留地址,这是系统在DHCP信息租用失败时自动分配给客户机的IP地址。该IP地址只是短暂性的解决计算机不能获取 DHCP 服务器的配置数据的问题,并不能真正接入Internet。Winodws系统采用这种方案可以使局域网内的电脑就可以通过这个IP来相互通讯,也防止ip冲突。
5.4. 秘籍
在我校不少地方如教室,计算机都采用了 DHCP 来获得网络配置。假如某天因 DHCP 服务器问题从而不能获得网络配置,那么我们可以查看隔壁教室计算机的配置信息来手动进行网络配置,从而使该计算机能够接入 Internet。
经常的,在一个固定地方的网络配置我都喜欢采用 静态/手动配置,而不是动态 DHCP 来进行。你能想到是什么原因吗?
动态DHCP获取需要一定的时间搜索可用的ip,如果DHCP服务器有问题,将搜索整个网段。并且相较来说静态配置的ip更稳定。
6. netstat
6.1. 实作一
Windows 系统将一些常用的端口与服务记录在
C:\WINDOWS\system32\drivers\etc\services
文件中,请查看该文件了解常用的端口号分配。
常用端口:
20/21:FTP
80:HTTP
3306:MySQL
6.2. 实作二
使用
netstat -an
命令,查看计算机当前的网络连接状况。更多的 netstat 命令选项,可参考上面链接 4 和 5 。
7. DNS
7.1. 实作一
Windows 系统将一些固定的/静态的 DNS 信息记录在
C:\WINDOWS\system32\drivers\etc\hosts
文件中,如我们常用的 localhost 就对应127.0.0.1
。请查看该文件看看有什么记录在该文件中。
7.2. 实作二
解析过的 DNS 记录将会被缓存,以利于加快解析速度。请使用
ipconfig /displaydns
命令查看。我们也可以使用ipconfig /flushdns
命令来清除所有的 DNS 缓存。
7.3. 实作三
使用
nslookup qige.io
命令,将使用默认的 DNS 服务器查询该域名。当然你也可以指定使用 CloudFlare(1.1.1.1
)或 Google(8.8.8.8
) 的全球 DNS 服务器来解析,如:nslookup qige.io 8.8.8.8
,当然,由于你懂的原因,这不一定会得到正确的答案。
7.4. TroubleShooting
上面秘籍中我们提到了使用插件或自己修改 hosts 文件来屏蔽广告,思考一下这种方式为何能过滤广告?如果某些广告拦截失效,那么是什么原因?你应该怎样进行分析从而能够成功屏蔽它?
插件屏蔽广告方式原理是阻止广告URL链接的请求。
hosts文件可以将已知的广告服务器重定向到无广告的地址,同时也可以通过不下载网络广告来屏蔽广告。
如果某些广告拦截失效,可能是因为hosts文件被修改,也可能是广告内容是嵌入到网页中的。
我们可以通过修改hosts文件,使某个网站重定向到一个地址,使之无法访问达到屏蔽广告的效果。
8. cache
8.1. 实作一
打开 Chrome 或 Firefox 浏览器,访问 https://qige.io ,接下来敲
F12
键 或Ctrl + Shift + I
组合键打开开发者工具,选择 Network 面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。请进一步查看哪些文件被 cache了,哪些没有。
第一次打开:
F5刷新:
8.2. 实作二
接下来仍在 Network 面板,选择
Disable cache
选项框,表明当前不使用 cache,页面数据全部来自于 Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。你可比对与有 cache 时的加载速度差异。
禁用缓存后,加载完成时间从533毫秒变为1.08秒。