# computer-network-experiment-i **Repository Path**: joise_vip/computer-network-experiment-i ## Basic Information - **Project Name**: computer-network-experiment-i - **Description**: 计算机网络-验证性实验 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-11 - **Last Updated**: 2021-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 计算机网络验证性实验 ## ipconfig `ipconfig` 是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它的主要用来显示当前网络连接的配置信息(`/all` 参数)。 ### 实作一 **使用 `ipconfig/all` 查看自己计算机的网络配置,尽可能明白每行的意思,特别注意 `IP` 地址、子网掩码 `Subnet Mask`、网关 `Gateway`。** - **IP地址**:指互联网协议地址。32位的二进制数。 - 公有地址 - 私有地址 - A类 10.0.0.0--10.255.255.255 第一段为网络号码,后面为本机号码 - B类 172.16.0.0--172.31.255.255 第一,二段为网络号码,后面为本机号码 - C类 192.168.0.0--192.168.255.255 第一,二,三段为网络号码,后面为本机号码 - **子网掩码** :是一个**应用于 TCP/IP 网络的 32 位二进制值**。 - 将IP地址划分为若干子网。 - 屏蔽IP地址的一部分,区分网路标识和主机标识,并表明是在局域网还是远程网。 - 通过子网掩码判断两台计算机是否在同一网段的方法:将计算机IP地址和子网掩码转换为二进制,然后进行二进制“与”(AND)计算(全1则得1,不全1则得0),如果相同的,那么这两台计算机就属于同一网段。 - **网关**(协议转换器):网关在**传输层**上以实现网络互连,是最复杂的网络互连设备,仅用于**两个高层协议不同的网络互连。** - 网关是一个翻译器,在不同的通信协议,不同系统之间进行翻译。 - **DHCP**(动态主机配置协议),前身是BOOTP协议,**是一个局域网的网络协议**。 - **DHCP 可以让计算机自动获取/释放网络配置。** - **DNS**(域名服务器)是**进行域名和与之相对应的IP地址转换的服务器**。 ![image-20210915084031170](image-20210915084031170.png) ### 实作二 **使用 `ipconfig/all` 查看旁边计算机的网络配置,看看有什么异同。** ![image-20210915085305017](image-20210915085305017.png) 你的计算机和旁边的计算机是否处于同一子网,为什么? **答**:不是处于同一子网,对于任何的计算机,把它们的IP地址与子网掩码相应位进行相与,得出的结果相同,就是属于同一子网。 ## **ping** ping,因特网包探索器,用于测试网络连接量的程序 ,**应用层**的一个服务命令,测试目的站是否可达及了解其有关状态。 ### 实作一 要测试到某计算机如 重庆交通大学 Web 服务器的连通性,可以使用 `ping www.cqjtu.edu.cn` 命令,也可直接使用 IP 地址。 ![image-20210915085615458](image-20210915085615458.png) - **TTL**:包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。 - **时间**:本机给重庆交通大学web服务器发送数据包到返回给本机的时延即传输消耗时间。 ### 实作二 使用 `ping/?` 命令了解该命令的各种选项并实际使用。 ![image-20210915090256014](image-20210915090256014.png) **ping -t** ![image-20211013082755303](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013082755303.png) **ping -a** ![image-20211013082922381](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013082922381.png) **ping -n count** ![image-20211013083032577](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013083032577.png) **ping -l size** ![image-20211013083304259](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013083304259.png) **ping -f** ![image-20211013083432741](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013083432741.png) 假设你不能 `ping` 通某计算机或 IP,但你确定该计算机和你之间的网络是连通的,那么可能的原因是什么?该如何处理能保证 `ping` 通? - 测试本机状态。 ![image-20211013084345908](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013084345908.png) 图中表明本机网络正常,否则,本机TCP/IP配置即网卡状态等出现问题。 - 测试本机到旁边计算机的连通性,如果不成功,本机网卡到交换机的连线等出现问题。 - 测试本机到本地网关的连通性。 ![image-20211013085352124](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013085352124.png) 说明本子网出口工作工作正常,否则,本地网关出现问题。 - 测试本机到www.cqjtu.edu.cn的连通性 ![image-20211013085602384](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013085602384.png) 否则,网关外出现问题。 网络排查中,`ping` 百度的 IP 即 `ping 14.215.177.39` 没问题,但 `ping` 百度的域名即 `ping www.baidu.com` 不行,那么可能的原因是什么?如何进行验证和解决? **答:**域名解析失败问题 - 清空DNS缓存:命令窗口ipconfig - 设置本机的DNS为电信的 101.226.4.6 - 再ping一次 - 如果还是Ping不通 联系给域名服务的服务商 ## tracert `TRACERT` (Trace Route 的组合缩写),也称为路由追踪,该命令行程序可用于跟踪 Internet 协议 (IP) 数据包传送到目标地址时经过的路径。 ### 实作一 要了解到某计算机如 [www.baidu.com](http://www.cqjtu.edu.cn/) 中间经过了哪些节点(路由器)及其它状态,可使用 `tracert www.baidu.com` 命令,查看反馈的信息,了解节点的个数。 ![image-20210915092005179](image-20210915092005179.png) 可通过网站 [http://ip.cn](http://ip.cn/) 查看这些节点位于何处,是哪个公司的,大致清楚本机到百度服务器之间的路径。 ![image-20210915092029878](image-20210915092029878.png) ### 实作二 `ping.pe` 这个网站可以探测从全球主要的 ISP 到某站点如 [https://qige.io](https://qige.io/) 的线路状态,当然也包括各线路到该主机的路由情况。请使用浏览器访问 http://ping.pe/qige.io 进行了解。 ![image-20210915092537136](image-20210915092537136.png) **问题一** tracert 原理:tracert发出TTL值为1的ICMP数据报(包含源地址、目标地址和发出的时间标签)到达一个路由器返回给tracert数据报(包括数据报的源地址、内容和路由器的IP地址),tracert继续发送,又该路由器出发,依次类推找到目的地址。 **问题二** 前几个节点都是相同的:本机正处于资源子网中,通过离本机最近的节点,到达通信子网。由于都是通过最近的节点,所以前几个节点都是相同的。 **问题三** tracert *号:1、网络安全考虑 2、访问超时 ## ARP 地址解析协议 ### 实作一 运行 `arp -a` 命令查看当前的 arp 缓存, 请留意缓存了些什么。 然后 `ping` 一下你旁边的计算机 IP(注意,需保证该计算机的 IP 没有出现在 arp 缓存中,或者使用 `arp -d *` 先删除全部缓存),再次查看缓存,你会发现一些改变,请作出解释。 ![image-20211013094142796](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013094142796.png) 如果再次ping一个在缓存里不存在的ip,那么缓存就会多出一个动态缓存 ### 实作二 请使用 `arp /?` 命令了解该命令的各种选项。 ![image-20211013095640742](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013095640742.png) ### 实作三 一般而言,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` 命令设置其为静态类型的。 ![image-20211013100104592](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013100104592.png) **问题一** "ARP 项添加失败: 请求的操作需要提升" 这样的信息,表示命令没能执行成功,你该如何解决? **答:**以管理员身份运行cmd **问题二** 在实作三中,为何缓存中常常有网关的信息? **答:**将网关或其它计算机的arp信息设置为静态需要手动指定配置和维护,静态arp表项不会被老化,不会被动态ARP表项覆盖。 我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点? **答:**配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。 ## DHCP 动态主机配置协议,应用层。 **DHCP 可以让计算机自动获取/释放网络配置。** ### 实作一 一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。使用 `ipconfig/release` 命令释放自动获取的网络配置,并用 `ipconfig/renew` 命令重新获取,了解 DHCP 工作过程和原理。 **ipconfig/release** 断网 ![image-20211013093434955](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013093434955.png) **ipconfig/renew** 网络恢复 ![image-20211013093542261](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211013093542261.png) ## netstat `netstat`(Network Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序 ### 实作一 Windows 系统将一些常用的端口与服务记录在 `C:\WINDOWS\system32\drivers\etc\services` 文件中,请查看该文件了解常用的端口号分配。 ![image-20211024205520954](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024205520954.png) ### 实作二 使用 `netstat -an` 命令,查看计算机当前的网络连接状况。更多的 `netstat` 命令选项,可参考上面链接 `4` 和 `5` 。 **netstat -an** ![image-20211024205616127](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024205616127.png) **netstat -a** 显示所有连接 ![image-20211024205953663](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024205953663.png) **netstat -at** 显示TCP协议的连接 **netstat -au** 显示UDP协议的连接 ## DNS DNS(Domain Name System)即域名系统,是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 的 53 号端口。 ### 实作一 Windows 系统将一些固定的/静态的 DNS 信息记录在 `C:\WINDOWS\system32\drivers\etc\hosts` 文件中,如我们常用的 `localhost` 就对应 `127.0.0.1` 。请查看该文件看看有什么记录在该文件中。 ![image-20211024211459412](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024211459412.png) ### 实作二 解析过的 DNS 记录将会被缓存,以利于加快解析速度。请使用 `ipconfig /displaydns` 命令查看。我们也可以使用 `ipconfig /flushdns` 命令来清除所有的 DNS 缓存。 ![image-20211024211726115](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024211726115.png) ### 实作三 使用 `nslookup qige.io` 命令,将使用默认的 DNS 服务器查询该域名。当然你也可以指定使用 `CloudFlare`(`1.1.1.1`)或 `Google`(`8.8.8.8`) 的全球 DNS 服务器来解析,如:`nslookup qige.io 8.8.8.8,当然,由于你懂的原因,这不一定会得到正确的答案。` ![image-20211024212108734](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024212108734.png) ## cache ### 实作一 打开 Chrome 或 Firefox 浏览器,访问 https://qige.io ,接下来敲 `F12` 键 或 `Ctrl + Shift + I` 组合键打开开发者工具,选择 `Network` 面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。请进一步查看哪些文件被 cache了,哪些没有。 ![image-20211024212832290](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024212832290.png) ### 实作二 接下来仍在 `Network` 面板,选择 `Disable cache` 选项框,表明当前不使用 cache,页面数据全部来自于 Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。你可比对与有 cache 时的加载速度差异。 ​ **加载速度变慢了** ![image-20211024212853870](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024212853870.png) ![image-20211024212940492](%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E9%AA%8C%E8%AF%81%E6%80%A7%E5%AE%9E%E9%AA%8C.assets/image-20211024212940492.png)