计算机网络实验

验证性实验

ipconfig

在本机上使用如下命令:

ipconfig/all

得到以下参数:
在这里插入图片描述
IP地址为:172.29.0.1,子网掩码为255.255.240.0,但是网关地址未显示。
查看傍边的电脑可以得到以下参数,如下图:
在这里插入图片描述
可以看到IP地址为:192.168.0.102,子网掩码为255.255.255.0,网关地址为192.168.0.1。
问题:你的计算机和旁边的计算机是否处于同一子网,为什么?
很显然不处于同一子网。因为ip地址不一样,子网掩码也不一样。

ping

可以使用以下命令来测试计算机到重庆交通大学 Web 服务器的连通性(ip地址)

ping www.cqjtu.edu.cn

得到以下参数;
在这里插入图片描述
TTL是一个IP数据包的字段,它表示数据包在网络中传播的最大跳数。返回的时间包含了发送单播数据包到目标主机的时间,接收从目标主机发回的数据包的时间,从发送数据包到接收到数据包的时间。
以下是使用如下命令得到的信息。

ping/?

在这里插入图片描述

tracert

要了解到某计算机和 www.baidu.com 中间经过了哪些节点及其它状态,可使用

tracert www.baidu.com

命令,查看反馈的信息,了解节点的个数。
在这里插入图片描述
显示经过了12个节点。
可通过网站http://ip.cn查看

在这里插入图片描述
探测路线状态;
在这里插入图片描述
问题一

tracert 能告诉我们路径上的节点以及大致的延迟等信息,那么它背后的原理是什么?本问题可结合第二部分的 Wireshark 实验进行验证。
Tracert原理是通过发送一系列的ICMP回显请求(也称为“ping”)来检测网络路由,并跟踪每个跳跃的时间和延迟。每个请求的回复都会被记录,以便可以跟踪数据包从源到目的地的路径。每个节点都会返回一个ICMP回显应答,这些应答会显示出每个节点的IP地址和延迟。

arp

运行

arp -a

命令查看当前的 arp 缓存
在这里插入图片描述
使用

arp /?

命令了解该命令的各种选项。
在这里插入图片描述
arp 缓存里常常会有网关的缓存,并且是动态类型的。使用

arp -s 192.168.0.1 5c-d9-98-f1-89-64

命令设置其为静态类型
但是出现了添加失败。如下图在这里插入图片描述
这是因为ARP项添加操作需要管理员权限,普通用户无法操作。因此,您需要使用管理员帐户或者使用管理员权限提升,才能够成功添加ARP项。
在这里插入图片描述
可以发现192.168.0.1的网关已经变为静态类型。
问题:在实作三中,为何缓存中常常有网关的信息?我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点?
因为网关是一种网络设备,它负责在网络中传输数据包,从而将不同网络之间连接起来。当网关发送数据包时,它会将它们缓存起来,以便更快地将数据包发送到其他网络中。
优点:
静态ARP信息可以提高网络的性能,因为当设备发送ARP请求时,不需要等待ARP应答,而是直接使用静态ARP信息。
缺点:
静态ARP信息配置麻烦,需要用户手动配置,而且当网络中的设备发生变化时,需要重新配置静态ARP信息。

DHCP

我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。使用

ipconfig/release

命令释放自动获取的网络配置,并用

ipconfig/renew

命令重新获取。
在这里插入图片描述
在这里插入图片描述

netstat

了解常用的端口号分配

C:\WINDOWS\system32\drivers\etc\services

在这里插入图片描述
使用

netstat -an

命令,查看计算机当前的网络连接状况。
在这里插入图片描述

DNS

Windows 系统将一些固定的/静态的 DNS 信息记录在

C:\WINDOWS\system32\drivers\etc\hosts

文件中,如我们常用的 localhost 就对应 127.0.0.1 。
使用

ipconfig /displaydns

命令查看缓存的 DNS 记录。

ipconfig /flushdns

