计算机网络实验练习

一、验证性实验

(一)ipconfig

简介
ipconfig 是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它的主要用来显示当前网络连接的配置信息(/all 参数)
在这里插入图片描述
在这里插入图片描述
实作一
1)使用 ipconfig/all 查看自己计算机的网络配置,尽可能明白每行的意思,特别注意 IP 地址、子网掩码 Subnet Mask、网关 Gateway。
在这里插入图片描述
可以看到IP 地址、子网掩码 Subnet Mask、网关 Gateway

实作二
使用 ipconfig/all 查看旁边计算机的网络配置,看看有什么异同。
在这里插入图片描述
可以看出自己的计算机的IP和旁边的计算机的IP不一样,而子网掩码和网关是一样的

(二)ping

简介
PING(Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。ping是工作在TCP/IP网络体系结构中应用层的一个服务命令,主要是向特定的目的主机发送ICMP (Internet Control Message Protocol因特网报文控制协议) Echo 请求报文,测试目的站是否可达及了解其有关状态。
在这里插入图片描述
实作一
要测试到某计算机Web服务器的连通性,可以使用ping,"域名"命令,也可直接使用IP地址。请掌握使用该命令后屏幕显示的反馈回来信息的意思,如: TTL、 时间等。
ping www.baidu.com
在这里插入图片描述
1.ping命令的TTL:这是指数据包被路由器丢弃之前所允许通过的网段数量
2.ping命令的时间:这是指得到对方回应的时间
实作二
使用 ping/? 命令了解该命令的各种选项并实际使用
1)试自己计算机的状态,如果 OK,那么说明本机网络软件硬件工作正常,否则,问题在本机,检查本机 TCP/IP 配置即网卡状态等
在这里插入图片描述
2)测试到旁边计算机的连通性,如果OK,那么说明本子网内部工作正常,否则,问题在本机网络出口到交换机之间,检查本机网卡到交换机的连线等
在这里插入图片描述

3)测试到网关的连通性,如果 OK,那么说明本子网出口工作正常,否则,问题在网关,这是你无能为力的事情,报告给网管
在这里插入图片描述
4)试到百度的连通性,如果 OK,那就 OK,否则,问题在网关以外,这也是你无能为力的事情,报告给网管或者李彦宏?
14.215.177.39 是百度的一个ip地址
在这里插入图片描述
通过上面的实验证明网络状态是良好的

(三)tracert

介绍
TRACERT (Trace Route的组合缩写),也称为路由追踪,该命令行程序可用于跟踪Internet协议(IP) 数据包传送到目标地址时经过的路径。
在这里插入图片描述
实作一
1)要了解到某计算机如 www.baidu.com 中间经过了哪些节点(路由器)及其它状态,可使用 tracert www.baidu.com 命令,查看反馈的信息,了解节点的个数。

在这里插入图片描述
可通过网站http://ip.cn查看这些节点位于何处,是哪个公司的,大致清楚本机到百度服务器之间的路径。

在这里插入图片描述
实作二
ping.pe 这个网站可以探测从全球主要的 ISP 到某站点如 https://qige.io 的线路状态,当然也包括各线路到该主机的路由情况。请使用浏览器访问http://ping.pe/qige.io 进行了解。

在这里插入图片描述

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

通过向目标发送不同IP生存时间 (TTL) 值的“Internet控制消息协议(ICMP)”回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。 Tracert 先发送 TTL 为 1的回应数据包,并在随后的每次发送过程将TTL递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。

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

因为我们的网络都是从本身的计算机所在的子网出发,然后进过交大校园的交换机进入电信的通信子网上

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

没有出现具体的信息反馈,请求超时

(四)ARP

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

在这里插入图片描述
实作一
运行 arp -a 命令查看当前的 arp 缓存, 请留意缓存了些什么。

在这里插入图片描述

然后 ping 一下你旁边的计算机 IP(注意,需保证该计算机的 IP 没有出现在 arp 缓存中,或者使用 arp -d * 先删除全部缓存),再次查看缓存,你会发现一些改变,请作出解释。

在这里插入图片描述
在这里插入图片描述

