计算机网络验证性实验

计算机网络验证性实验

ipconfig

ipconfig 是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它的主要用来显示当前网络连接的配置信息(/all 参数)。

???? 参考

  1. https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/ipconfig
  2. https://www.itread01.com/articles/1475880029.html
  3. https://zh.wikipedia.org/wiki/Ipconfig

实作一

使用 ipconfig/all 查看自己计算机的网络配置,尽可能明白每行的意思,特别注意 IP 地址、子网掩码 Subnet Mask、网关 Gateway

使用 ipconfig/all 查看旁边计算机的网络配置,看看有什么异同。
计算机网络验证性实验
计算机网络验证性实验
计算机网络验证性实验
你的计算机和旁边的计算机是否处于同一子网,为什么?

答:不处于同一子网,IP地址与子网掩码相与后不同。

ping

PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序 。ping 是工作在 TCP/IP 网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。

???? 参考

  1. https://bkso.baidu.com/item/ping/6235?fromtitle=PING命令&fromid=670278
  2. https://blog.****.net/hebbely/article/details/54965989
  3. https://sites.google.com/site/goh1933/ping-zhi-ling-gao-ji-yong-fa

实作一

要测试到某计算机如 重庆交通大学 Web 服务器的连通性,可以使用 ping www.cqjtu.edu.cn 命令,也可直接使用 IP 地址。

请掌握使用该命令后屏幕显示的反馈回来信息的意思,如:TTL、时间等。
计算机网络验证性实验
由于找不到这个网址的主机,我将请求网址换成了百度

实作二

使用 ping/? 命令了解该命令的各种选项并实际使用。
计算机网络验证性实验
假设你不能 ping 通某计算机或 IP,但你确定该计算机和你之间的网络是连通的,那么可能的原因是什么?该如何处理能保证 ping 通?

答:当你的网络出现故障不能访问某计算机如 14.215.177.39 (百度的 IP 地址之一 ) 时,我们一般可采用由近及远的连通性测试来确定问题所在。现假设你的 IP 是 192.168.1.89,你旁边计算机的 IP 是 192.168.1.64,网关的 IP 是 192.168.1.1 ,那么过程如下:
(1)ping 127.0.0.1 ,测试自己计算机的状态,如果 OK,那么说明本机网络软件硬件工作正常,否则,问题在本机,检查本机 TCP/IP 配置即网卡状态等
(2)ping 192.168.1.64 ,测试到旁边计算机的连通性,如果OK,那么说明本子网内部工作正常,否则,问题在本机网络出口到交换机之间,检查本机网卡到交换机的连线等
(3)ping 192.168.1.1,测试到网关的连通性,如果 OK,那么说明本子网出口工作正常,否则,问题在网关,这是你无能为力的事情,报告给网管
(4)ping 14.215.177.39,测试到百度的连通性,如果 OK,那就 OK,否则,问题在网关以外,这也是你无能为力的事情

tracert

TRACERT (Trace Route 的组合缩写),也称为路由追踪,该命令行程序可用于跟踪 Internet 协议 (IP) 数据包传送到目标地址时经过的路径。

???? 参考

  1. https://zh.wikipedia.org/wiki/Traceroute
  2. https://support.microsoft.com/zh-cn/help/314868/how-to-use-tracert-to-troubleshoot-tcp-ip-problems-in-windows
  3. http://www.ttlsa.com/tools/how-to-use-tracert/

实作一

要了解到某计算机如 www.baidu.com 中间经过了哪些节点(路由器)及其它状态,可使用 tracert www.baidu.com 命令,查看反馈的信息,了解节点的个数。

可通过网站 http://ip.cn 查看这些节点位于何处,是哪个公司的,大致清楚本机到百度服务器之间的路径。
计算机网络验证性实验

实作二

ping.pe 这个网站可以探测从全球主要的 ISP 到某站点如 https://qige.io 的线路状态,当然也包括各线路到该主机的路由情况。请使用浏览器访问 http://ping.pe/qige.io 进行了解。计算机网络验证性实验
计算机网络验证性实验
问题一