命令来清除所有的 DNS 缓存。
在这里插入图片描述
使用

nslookup qige.io

命令,将使用默认的 DNS 服务器查询该域名。
在这里插入图片描述

cache

打开 Chrome 或 Firefox 浏览器,访问

https://qige.io

,接下来敲 F12 键 或 Ctrl + Shift + I 组合键打开开发者工具,选择 Network 面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。
在这里插入图片描述
可见右侧目录文件被cache;
接下来仍在 Network 面板,选择 Disable cache 选项框,表明当前不使用 cache,页面数据全部来自于 Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。
在这里插入图片描述
cache与否时间的对比上差异很大,cache的时间为4min左右,未cache为2.3s。

wireshark实验

熟悉 Ethernet 帧结构

使用 Wireshark 任意进行抓包,熟悉 Ethernet 帧的结构。
在这里插入图片描述
问题

你会发现 Wireshark 展现给我们的帧中没有校验字段,请了解一下原因。
Wireshark不会显示帧中的校验字段,因为它不是一个显式的字段,而是由网络层协议添加的隐式字段,它不会显示在帧中。

了解子网内/外通信时的 MAC 地址

然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
地址是主机的。
再次 ping www.cqjtu.edu.cn (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址又是多少?这个 MAC 地址又是谁的?
在这里插入图片描述
在这里插入图片描述
MAC是本机所在子网网关的MAC地址。
问题
通过以上的实验,你会发现:
访问本子网的计算机时,目的 MAC 就是该主机的
访问非本子网的计算机时,目的 MAC 是网关的
请问原因是什么?
在访问本子网以外的网络时,是通过MAC地址将网关送到网关处,再通过IP地址将网关送出,然后再进行查找;

熟悉 IP 包结构

问题
为提高效率,我们应该让 IP 的头部尽可能的精简。但在如此珍贵的 IP 头部你会发现既有头部长度字段,也有总长度字段。请问为什么?
IP 头部长度字段用于指示数据包的 IP 头部的长度,而总长度字段用于指示数据包的总长度,包括 IP 头部和数据部分。这样,接收方可以根据 IP 头部长度字段确定 IP 头部的位置,从而解析 IP 头部中的信息,并从总长度字段获取数据部分的长度。

IP 包的分段与重组

根据规定,一个 IP 包最大可以有 64K 字节。但由于 Ethernet 帧的限制,当 IP 包的数据超过 1500 字节时就会被发送方的数据链路层分段,然后在接收方的网络层重组。

缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用

ping 202.202.240.16 -l 2000

命令指定要发送的数据长度。此时使用 Wireshark 抓包(用 ip.addr == 202.202.240.16 进行过滤),了解 IP 包如何进行分段,如:分段标志、偏移量以及每个包的大小等
在这里插入图片描述
在这里插入图片描述
问题

分段与重组是一个耗费资源的操作,特别是当分段由传送路径上的节点即路由器来完成的时候,所以 IPv6 已经不允许分段了。那么 IPv6 中,如果路由器遇到了一个大数据包该怎么办?
通知发送端重传前直接丢弃。因为在IPv6中分段只能执行源和目的地,路由器上无法执行。因此,当数据包过大时,路由器会将数据包直接丢弃,并将一个“太大分组”的ICMP错误报文发回发送端,之后再由长度较小的IP数据报在发送端重新发送数据。

考察 TTL 事件

在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。

在验证性实验部分我们使用了 tracert 命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。

请使用 tracert www.baidu.com 命令进行追踪,此时使用 Wireshark 抓包(用 icmp 过滤),分析每个发送包的 TTL 是如何进行改变的,从而理解路由追踪原理。
在这里插入图片描述

问题
在 IPv4 中,TTL 虽然定义为生命期即 Time To Live,但现实中我们都以跳数/节点数进行设置。如果你收到一个包,其 TTL 的值为 50,那么可以推断这个包从源点到你之间有多少跳?
当TTL=128时,128-50=78;
有78跳;

熟悉 TCP 和 UDP 段结构

用 Wireshark 任意抓包(可用 tcp 过滤),熟悉 TCP 段的结构,如:源端口、目的端口、序列号、确认号、各种标志位等字段。
用 Wireshark 任意抓包(可用 udp 过滤),熟悉 UDP 段的结构,如:源端口、目的端口、长度等。
tcp抓包:
在这里插入图片描述
udp抓包:
在这里插入图片描述
源端口号和目的端口号实现端到端的进程通信。
问题由上大家可以看到 UDP 的头部比 TCP 简单得多,但两者都有源和目的端口号。请问源和目的端口号用来干什么?

分析 TCP 建立和释放连接

打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用 tcp 过滤后再使用加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间使得能够捕获释放连接的包。
在这里插入图片描述

请在你捕获的包中找到三次握手建立连接的包,并说明为何它们是用于建立连接的,有什么特征。
请在你捕获的包中找到四次挥手释放连接的包,并说明为何它们是用于释放连接的,有什么特征。
问题一
去掉 Follow TCP Stream,即不跟踪一个 TCP 流,你可能会看到访问 qige.io 时我们建立的连接有多个。请思考为什么会有多个连接?作用是什么?
因为这是短连接,用户访问量大不让它长时间占用资源。
问题二
我们上面提到了释放连接需要四次挥手,有时你可能会抓到只有三次挥手。原因是什么?
第二次和第三次可以结合在一起。算作一次数据交换。

了解 DNS 解析

先使用 ipconfig /flushdns 命令清除缓存,再使用

nslookup qige.io

命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。
你应该可以看到当前计算机使用 UDP,向默认的 DNS 服务器的 53 号端口发出了查询请求,而 DNS 服务器的 53 号端口返回了结果。
可了解一下 DNS 查询和应答的相关字段的含义。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
QR:查询/应答标志。0表示这是一个查询报文,1表示这是一个应答报文opcode,定义查询和应答的类型。0表示标准查询,1表示反向查询(由IP地址获得主机域名),2表示请求服务器状态
AA,授权应答标志,仅由应答报文使用。1表示域名服务器是授权服务器。TC,截断标志,仅当DNS报文使用UDP服务时使用。因为UDP数据报有长度限制,所以过长的DNS报文将被截断。1表示DNS报文超过512字节,并被截断RD,递归查询标志。1表示执行递归查询,即如果目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,直到获得结果并把该结果返回给客户端。0表示执行迭代查询,即如果目标DNS服务器无法解析某个主机名,则它将自己知道的其他DNS服务器的IP地址返回给客户端,以供客户端参考。RA,允许递归标志。仅由应答报文使用,1表示DNS服务器支持递归查询。zero,这3位未用,必须设置为0。rcode,4位返回码,表示应答的状态。常用值有0(无错误)和3(域名不存在)。

你可能会发现对同一个站点,我们发出的 DNS 解析请求不止一个,思考一下是什么原因?
请求的DNS服务器可能不知道网站的ip地址,需要向更高的服务器请求。

了解 HTTP 的请求和应答

打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用http 过滤再加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间以将释放连接的包捕获。
在这里插入图片描述

请在你捕获的包中找到 HTTP 请求包,查看请求使用的什么命令,如:GET, POST。并仔细了解请求的头部有哪些字段及其意义。
POST
在这里插入图片描述
包含请求方法,请求的服务器等。

请在你捕获的包中找到 HTTP 应答包,查看应答的代码是什么,如:200, 304, 404 等。并仔细了解应答的头部有哪些字段及其意义。
在这里插入图片描述
200为应答代码。
刷新一次 qige.io 网站的页面同时进行抓包,你会发现不少的 304 代码的应答,这是所请求的对象没有更改的意思,让浏览器使用本地缓存的内容即可。那么服务器为什么会回答 304 应答而不是常见的 200 应答?
不需要向从服务器重新获取数据,只需要使用缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值