假如没有旁边的mac地址,然后我ping了它的ip地址的话,转换表里的缓存里就会有它的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 命令设置其为静态类型的

在这里插入图片描述
在这里插入图片描述
可以看到这个地址已经设为静态地址

你可能会在实作三的操作中得到"ARP项添加失败:请求的操作需要提升”这样的信息,示 命令没能执行成功,你该如何解决?

进入windows\system32文件夹找到cmd.exe,右键“以管理员身份运行”

(五)DHCP

DHCP (Dynamic Host Configuration Protocol)即动态主机配置协议,是一个用于IP网络的网络协议,位于OSI模型的应用层,使用UDP协议工作,主要有两个用途:
●用于内部网或网络服务供应商自动分配IP地址给用户
●用于内部网管理员对所有电脑作中央管理
简单的说,DHCP可以让计算机自动获取/释放网络配置。

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

DHCP 服务事件的序列在这里插入图片描述

ipconfig/release 命令释放自动获取的网络配置
在这里插入图片描述

ipconfig/renew 命令重新获取
在这里插入图片描述

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

因为会导致ip发生冲突,自动配置的IP地址和信息只是短暂性的解决计算机不能获取 DHCP 服务器的配置数据的问题,要真正的接入Internet还是得本身计算机的正确IP地址

(六)netstat

介绍
无论是使用TCP还是UDP,任何一个网络服务都与特定的端口(Port Number)关联在一起。 因此,每个端口都对应于某个通信协议/服务。
netstat (Network Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接[设备的状态信息,以及与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。

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

在这里插入图片描述

可以看到很多常用端口
在这里插入图片描述
实作二
使用 netstat -an 命令,查看计算机当前的网络连接状况。

在这里插入图片描述

从整体上看,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:没有任何连接状态

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

(七)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 服务器查询该域名

在这里插入图片描述

当我们使用浏览器上网时,或多或少的会看到一些广告。某些网站的广告是非常没有节操的,所以我们一般可以通过安装浏览器插件如 AdGuard、AdBlocker 等来拦截和过滤。
这种方法简单方便有效,不过有一定安全或隐私问题,因为该插件实时知道你访问的 URL。

假设不使用这种第三方的插件,希望自己完全控制,那么就请考虑在我们前面提到的 hosts 文件中添加 DNS记录。有自愿者时时在维护全球正确的 DNS 记录文件

(八)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 卫士之类的垃圾软件,那么它可能就会在某些时候提示你计算机的垃圾文件有多少多少,请清理(其实是它本身应该被清理!)之类的弹窗。如果你查看一下它判断的所谓垃圾文件,你会发现大多都是浏览器的缓存,而你已经明白了这些缓存文件的作用。所以,清理吗?

二、Wireshark 实验

(一)熟悉 Ethernet 帧结构

使用 Wireshark 任意进行抓包,熟悉 Ethernet 帧的结构,如:目的 MAC、源 MAC、类型、字段等
1.打开wireshark,选择菜单栏上Capture -> Option,勾选正常连接的网卡点击Start,在启动抓包,wireshark处于抓包状态中。
在这里插入图片描述
2.在cmd窗口下执行ping www.baidu.com
在这里插入图片描述3.通过在过滤栏设置过滤条件进行数据包列表过滤
在这里插入图片描述4.Ethernet
(1)
在这里插入图片描述从第一项可以得知,捕获帧有54字节,从第二项可以看出源地址和目的地址(物理地址),第三项包含使用的网络协议,源ip地址,目的ip地址等信息;
(2)第一项展开
在这里插入图片描述可以看出到达时间

Arrival Time: Nov 9, 2020 20:01:35.212404000 中国标准时间

帧数为32,帧的长度为54字节,被wireshark捕获的长度为32字节,显示帧未被标记

(3)第二项展开
在这里插入图片描述可知目的mac地址为:

Destination: RuijieNe_9f:40:13 (00:74:9c:9f:40:13)

源mac地址为:

Address: RuijieNe_9f:40:13 (00:74:9c:9f:40:13)

网络协议类型为: ip(0x0800)

(在以太网帧结构中规定类型字段>0x0600的表示协议类型其中ip协议的类型码为:0x0800,arp 协议的类型码为: 0x0806 netware的ixp协议:0x8137,如果类型字段<0x0600则表示帧的长度)

(4)第三项展开
在这里插入图片描述可以得出

协议版本version号为: 4表示网络层使用的是ipv4协议
报头长度为: 20字节

(ip头部常用4B作为一个基本单元,前5个单元20B为必需域,其中ip 头部的长度范 围: 20B~60B)

服务类型域service field 0x00

(该域有8位,用于指示路由器如何处理该数据,包括优先级和服务类型参数)

总长度total length: 40 字节

(16位,定义了以字节为单位的数据报的总长度)

标识域identification: 0x2a96

(16位的片识别的标记)

标志域flags: 0x40

(3位,DF值为0表示可以分片,MF值为0表示接收的是最后一个分片)

报文片段偏移量为: 0

(片偏移值是以8B为单位来计数的)

生存时间time to live:128

(表示数据报可以经过最多的路由器跳数)

协议域protocol: TCP (6)

头部校验和header checksum 0x0000 保证报头的完整性、

源ip地址: 10.160.40.148

目的ip地址: 14.215.177.39
(5)第四项可得

源端口号:51887
目的端口号:443

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

1.ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可使用 icmp 关键字进行过滤以利于分析),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?

对方网络配置
在这里插入图片描述
自己电脑网络配置
在这里插入图片描述

ping一下
在这里插入图片描述在这里插入图片描述
目的 MAC :202.202.250.239 MAC 地址是对方电脑主机
源 MAC :10.160.64.171 MAC 地址是自己电脑的
在这里插入图片描述
2.然后ping一下 www.baidu.com (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?
在这里插入图片描述

返回帧
在这里插入图片描述
发出帧
在这里插入图片描述

(三)掌握 ARP 解析过程

1.为防止干扰,先使用 arp -d * 命令清空 arp 缓存
在这里插入图片描述

2.ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可 arp 过滤),查看 ARP 请求的格式以及请求的内容,注意观察该请求的目的 MAC 地址是什么。再查看一下该请求的回应,注意观察该回应的源 MAC 和目的 MAC 地址是什么。
然后 ping 一下我旁边的计算机 IP

在这里插入图片描述

在这里插入图片描述
没有旁边的mac地址,然后ping了它的ip地址,我的缓存里就会有它的mac地址
当没有对方的mac地址,会广播谁有对方的mac地址,然后有他的mac地址的会回应我,就获得对方的mac地址
3.再次使用 arp -d * 命令清空 arp 缓存
在这里插入图片描述
4.然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 arp 过滤)。查看这次 ARP 请求的是什么,注意观察该请求是谁在回应。
在这里插入图片描述
1.ARP 请求都是使用广播方式发送的
2、如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;如果访问的非本子网的 IP, 那么 ARP 解析将得到网关的 MAC。