tracert 能告诉我们路径上的节点以及大致的延迟等信息,那么它背后的原理是什么?本问题可结合第二部分的 Wireshark 实验进行验证。

答:无论什么都是通过路由器在通过浏览器访问的

问题二

在以上两个实作中,如果你留意路径中的节点,你会发现无论是访问百度还是棋歌教学网,路径中的第一跳都是相同的,甚至你应该发现似乎前几个节点都是相同的,你的解释是什么?

答:我们是处于内网,传输数据首先要到达网关。

问题三

在追踪过程中,你可能会看到路径中某些节点显示为 * 号,这是发生了什么?

答:没有出现信息反馈。

???? 秘籍

如果你使用 Linux 系统,那么应该用过其下的 My Trace Route 即 mtr 命令。

该命令的速度比 Windows 平台下的 tracert 快多了。为此,有人也开发了 Windows下的MTR 命令,你可以试一试。其次还可以试试PingPlotter

另外,提供一个全球地图,可视化的显示追踪路径也值得你前往(因为使用了 Google 地图,需要科学上网)

  1. https://visualtraceroute.net/
  2. http://en.dnstools.ch/visual-traceroute.html
  3. https://gsuite.tools/traceroute

ARP

✍ ARP(Address Resolution Protocol)即地址解析协议,是用于根据给定网络层地址即 IP 地址,查找并得到其对应的数据链路层地址即 MAC地址的协议。 ARP 协议定义在 1982 年的 RFC 826。

???? 参考

  1. http://c.biancheng.net/view/6388.html
  2. https://zhuanlan.zhihu.com/p/28771785
  3. https://juejin.im/entry/5b85f4c6e51d451a447a7adc
  4. https://www.cnblogs.com/songwenlong/p/6103406.html

实作一

运行 arp -a 命令查看当前的 arp 缓存, 请留意缓存了些什么。计算机网络验证性实验
然后 ping 一下你旁边的计算机 IP(注意,需保证该计算机的 IP 没有出现在 arp 缓存中,或者使用 arp -d * 先删除全部缓存),再次查看缓存,你会发现一些改变,请作出解释
计算机网络验证性实验

实作二

请使用 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 命令设置其为静态类型的。计算机网络验证性实验
在实作三中,为何缓存中常常有网关的信息?
我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点?

答:因为缓存记录的就自己访问的IP和MAC地址。
静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。

DHCP

✍ DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一个用于 IP 网络的网络协议,位于 OSI 模型的应用层,使用 UDP 协议工作,主要有两个用途:

  • 用于内部网或网络服务供应商自动分配 IP 地址给用户
  • 用于内部网管理员对所有电脑作中央管理

简单的说,DHCP 可以让计算机自动获取/释放网络配置。

???? 参考

  1. https://zh.wikipedia.org/wiki/动态主机设置协议
  2. https://docs.oracle.com/cd/E24847_01/html/819-7058/dhcp-overview-3.html
  3. https://www.jianshu.com/p/a14b5446855e

实作一

一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。使用 ipconfig/release 命令释放自动获取的网络配置,并用 ipconfig/renew 命令重新获取,了解 DHCP 工作过程和原理。
计算机网络验证性实验
问题

在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?

答:自动配置的IP地址和信息只是短暂性的解决计算机不能获取 DHCP 服务器的配置数据的问题,要真正的接入Internet还是得本身计算机的正确IP地址。意义:假如某天因 DHCP 服务器问题从而不能获得网络配置,那么我们可以查看隔壁教室计算机的配置信息来手动进行网络配置,从而使该计算机能够接入 Internet。

???? 秘籍

在我校不少地方如教室,计算机都采用了 DHCP 来获得网络配置。假如某天因 DHCP 服务器问题从而不能获得网络配置,那么我们可以查看隔壁教室计算机的配置信息来手动进行网络配置,从而使该计算机能够接入 Internet。

