计算机网络实验报告

验证性实验

ipconfig

使用 ipconfig/all 查看自己计算机的网络配置
在这里插入图片描述
IP地址为192.168.0.5
子网掩码为255.255.255.0
网关为192.168.0.1
网络地址=192.168.0.0
使用ipconfig/all 查看旁边计算机的网络配置
IP地址为192.168.0.100
子网掩码为255.255.255.0
网关为192.168.188.255
网络地址=192.168.0.0
自己计算机的网络地址与旁边计算机网络地址相同,说明两台计算机处于同一子网

ping

测试到重庆交通大学Web服务器的连通性
在这里插入图片描述
"字节=32"表示ICMP报文中有32个字节的测试数据;
"时间=14ms"是往返时间;
“TTL=58”表示IP包的生命周期,经过了6(64-58)个路由器。

使用 ping/? 命令了解该命令的各种选项并实际使用。
在这里插入图片描述

tracert

了解到某计算机如 www.baidu.com 中间经过了哪些节点(路由器)及其它状态
在这里插入图片描述
ping.pe 这个网站可以探测从全球主要的 ISP 到某站点如 https://qige.io 的线路状态,当然也包括各线路到该主机的路由情况。

ARP

arp -a 查看当前的 arp 缓存
在这里插入图片描述
ping 192.168.0.2 ,再次查看arp缓存
在这里插入图片描述
此时ARP中多了一个192.168.0.2的动态地址。

arp/? 了解arp命令的各种选项
在这里插入图片描述
arp -s 192.168.0.2 9c-f5-31-d5-92-d9,将192.168.0.2设置为静态地址
在这里插入图片描述

DHCP

一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。
ipconfig/release 命令释放自动获取的网络配置
在这里插入图片描述
ipconfig/renew 命令重新获取。
在这里插入图片描述

netstat

Windows 系统将一些常用的端口与服务记录在 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 服务器查询该域名。当然你也可以指定使用 CloudFlare(1.1.1.1)或 Google(8.8.8.8) 的全球 DNS 服务器来解析,如:nslookup qige.io 8.8.8.8,当然,由于你懂的原因,这不一定会得到正确的答案。
在这里插入图片描述
使用Google(8.8.8.8) 的全球 DNS 服务器来解析
在这里插入图片描述

cache

打开 Chrome 或 Firefox 浏览器,访问 https://qige.io ,接下来敲 F12 键 或 Ctrl + Shift + I 组合键打开开发者工具,选择 Network 面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。请进一步查看哪些文件被 cache了,哪些没有。
在这里插入图片描述
接下来仍在 Network 面板,选择 Disable cache 选项框,表明当前不使用 cache,页面数据全部来自于 Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。你可比对与有 cache 时的加载速度差异。
在这里插入图片描述
不使用缓存后,访问速度明显变慢了。

Wireshark实验

数据链路层

熟悉 Ethernet 帧结构
使用 Wireshark 任意进行抓包,熟悉 Ethernet 帧的结构,如:目的 MAC、源 MAC、类型、字段等。
在这里插入图片描述
目的MAC: Tp-LinkT_a3:9d:14 (7c:b5:9b:a3:9d:14)
源MAC: IntelCor_ff:5f:5f (cc:f9:e4:ff:5f:5f)
类型: IPv4 (0x0800)
Wireshark 展现给我们的帧中为什么没有校验字段?
答:Wireshark 抓包前,在物理层网卡已经去掉了一些之前几层加的东西,比如前导同步码,FCS等等,之后利用校验码CRC校验,正确时才会进行下一步操作,这时才开始进行抓包,因此,抓包软件抓到的是去掉前导同步码、FCS之外的数据,没有校验字段。

了解子网内/外通信时的 MAC 地址
ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可使用 icmp 关键字进行过滤以利于分析),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?
在这里插入图片描述
Destination: Guangdon_d5:92:d9 (9c:f5:31:d5:92:d9)
Source: IntelCor_ff:5f:5f (cc:f9:e4:ff:5f:5f)
目的MAC地址是旁边计算机的,源MAC地址是本机的。

然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?
在这里插入图片描述
在这里插入图片描述
Destination: Tp-LinkT_a3:9d:14 (7c:b5:9b:a3:9d:14)
Source: IntelCor_ff:5f:5f (cc:f9:e4:ff:5f:5f)
目的MAC地址是qige.io,源MAC地址是本机的。

再次 ping www.cqjtu.edu.cn (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址又是多少?这个 MAC 地址又是谁的?
在这里插入图片描述
在这里插入图片描述Destination: Tp-LinkT_a3:9d:14 (7c:b5:9b:a3:9d:14)
Source: IntelCor_ff:5f:5f (cc:f9:e4:ff:5f:5f)
目的MAC地址是www.cqjtu.edu.cn,源MAC地址是本机的。

实作三 掌握 ARP 解析过程
为防止干扰,先使用 arp -d * 命令清空 arp 缓存
ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可 arp 过滤),查看 ARP 请求的格式以及请求的内容,注意观察该请求的目的 MAC 地址是什么。再查看一下该请求的回应,注意观察该回应的源 MAC 和目的 MAC 地址是什么。
再次使用 arp -d * 命令清空 arp 缓存
然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 arp 过滤)。查看这次 ARP 请求的是什么,注意观察该请求是谁在回应。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结论:如果访问的是计算机所处的本子网的ip,那么ARP解析协议将会直接得到该ip对应的Mac地址,但是如果访问的是非本子网的ip,那么ARP解析将直接得到网关的mac地址。所以要想访问对方,在处于同一子网的条件下,应该知道对方的MAC地址,但是不处于同一子网,需要知道对方所处子网网关的Mac地址。
因为ARP代理,访问非子网IP时是通过路由器访问的,路由器再把发出去,目标IP收到请求后,再通过路由器端口IP返回回去,那么ARP解析将会得到网关的MAC。