(四)熟悉 IP 包结构

使用 Wireshark 任意进行抓包(可用 ip 过滤),熟悉 IP 包的结构,如:版本、头部长度、总长度、TTL、协议类型等字段。
版本号(Version):长度4比特。标识目前采用的IP协议的版本号。一般的值为0100(IPv4),0110(IPv6)
IP包头长度Header Length长度4比特。这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即本区域值= IP头部长度(单位为bit)/(84),因此,一个IP包头的长度最长为“1111”,即154=60个字节。IP包头最小长度为20字节。
IP包总长Total Length长度16比特。 以字节为单位计算的IP包的长度 (包括头部和数据),所以IP包最大长度65535字节。
标识符Identifier长度16比特。该字段和Flags和Fragment Offest字段联合使用,对较大的上层数据包进行分段(fragment)操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。
标记(Flags):长度3比特。该字段第一位不使用。第二位是DF(Don’t Fragment)位,DF位设为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。第三位是MF(More Fragments)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。
片偏移(Fragment Offset):长度13比特。表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包。
生存时间(TTL):长度8比特。当IP包进行传送时,先会对该字段赋予某个特定的值。当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于路由环路而导致IP包在网络中不停被转发。
协议Protocol长度8比特。标识了上层所使用的协议。
以下是比较常用的协议号ÿ

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值