计算机网络之验证性实验
文章目录
前言
本部分共有 8 个实验,实验 1~7 使用 Cmder 在命令行窗口完成,实验 8 使用浏览器完成。
一、ipconfig
ipconfig 是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它的主要用来显示当前网络连接的配置信息(/all 参数)。
1.1 实作一
使用 ipconfig/all 查看自己计算机的网络配置。尽可能明白每行的意思,特别注意 IP 地址、子网掩码 Subnet Mask、网关 Gateway。
- ip地址:
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 - 子网掩码 Subnet Mask:
子网掩码 (subnet mask)又叫 网络掩码 、 地址掩码 、子网络遮罩,它用来指明一个IP地址的哪些位标识的是 “主机” 所在的子网,以及哪些位标识的是主机的位掩码。 子网掩码不能单独存在,它必须结合IP地址一起使用。 - 网关 Gateway:
网关 (Gateway)又称 网间连接器 、 协议转换 器。 网关在“网络层”以上实现网络互连 ,是复杂的网络互连设备,仅用于两个高层协议不同的 网络互连 。 网关既可以用于 “广域网” 互连,也可以用于“ 局域网”互连。
1.2 实作二
使用 ipconfig/all 查看旁边计算机的网络配置,看看有什么异同。
1.3 问题
你的计算机和旁边的计算机是否处于同一子网,为什么?
都处于同一子网,因为都属于C类IP,网络号(192.168.73)相同只是主机号不同
二、ping
ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。
2.1 实作一
要测试到某计算机如 “重庆交通大学” Web 服务器的连通性,可以使用 ping www.cqjtu.edu.cn 命令,也可直接使用 IP 地址。请掌握使用该命令后屏幕显示的反馈回来信息的意思,如:TTL、时间等。
ping www.cqjtu.edu.cn
返回了4个具有32字节的数据,,数据包往返行程时间最短39ms,最长44ms,平均42ms。
2.2 实作二
使用 ping/? 命令了解该命令的各种选项并实际使用。
ping/?
-t :Ping 指定的计算机直到中断。 | |
– | |
-a :将地址解析为计算机名。 | |
– | – |
-n count :发送 count 指定的 ECHO 数据包数。默认值为 4。 | |
– | – |
-l size :发送包含由 size 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是65,527。 | |
– | – |
-f :在数据包中发送"不要分段"标志。数据包就不会被路由上的网关分段。 | |
– | – |
-i ttl :将"生存时间"字段设置为 ttl 指定的值。 | |
– | – |
-v tos :将"服务类型"字段设置为 tos 指定的值。 | |
– | – |
-r count :在"记录路由"字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。 | |
– | – |
-s count :指定 count 指定的跃点数的时间戳。 | |
– | – |
-j host-list :利用 host-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。 | |
– | – |
-k host-list :利用 host-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。 | |
– | – |
-w timeout :指定超时间隔,单位为毫秒。 | |
– | – |
destination-list :指定要 ping 的远程计算机。 | |
![]() |
-
ping -t:不间断地Ping指定计算机,直到管理员中断。ping qq.com -t
这就说明电脑连接路由器是通的,网络效果很好。下面按按住键盘的Ctrl+c终止它继续ping下去,就会停止了,会总结出运行的数据包有多少,通断的有多少了。 -
ping-a解析计算机名与NetBios名。就是可以通过ping自己的ip地址,可以解析出自己的主机名“Mitchell”。
-
ping -n,在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送20个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:
ping -n 20 qq.com
我们向qq.com发送20个包,发现都没有丢失说明我们与qq之间的连接比较稳定,其中包传输最短时间为50ms,最长时间为71ms,平均时间为56ms。如果对于一些不好的网络,比如监控系统中非常卡顿,这样测试,返回的结果可能会显示出丢失出一部分,如果丢失的比较多的话,那么就说明网络不好,可以很直观的判断出网络的情况。 -
ping -l size的使用,-l size:发送size指定大小的到目标主机的数据包。
在默认的情况下Windows的ping发送的数据包大小为32byt,最大能发送65500byt。当一次发送的数据包大于或等于65500byt时,将可能导致接收方计算机宕机。我们将该命令与-t命令结合,形成DOS攻击qq ping -l 65500 -t qq.com
-
ping -r count的使用,在“记录路由”字段中记录传出和返回数据包的路由,探测经过的
路由个数,但最多只能跟踪到9个路由。我们使用命令"ping -r 9 192.168.43.1”记录九个路由
问题 | |
假设在秘籍中进行的网络排查中,ping 百度的 IP 即 ping 14.215.177.39 没问题,但 ping 百度的域名即 ping www.baidu.com 不行,那么可能的原因是什么?如何进行验证和解决? |
原因:
ping不通的原因可能是DNS出错,因为域名都由DNS进行解析成IP后,再通过IP发送数据。
解决:
设置电脑的DNS为8.8.8.8,如果不行则有可能是当地DNS服务器故障
三、tracert
TRACERT (Trace Route 的组合缩写),也称为路由追踪,该命令行程序可用于跟踪 Internet 协议 (IP) 数据包传送到目标地址时经过的路径。
3.1 实作一
要了解到某计算机如 www.baidu.com 中间经过了哪些节点(路由器)及其它状态,可使用 tracert www.baidu.com 命令,查看反馈的信息,了解节点的个数。
可通过网站 http://ip.cn 查看这些节点位于何处,是哪个公司的,大致清楚本机到百度服务器之间的路径。
**tracert www. baidu.com **
大概通过13个节点到达目的IP,在过程中发现有的ip请求超时,原因如下:
1、那一跳禁PING
2、那一跳不对TTL超时做响应处理,直接丢弃
节点IP | 物理位置 |
---|---|
221.5.211.237 | 中国 重庆 重庆市 联通 |
221.5.251.89 | 中国 重庆 重庆市 联通 |
219.158.106.253 | 中国 北京 北京市 联通 |
219.158.104.98 | 中国 联通 |
153.3.228.174 | 中国 江苏省 南京市 联通 |
153.37.96.158 | 中国 江苏省 南京市 联通 |
112.80.248.76 | 中国 江苏省 南京市 联通 |
3.1 实作二
ping.pe 这个网站可以探测从全球主要的 ISP 到某站点如www.qq.com 的线路状态,当然也包括各线路到该主机的路由情况。请使用浏览器访问 http://ping.pe/qq.com进行了解。
![在这里插入图片描述](https://img-blog.csdnimg.cn/387af45ee1104fcd9d43906cdd171c9a.png
问题一
tracert 能告诉我们路径上的节点以及大致的延迟等信息,那么它背后的原理是什么?
答
tracert背后的原理就是基于IP包中的TTL,TTL表示该字段指定IP包被路由器丢弃之前允许通过的最大网段数量,即每经过一个路由器,则把该TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包,并向IP包的发送者发送ICMP time exceeded消息。
问题二
在以上两个实作中,如果你留意路径中的节点,你会发现无论是访问百度还是棋歌教学网,路径中的第一跳都是相同的,甚至你应该发现似乎前几个节点都是相同的,你的解释是什么?
答
第一跳是计算机所在的子网的出口路由器的接口地址,所有出口流量都会经过这个接口,所以节点地址相同。前几跳相同表明该子网出口流量必经过前几跳ip代表的路由器。
问题三
在追踪过程中,你可能会看到路径中某些节点显示为 * 号,这是发生了什么?
答
诊断工具tracert通过向目标发送具有变化的“生存时间 (TTL)”值的“ICMP 回响请求”消息来确定到达目标的路径。要求路径上的每个路由器在转发数据包之前至少将 IP 数据包中的 TTL 递减 1。这样,TTL 就成为最大链路计数器。数据包上的 TTL 到达 0 时,路由器应该将“ICMP 已超时”的消息发送回源计算机。Tracert 发送 TTL 为 1 的第一条“回响请求”消息,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或跃点达到最大值,从而确定路径。默认情况下跃点的最大数量是 30,可使用 -h 参数指定。检查中间路由器返回的“ICMP 超时”消息与目标返回的“回显答复”消息可确定路径。但是,某些路由器不会为其 TTL 值已过期的数据包返回“已超时”消息,而且这些路由器对于 tracert 命令不可见。在这种情况下,将为该跃点显示一行星号 (*)
tracert的时候出现*号的行列说明有路由器(也许是出于安全考虑,也许是网络问题)没有回应。所以出现**号
四、ARP
ARP(Address Resolution Protocol)即地址解析协议,是用于根据给定网络层地址即 IP 地址,查找并得到其对应的数据链路层地址即 MAC地址的协议。 ARP 协议定义在 1982 年的 RFC 826。
4.1、实作一
- 运行 arp -a 命令查看当前的 arp 缓存, 请留意缓存了些什么。
可以看到当前的arp已经对部分ip地址有缓存,包括本机的全局广播(192.168.43.255)和网关(192.168.43.1)等。
2. 然后 ping 一下你旁边的计算机 IP(注意,需保证该计算机的 IP 没有出现在 arp 缓存中,或者使用 arp -d * 先删除全部缓存),再次查看缓存,你会发现一些改变,请作出解释。
在我们使用ping命令去访问一个IP地址时,首先我们会查看缓存中是否具有该IP的MAC地址,只有知道了MAC地址我们的请求才能通过数据链路层正确发送出去,如果没有,将立即调用arp协议,发送arp包出去,在局域网内进行广播,询问谁是目的IP,然后根据回应自动存储相应地址到本地缓存。
提醒:
要想使用删除缓存操作“arp -d *” 必须提高操作权限,使用管理员模式去操作。
4.2、实作二
请使用 arp /? 命令了解该命令的各种选项。
命令 | 说明 |
---|---|
-a | 用于查看高速缓存中的所有项目 |
-a IP | 如果有多个网卡,那么使用arp -a加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目。 |
-g | Arp -a和arp –g命令的输出结果是一样的,用于查看高速缓存中的所有项目。 |
-v | -v选项只能和arp –a一起使用,在详细模式下显示当前arp项。所有无效项和环回接口上的项都将显示。 |
-s | 添加主机并且将 Internet 地址 internet_address 与物理地址 ethernet_address 相关联。物理地址是用连字符分隔的 6 个十六进制字节。该项是永久的。 |
-d | 删除 internet_address 指定的主机。inet_addr 可以是通配符 *,以删除所有主机。 |
4.3、实作三
一般而言,arp 缓存里常常会有网关的缓存,并且是动态类型的。
当前网关的 IP 地址是 192.168.43.1,MAC 地址是 a2-6c-e2-4a-7b-a1,使用** arp -s 192.168.43.1 a2-6c-e2-4a-7b-a1**命令设置其为静态类型的。
查询资料可知:在win7及以上arp用来查mac,修改指定IP地址的需要使用netsh命令。
arp -a命令发现0x11=17,代表本机网卡接口Idx为17
使用netsh -c “i i” add neighbors 17 192.168.43.1 a2-6c-e2-4a-7b-a1命令,成功修改网关ip(192.168.43.1)为静态
使用netsh -c “i i” delete neighbors 17 192.168.43.1 a2-6c-e2-4a-7b-a1命令,成功还原网关ip(192.168.43.1)为动态
问题一:
你可能会在实作三的操作中得到 “ARP 项添加失败: 请求的操作需要提升” 这样的信息,表示命令没能执行成功,你该如何解决?
答:使用管理员模式去运行cmder
问题二:
在实作三中,为何缓存中常常有网关的信息?
答:缓存中常有网关信息是因为缓存本身记录了用户访问过的pc网卡mac物理地址。我们将网关或其他计算机的arp信息。
问题三:
缓存中常有网关信息是因为缓存本身记录了用户访问过的pc网卡mac物理地址。我们将网关或其他计算机的arp信息
答:
设置为静态的优点有:便于以固定的IP地址或IP地址分组产生的流量为依据管理,可以避免用户忘记密码而进行的繁琐事务流程;缺点有:合法用户分配的地址可能被非法盗用,不仅对网络的正常使用造成影响,同时由于被盗用的地址往往具有较高的权限,因而也容易给合法用户造成损失和潜在的安全隐患。
五、DHCP
DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一个用于 IP 网络的网络协议,位于 OSI 模型的应用层,使用 UDP 协议工作,主要有两个用途:
- 用于内部网或网络服务供应商自动分配 IP 地址给用户
- 用于内部网管理员对所有电脑作中央管理
简单的说,DHCP 可以让计算机自动获取/释放网络配置。
5.1 、实作一
一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。使用 ipconfig/release 命令释放自动获取的网络配置,并用 ipconfig/renew 命令重新获取,了解 DHCP 工作过程和原理。
ipconfig/release
使用过后发现网络已断开连接,接下来使用重置命令
ipconfig/renew
问题一:
如果你没能成功的释放,请思考有哪些可能的原因并着手进行解决?
答:
可能是软件问题:没有开启DHCP客户端服务;解决方法:在 “ 运行 ” 中输入 “ sc config DHCP start= AUTO ” 重启后就OK 了
问题二:
在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?
答:
因为自动配置的IP地址和信息只是短暂性的解决计算机不能获取 DHCP 服务器的配置数据的问题,要真正的接入Internet还是得本身计算机的正确IP地址。意义是:假如某天因DHCP服务器问题从而不能获得网络配置,那么我们可以查看隔壁教室计算机的配置信息来手动进行网络配置,从而使该计算机能够接入Internet。
**在我校不少地方如教室,计算机都采用了 DHCP 来获得网络配置。假如某天因 DHCP 服务器问题从而不能获得网络配置,那么我们可以查看隔壁教室计算机的配置信息来手动进行网络配置,从而使该计算机能够接入 Internet。
经常的,在一个固定地方的网络配置我都喜欢采用 静态/手动配置,而不是动态 DHCP 来进行。你能想到是什么原因吗?
可以避免任何IP地址冲突。 这比动态IP地址更准确的地理位置,而且下载和上传速度通常比动态IP快。
六、netstat
6.1 实作一
Windows 系统将一些常用的端口与服务记录在C:\WINDOWS\system32\drivers\etc\services 文件中,请查看该文件了解常用的端口号分配。
常用端口 | 服务 |
---|---|
21/tcp | FTP 文件传输协议 |
22/tcp | SSH 安全登录、文件传送(SCP)和端口重定向 |
23/tcp | Telnet 不安全的文本传送 |
25/tcp mail | SMTP Simple Mail Transfer Protocol (E-mail) |
80/tcp www www-http | HTTP 超文本传送协议 (WWW) |
443/udp MCom或者443/tcp MCom | HTTPS used for securely transferring web pages |
6.2、实作二
使用 netstat -an 命令,查看计算机当前的网络连接状况。更多的 netstat 命令选项,自行查阅。
“-a"选项意在显示所有连接,当不附加”-n"选项时,它显示的是本地计算机的netbios名字+端口号。而加了"-n"选项后,它显示的是本地IP地址+端口号。
七、DNS
DNS(Domain Name System)即域名系统,是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 的 53 号端口。
7.1、实作一
Windows 系统将一些固定的/静态的 DNS 信息在C:\WINDOWS\system32\drivers\etc\hosts 文件中,如我们常用的 localhost 就对应 127.0.0.1 。请查看该文件看看有什么记录在该文件中。
可以看到我们可以使用本地映射,来访问一些被DNS污染的网址。比如github.com、github.io等网址。
7.2、实作二
解析过的 DNS 记录将会被缓存,以利于加快解析速度。请使用 ipconfig /displaydns 命令查看。我们也可以使用 ipconfig /flushdns 命令来清除所有的 DNS 缓存。
ipconfig /displaydns
ipconfig /flushdns
ipconfig /displaydns 再次查看DNS缓存,发现原已经写入hosts文件的记录还在
7.3、实作三
使用 nslookup qige.io 命令,将使用默认的 DNS 服务器查询该域名。当然你也可以指定使用 CloudFlare(1.1.1.1)或 Google(8.8.8.8) 的全球 DNS 服务器来解析,如:nslookup qige.io 8.8.8.8,当然,由于你懂的原因,这不一定会得到正确的答案。
-
nslookup qige.io
-
nslookup qige.io 8.8.8.8
如何拦截广告
- 可以通过安装浏览器插件如 AdGuard、AdBlocker 等来拦截和过滤。
- 可以通过自己修改hosts来过滤广告,基础原理其实就是在文件中添加该广告链接,并且指定一个ip地址(通常为本机地址),因为hosts文件优先级是高于DNS服务器,这样浏览器解析该广告链接时,优先hosts文件,这样我们就相当于更改了该链接本来的ip地址,从而使该链接失效。
八、cache
cache 即缓存,是 IT 领域一个重要的技术。我们此处提到的 cache 主要是浏览器缓存。
浏览器缓存是根据 HTTP 报文的缓存标识进行的,是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。
8.1 实作一
打开 edge 浏览器,访问 https://qige.io ,接下来右键检查代码打开开发者工具,选择 网络面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。请进一步查看哪些文件被 cache了,哪些没有。
请求加载时间:
缓存区,可以发现图片(png)基本没有被缓存,而初始页面被缓存。
8.2 、实作二
接下来仍在 网络面板,选择禁用缓存选项框,表明当前不使用 cache,页面数据全部来自于 Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。你可比对与有 cache 时的加载速度差异。
禁用缓存后,从大小可以看出全部内容都从网络请求,较慢。
综上,我们应该选择性地清理缓存cache,一些常用的网址尽量不要删除cahce避免之后进入重新加载资源,提高访问速度。