网络层

熟悉 IP 包结构
使用 Wireshark 任意进行抓包(可用 ip 过滤),熟悉 IP 包的结构,如:版本、头部长度、总长度、TTL、协议类型等字段。
在这里插入图片描述
版本:4;头部长度:20 bytes;
总长度:60; TTL: 64;
协议类型:ICMP。

IP 包的分段与重组
根据规定,一个 IP 包最大可以有 64K 字节。但由于 Ethernet 帧的限制,当 IP 包的数据超过 1500 字节时就会被发送方的数据链路层分段,然后在接收方的网络层重组。
缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用 ping 202.202.240.16 -l 2000 命令指定要发送的数据长度。此时使用 Wireshark 抓包(用 ip.addr == 202.202.240.16 进行过滤),了解 IP 包如何进行分段,如:分段标志、偏移量以及每个包的大小等
在这里插入图片描述
分段标志:Flags
偏移量:Fragment Offset

考察 TTL 事件
在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。
在验证性实验部分我们使用了 tracert 命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。
请使用 tracert www.baidu.com 命令进行追踪,此时使用 Wireshark 抓包(用 icmp 过滤),分析每个发送包的 TTL 是如何进行改变的,从而理解路由追踪原理。
在这里插入图片描述
在这里插入图片描述
一开始发送一个TTL为1的包,这样到达第一个路由器的时候就已经超时了,第一个路由器就发ICMP通知说包超时,这样就能够记录下所经过的第一个路由器的IP。然后将TTL加1,安全通过第一个路由器,而第二个路由器的的处理与第一个同样,丢包,发通知说包超时了,这样记录下第二个路 由器IP,由此能够一直进行下去,直到这个数据包到达目标主机,由此打印出全部经过的路由器。

传输层

熟悉 TCP 和 UDP 段结构
用 Wireshark 任意抓包(可用 tcp 过滤),熟悉 TCP 段的结构,如:源端口、目的端口、序列号、确认号、各种标志位等字段。
在这里插入图片描述
TCP报文段:
报文段包括了20~60字节的首部,其中20字节是没有选项的,后面40字节可选。
源地址端口:16位字段,发送该报文段的主机中应用程序的端口号
序号:32位字段。指派给本报文段第一个数据字节的编号,TCP传输保证连接性,发送的每个字节都要编上号。序号就是告诉终点,报文段中的第一个字节是序列中的哪个。建立连接时,发收双发使用各自的随机数产生器产生一个初始序号(ISN),通常,两个方向的ISN是不同的。
确认号:32位字段定义了接收方期望从对方接受的字节编号。如果报文段的接收方成功的接受了对方发过来的编号x的字节,那么返回x+1作为确认号,确认号可以和数据捎带一起发送。
HLEN:4位,指出TCP首部一共有多少个4字节,所以范围是5~15
保留:
控制:定义了6中不同的控制位或者标志位。
紧急指针:只有当紧急标志置位时URG,该16位的字段才有效。紧急指针定义了一个数值,把这个数值加到序号上就得到版文段数据部分中最后一个紧急字节的编号。
在这里插入图片描述
UDP的分组:
UDP的分组称用户数据报:它有8字节的固定首部
总长度:16位字段,定义了用户数据报的总长度为0~65535字节。但实际长度肯定比65535小,因为用户数据报要放在总长度为65535的IP数据报中,封装在IP数据报中。因此UDP长度=IP长度-IP首部长度。
检验和:增加一个伪首部,对于UDP协议来说协议字段的值为17。若在传输过程中这个值发生改变,接收端计算检验和就能检测出来。UDP使用检验和是可选的,如果不计算就将这16位全部填0.

分析 TCP 建立和释放连接
打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用 tcp 过滤后再使用加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间使得能够捕获释放连接的包。
请在你捕获的包中找到三次握手建立连接的包,并说明为何它们是用于建立连接的,有什么特征。
在这里插入图片描述
请在你捕获的包中找到四次挥手释放连接的包,并说明为何它们是用于释放连接的,有什么特征。
在这里插入图片描述

应用层

了解 DNS 解析
先使用 ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。
你应该可以看到当前计算机使用 UDP,向默认的 DNS 服务器的 53 号端口发出了查询请求,而 DNS 服务器的 53 号端口返回了结果。
可了解一下 DNS 查询和应答的相关字段的含义
在这里插入图片描述
QR(Response):查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。
Opcode:操作码。其中,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求。
AA(Authoritative):授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。
TC(Truncated):表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。
RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。
RA(Recursion Available):可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。
Z:保留字段,在所有的请求和应答报文中,它的值必须为 0。
rcode(Reply code):返回码字段,表示响应的差错状态。当值为 0 时,表示没有错误;当值为 1 时,表示报文格式错误(Format error),服务器不能理解请求的报文;当值为 2 时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;当值为 3 时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;当值为 4 时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;当值为 5 时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。

了解 HTTP 的请求和应答
打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用http 过滤再加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间以将释放连接的包捕获。
请在你捕获的包中找到 HTTP 请求包,查看请求使用的什么命令,如:GET, POST。并仔细了解请求的头部有哪些字段及其意义。
在这里插入图片描述
查看请求使用GET命令
Request Method:Http请求方法
Request URI:统一资源标识符
Request Version:请求版本

请在你捕获的包中找到 HTTP 应答包,查看应答的代码是什么,如:200, 304, 404 等。并仔细了解应答的头部有哪些字段及其意义。
在这里插入图片描述
200:服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
304:自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。
404:服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值