经常的,在一个固定地方的网络配置我都喜欢采用 静态/手动配置,而不是动态 DHCP 来进行。你能想到是什么原因吗?

答:因为 DHCP 维护的地址池是有限的,那么我可以不停的发出 DHCP 请求,从而导致 DHCP 地址耗尽。然后我自己再运行一个 DHCP 服务器来提供虚假的网络信息,特别是伪造的网关和 DNS 信息。手动配置没有自动请求分配地址的时间延迟网络连接更迅速;每台机器IP固定,更便于网络管理和使用。

netstat

✍ 无论是使用 TCP 还是 UDP,任何一个网络服务都与特定的端口(Port Number)关联在一起。因此,每个端口都对应于某个通信协议/服务。

netstat(Network Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。

???? 参考

  1. https://zh.wikipedia.org/zh-cn/通訊埠
  2. https://zh.wikipedia.org/wiki/TCP/UDP端口列表
  3. https://cnbin.github.io/blog/2015/08/22/wang-luo-chang-yong-duan-kou-hao-da-quan/
  4. https://www.jianshu.com/p/b866f3f6e46e
  5. https://blog.****.net/weixin_39800144/article/details/80929947

实作一

Windows 系统将一些常用的端口与服务记录在 C:\WINDOWS\system32\drivers\etc\services 文件中,请查看该文件了解常用的端口号分配。计算机网络验证性实验

实作二

使用 netstat -an 命令,查看计算机当前的网络连接状况。更多的 netstat 命令选项,可参考上面链接 45
计算机网络验证性实验
???? 秘籍

打开的计算机端口,就是向 Internet 打开的一个通道。通过 netstat 命令,我们可以了解当前计算机哪些端口是打开的,从而找出一些恶意后台程序,分析其所作所为,并且可以进一步将相关端口关闭,降低安全风险。

DNS

✍ DNS(Domain Name System)即域名系统,是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 的 53 号端口。

???? 参考

  1. https://zh.wikipedia.org/wiki/域名系统
  2. https://www.cnblogs.com/crazylqy/p/7110357.html
  3. https://juejin.im/post/5b0a32a36fb9a07ab979f0b4
  4. https://blog.****.net/violet_echo_0908/article/details/52033725
  5. https://www.cnblogs.com/machangwei-8/p/10353137.html

实作一

Windows 系统将一些固定的/静态的 DNS 信息记录在 C:\WINDOWS\system32\drivers\etc\hosts 文件中,如我们常用的 localhost 就对应 127.0.0.1 。请查看该文件看看有什么记录在该文件中。
计算机网络验证性实验

实作二

解析过的 DNS 记录将会被缓存,以利于加快解析速度。请使用 ipconfig /displaydns 命令查看。我们也可以使用 ipconfig /flushdns 命令来清除所有的 DNS 缓存。
计算机网络验证性实验
计算机网络验证性实验

实作三

使用 nslookup qige.io 命令,将使用默认的 DNS 服务器查询该域名。当然你也可以指定使用 CloudFlare1.1.1.1)或 Google8.8.8.8) 的全球 DNS 服务器来解析,如:`nslookup qige.io 8.8.8.8,当然,由于你懂的原因,这不一定会得到正确的答案。计算机网络验证性实验

cache

✍ cache 即缓存,是 IT 领域一个重要的技术。我们此处提到的 cache 主要是浏览器缓存。

浏览器缓存是根据 HTTP 报文的缓存标识进行的,是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。

???? 参考

  1. https://www.jianshu.com/p/54cc04190252
  2. https://zhuanlan.zhihu.com/p/60950750
  3. https://juejin.im/entry/5ad86c16f265da505a77dca4

实作一

打开 Chrome 或 Firefox 浏览器,访问 https://qige.io ,接下来敲 F12 键 或 Ctrl + Shift + I 组合键打开开发者工具,选择 Network 面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。请进一步查看哪些文件被 cache了,哪些没有。计算机网络验证性实验
计算机网络验证性实验