计算机网络验证性试验
一.实验目的
此次实验是为了熟悉Windows的各种命令的使用方法,并且初步了解掌握一些计算机里的特定参数。
二.实验器材
笔记本电脑
三.实验内容
3.1)ipconfig
简介
ipconfig 是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它的主要用来显示当前网络连接的配置信息(/all 参数)。
实作一
1)使用 ipconfig/all 查看自己计算机的网络配置,尽可能明白每行的意思,特别注意 IP 地址、子网掩码 Subnet Mask、网关 Gateway。
2)我们可以看到IP 地址、子网掩码 Subnet Mask、网关 Gateway
实作二
使用 ipconfig/all 查看旁边计算机的网络配置,看看有什么异同。
总结:总结·:我们可以看到,我本身的计算机的IP和我旁边的计算机的IP只有后两位不一样,而子网掩码和网关是一样的。
🌏 参考
https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/ipconfig
https://www.itread01.com/articles/1475880029.html
https://zh.wikipedia.org/wiki/Ipconfig
实作一
使用 ipconfig/all 查看自己计算机的网络配置,尽可能明白每行的意思,特别注意 IP 地址、子网掩码 Subnet Mask、网关 Gateway。
3.2)ping
ping的用法:
实作一
要测试到某计算机如 重庆交通大学 Web 服务器的连通性,可以使用 ping www.cqjtu.edu.cn 命令,也可直接使用 IP 地址。
请掌握使用该命令后屏幕显示的反馈回来信息的意思,如:TTL、时间等。
在这里我们是直接ping www.cqjtu.edu.cn
总结:
1.ping命令的TTL:这是指数据包被路由器丢弃之前所允许通过的网段数量
2.ping命令的时间:这是指得到对方回应的时间
实作二
使用 ping/? 命令了解该命令的各种选项并实际使用。
这是ping自己计算机的ip
1)试自己计算机的状态,如果 OK,那么说明本机网络软件硬件工作正常,否则,问题在本机,检查本机 TCP/IP 配置即网卡状态等
2)测试到旁边计算机的连通性,如果OK,那么说明本子网内部工作正常,否则,问题在本机网络出口到交换机之间,检查本机网卡到交换机的连线等
这是ping旁边计算机的ip
3)测试到网关的连通性,如果 OK,那么说明本子网出口工作正常,否则,问题在网关,这是你无能为力的事情,报告给网管
这是ping网关
4)试到百度的连通性,如果 OK,那就 OK,否则,问题在网关以外,这也是你无能为力的事情,报告给网管或者李彦宏?
这是ping百度的ip
总结:通过上面的实验证明我们的网络状态是良好的
3.3)tracert
tracert的用法
实作一
1)要了解到某计算机如 www.baidu.com 中间经过了哪些节点(路由器)及其它状态,可使用 tracert www.baidu.com 命令,查看反馈的信息,了解节点的个数。
追踪百度的网址
2)可通过网站 http://ip.cn 查看这些节点位于何处,是哪个公司的,大致清楚本机到百度服务器之间的路径。
这里追踪的是104.18.41.82(我们看到这是一个美国的ip,至于为什么我访问百度经过美国的ip,我也不太清楚)
实作二
ping.pe 这个网站可以探测从全球主要的 ISP 到某站点如 https://qige.io 的线路状态,当然也包括各线路到该主机的路由情况。请使用浏览器访问 http://ping.pe/qige.io 进行了解。
追踪qige.io
✎ 问题一
tracert 能告诉我们路径上的节点以及大致的延迟等信息,那么它背后的原理是什么?本问题可结合第二部分的 Wireshark 实验进行验证。
答:通过向目标发送不同IP生存时间 (TTL) 值的“Internet控制消息协议
(ICMP)”回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减
1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。 Tracert 先发送 TTL 为 1
的回应数据包,并在随后的每次发送过程将TTL递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP
已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。
✎ 问题二
在以上两个实作中,如果你留意路径中的节点,你会发现无论是访问百度还是棋歌教学网,路径中的第一跳都是相同的,甚至你应该发现似乎前几个节点都是相同的,你的解释是什么?
因为我们的路线都是从,我们本身的计算机出发,然后进过交大校园的交换机进入电信的通信子网上
✎ 问题三
在追踪过程中,你可能会看到路径中某些节点显示为 * 号,这是发生了什么?
通过我的观察和了解,我觉得可能是路由器没有返回信息给我
3.4)ARP
ARP的使用方法
实作一
运行 arp -a 命令查看当前的 arp 缓存, 请留意缓存了些什么。
然后 ping 一下你旁边的计算机 IP(注意,需保证该计算机的 IP 没有出现在 arp 缓存中,或者使用 arp -d * 先删除全部缓存),再次查看缓存,你会发现一些改变,请作出解释。
运行 arp -a 命令查看当前的 arp 缓存
然后 ping 一下我旁边的计算机 IP
解析: 假如我没有,我旁边的mac地址,然后我ping了它的ip地址的话,我的缓存里就会有它的mac地址
解析:我们抓个包试一下,当我没有对方的mac地址,我会广播谁有对方的mac地址,然后有他的mac地址的会回应我,对方的mac地址
实作二
请使用 arp /? 命令了解该命令的各种选项。
实作三
一般而言,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 命令设置其为静态类型的。
我设192.168.43.248为静态地址
我们看到这个地址已经设为静态地址
3.5)DHCP
简介:
DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一个用于 IP 网络的网络协议,位于 OSI 模型的应用层,使用 UDP 协议工作,主要有两个用途:
用于内部网或网络服务供应商自动分配 IP 地址给用户
用于内部网管理员对所有电脑作中央管理
简单的说,DHCP 可以让计算机自动获取/释放网络配置。
DHCP的用法
实作一
一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。使用 ipconfig/release 命令释放自动获取的网络配置,并用 ipconfig/renew 命令重新获取,了解 DHCP 工作过程和原理。
DHCP 协议包的组成
Xid :随机生成的一段字符串,两个数据包拥有相同的xid说明他们属于同一次会话
Ciaddr :客户端会在发送请求时将自己的ip地址放在此处
Yiaddr :服务器会将想要分配给客户端的ip地址放在此处
Siaddr :一般来说是服务器的ip地址.但是注意!根据openwrt源码给出的注释,当报文的源地址、siaddr、option>server_id字段不一致(有经过跨子网转发)时,通常认为option>srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ip (下图中wireshark抓包中也有标明siaddr为nextserver ip address)
Chaddr :客户端的mac地址
Giaddr :如果需要跨子网进行DHCP地址发放,则在此处填入经过的路由器的ip地址
Sname :服务器主域名
Options :可以自由添加的部分,用于存放客户端向服务器请求信息和服务器的应答信息
问题
在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?
1.因为会导致ip发生冲突
2.这个问题暂时不明白,后续了解清楚会解答
秘籍
在我校不少地方如教室,计算机都采用了 DHCP 来获得网络配置。假如某天因 DHCP 服务器问题从而不能获得网络配置,那么我们可以查看隔壁教室计算机的配置信息来手动进行网络配置,从而使该计算机能够接入 Internet。
经常的,在一个固定地方的网络配置我都喜欢采用 静态/手动配置,而不是动态 DHCP 来进行。你能想到是什么原因吗?
答:1、动态IP需要在连接网络时自动获取IP地址以供用户正常上网,而静态IP是ISP在装机时分配给用户的IP地址,可以直接连接上网,不需要获取IP地址。
2.静态IP是可以直接上网的IP段,该IP在ISP装机时会划分一个IP地址给你,让计算机在连接网络时不再自动获取网络地址,避免了网络连接上的困扰。
3、动态IP和静态IP对网速的影响,ISP对每个用户所提供的网速,并不是从IP地址限定的,而是从用户连接到ISP的物理线路上进行限定的。
课外浏览
DHCP也是一个没有考虑安全性的并且使用广泛的一个协议。比如,因为 DHCP 维护的地址池是有限的,那么我可以不停的发出 DHCP 请求,从而导致 DHCP 地址耗尽。然后我自己再运行一个 DHCP 服务器来提供虚假的网络信息,特别是伪造的网关和 DNS 信息。请查阅相关资料了解
3. 6)netstat
无论是使用 TCP 还是 UDP,任何一个网络服务都与特定的端口(Port Number)关联在一起。因此,每个端口都对应于某个通信协议/服务。
简介
netstat(Network Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。
用法
实作一
Windows 系统将一些常用的端口与服务记录在 C:\WINDOWS\system32\drivers\etc\services 文件中,请查看该文件了解常用的端口号分配。
我们用记事本打开可以看到很多熟悉的端口,其中80端口是我们常见的http
实作二
使用 netstat -an 命令,查看计算机当前的网络连接状况。更多的 netstat 命令选项,可参考上面链接 4 和 5 。
监测电脑网络连接也可直接用netstat(不过似乎速度极慢)
说明:
从整体上看,netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
套接口类型:
-t :TCP
-u :UDP
-aw :RAW类型
–unix :UNIX域类型
–ax25 :AX25类型
–ipx :ipx类型
–netrom :netrom类型
状态说明:
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
3.7)DNS
简介
DNS(Domain Name System)即域名系统,是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 的 53 号端口。
实作一
Windows 系统将一些固定的/静态的 DNS 信息记录在 C:\WINDOWS\system32\drivers\etc\hosts 文件中,如我们常用的 localhost 就对应 127.0.0.1 。请查看该文件看看有什么记录在该文件中。
我们用记事本打开可以看到我们的DNS服务器
实作二
解析过的 DNS 记录将会被缓存,以利于加快解析速度。请使用 ipconfig /displaydns 命令查看。我们也可以使用 ipconfig /flushdns 命令来清除所有的 DNS 缓存。
实作三
使用 nslookup qige.io 命令,将使用默认的 DNS 服务器查询该域名。当然你也可以指定使用 CloudFlare(1.1.1.1)或 Google(8.8.8.8) 的全球 DNS 服务器来解析,如:nslookup qige.io 8.8.8.8,当然,由于你懂的原因,这不一定会得到正确的答案。
1)使用 nslookup qige.io 命令,将使用默认的 DNS 服务器查询该域名。
2)nslookup qige.io 8.8.8.8(这是谷歌的服务器,答主也不是很清楚啥是非权威应答)
📬 秘籍
当我们使用浏览器上网时,或多或少的会看到一些广告。某些网站的广告是非常没有节操的,所以我们一般可以通过安装浏览器插件如 AdGuard、AdBlocker 等来拦截和过滤。
这种方法简单方便有效,不过有一定安全或隐私问题,因为该插件实时知道你访问的 URL。
假设不使用这种第三方的插件,希望自己完全控制,那么就请考虑在我们前面提到的 hosts 文件中添加 DNS 记录。有自愿者时时在维护全球正确的 DNS 记录文件
3.8)cache
简介
cache 即缓存,是 IT 领域一个重要的技术。我们此处提到的 cache 主要是浏览器缓存。
浏览器缓存是根据 HTTP 报文的缓存标识进行的,是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。
实作一
打开 Chrome 或 Firefox 浏览器,访问 https://qige.io ,接下来敲 F12 键 或 Ctrl + Shift + I 组合键打开开发者工具,选择 Network 面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。请进一步查看哪些文件被 cache了,哪些没有。
实作二
接下来仍在 Network 面板,选择 Disable cache 选项框,表明当前不使用 cache,页面数据全部来自于 Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。你可比对与有 cache 时的加载速度差异。
总结:cache缓存一些我们网页加载的文件,这有利于我们加载网页。
📬 秘籍
你的计算机可能还在使用 XX 管家,XX 卫士之类的垃圾软件,那么它可能就会在某些时候提示你计算机的垃圾文件有多少多少,请清理(其实是它本身应该被清理!)之类的弹窗。如果你查看一下它判断的所谓垃圾文件,你会发现大多都是浏览器的缓存,而你已经明白了这些缓存文件的作用。所以,清理吗?
四.实验总结
通过这次实验,我对计算机网络有了更加深刻的了解,希望在以后的学习生活中,将这些了解升华进应用中,其实通过这次实验,我在了解了计算机网络的一些常用命令的同时,也对我们计算机网络的各个层的一些协议有了一定的了解,然后也知道了端口和DNS服务器的一些知识,相信这些都有利于我日后对计算机网络的更深一步的了解。