赞
踩
使用 ipconfig/all 查看自己计算机的网络配置,尽可能明白每行的意思,特别注意 IP 地址、子网掩码 Subnet Mask、网关 Gateway。
如上图,IPv4地址为192.168.1.9,以及子网掩码,默认网关等
使用 ipconfig/all 查看旁边计算机的网络配置,看看有什么异同。
异同:ip地址不同,子网掩码和网关相同。
问题
你的计算机和旁边的计算机是否处于同一子网,为什么?
答:处于同一子网,将IP地址和子网掩码进行与操作,得到的结果都是一样的,就是同一子网。
要测试到某计算机如 重庆交通大学 Web 服务器的连通性,可以使用 ping www.cqjtu.edu.cn 命令,也可直接使用 IP 地址。
请掌握使用该命令后屏幕显示的反馈回来信息的意思,如:TTL、时间等。
ping重庆交通大学 Web 服务器时收到了四个回复,与对方主机往返一次花费了43ms.
使用 ping/? 命令了解该命令的各种选项并实际使用。
问题
假设你不能 ping 通某计算机或 IP,但你确定该计算机和你之间的网络是连通的,那么可能的原因是什么?该如何处理能保证 ping 通?
答:可能的原因是对方服务器关闭了,让对方开启即可。
要了解到某计算机如 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 实用程序中看不到。
问题二
在以上两个实作中,如果你留意路径中的节点,你会发现无论是访问百度还是棋歌教学网,路径中的第一跳都是相同的,甚至你应该发现似乎前几个节点都是相同的,你的解释是什么?
回答:
因为数据要从我这里发出到百度或棋歌教学网,都要经过一条固定的线路到达DNS服务器,DNS服务器再帮我找到百度或者棋歌教学网的ip地址,将数据发送到对方。
问题三
在追踪过程中,你可能会看到路径中某些节点显示为*号,这是发生了什么?
回答:
是因为节点没有收到反馈,表示信号从该节点发出就再未接收到回复了
运行 arp -a 命令查看当前的 arp 缓存, 请留意缓存了些什么。
然后 ping 一下你旁边的计算机 IP(注意,需保证该计算机的 IP 没有出现在 arp 缓存中,或者使用 arp -d * 先删除全部缓存),再次查看缓存,你会发现一些改变,请作出解释。
变化:缓存的地址变少了,可能是因为之前与许多其他的ip通讯过,所以缓存了很多地址,在使用arp -d *删除缓存之后,再查看缓存,还没有与其进行过通讯的ip自然没有出现
请使用 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 项添加失败: 请求的操作需要提升” 这样的信息,表示命令没能执行成功你该如何解决?
回答:
以管理员身份运行cmd,再输入命令即可。
问题二
在实作三中,为何缓存中常常有网关的信息?我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点?
回答:
因为在访问外网时,需要先发送数据给网关,在本地缓存存取网关的MAC地址方便下次访问。
优点:利于管理,同时将 IP-MAC 绑定可以有效的防治 ARP 欺骗,并且可以免除用户进行身份认证的繁琐操作;
缺点:不利于维护 arp 列表,维护起来麻烦,倘若有人冒充其中一个 IP ,对用户的安全会造成极大的隐患。
一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。使用 ipconfig/release 命令释放自动获取的网络配置,并用 ipconfig/renew 命令重新获取,了解 DHCP 工作过程和原理。
问题一
如果你没能成功的释放,请思考有哪些可能的原因并着手进行解决?
回答:
可能是软件问题:没有开启DHCP客户端服务;解决方法:在 “ 运行 ” 中输入 “ sc config DHCP start= AUTO ” 重启后就可以 了。
问题二
经常的,在一个固定地方的网络配置我都喜欢采用 静态/手动配置,而不是动态 DHCP 来进行。你能想到是什么原因吗?
回答:
当一个地方 IP 有限且主机比较多的情况下,设置静态配置,避免被新接入的主机抢了 IP ,导致自己无法获取 IP。
Windows 系统将一些常用的端口与服务记录在 C:\WINDOWS\system32\drivers\etc\services 文件中,请查看该文件了解常用的端口号分配。
使用 netstat -an 命令,查看计算机当前的网络连接状况。更多的 netstat 命令选项,可参考上面链接 4 和 5 。
Windows 系统将一些固定的/静态的 DNS 信息记录在 C:\WINDOWS\system32\drivers\etc\hosts 文件中,如我们常用的 localhost 就对应 127.0.0.1 。请查看该文件看看有什么记录在该文件中。
解析过的 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,当然,由于你懂的原因,这不一定会得到正确的答案。
问题一
上面秘籍中我们提到了使用插件或自己修改 hosts 文件来屏蔽广告,思考一下这种方式为何能过滤广告?如果某些广告拦截失效,那么是什么原因?你应该怎样进行分析从而能够成功屏蔽它?
回答:
通过将 127.0.0.1 广告链接设置为广告推送链接,从而广告链接就不放访问到本机,而是它自己的服务器;广告拦截失效是因为有个跨服务器访问问题;可以使用 adsafe——广告管家 解决这个跨服务器访问的问题。
打开 Chrome 或 Firefox 浏览器,访问 https://qige.io ,接下来敲 F12 键 或 Ctrl + Shift + I 组合键打开开发者工具,选择 Network 面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。请进一步查看哪些文件被 cache了,哪些没有。
加载页面花费了555ms;除了 qige.io 以外都被 cache 了。
接下来仍在 Network 面板,选择 Disable cache 选项框,表明当前不使用 cache,页面数据全部来自于 Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。你可比对与有 cache 时的加载速度差异。
加载页面花费了2.29s;可以看出来将一些相同的资源缓存下载,可以加快页面的加载。
使用 Wireshark 任意进行抓包,熟悉 Ethernet 帧的结构,如:目的 MAC、源 MAC、类型、字段等。
✎ 问题
你会发现 Wireshark 展现给我们的帧中没有校验字段,请了解一下原因。
答:因为校验和一般由网卡计算,此时抓到的本机发送的数据包校验和都是错误的,所以默认关闭了wireshark对自己的校验字段。
ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可使用 icmp 关键字进行过滤以利于分析),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?
然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?
再次 ping www.cqjtu.edu.cn (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址又是多少?这个 MAC 地址又是谁的?
1.答:是旁边计算机的mac地址
2.ping qige.io
目的mac:6c:44:2a:70:43:73
源mac:80:30:49:85:75:00
ping www.cqjtu.edu.cn
发现目的mac和ping qige.io的目的mac相同
目的mac:6c:44:2a:70:43:73
源mac:80:30:49:85:75:00
帧的目的MAC地址是网卡地址
返回帧的源MAC地址本机的物理地址
✎ 问题
通过以上的实验,你会发现:
访问本子网的计算机时,目的 MAC 就是该主机的
访问非本子网的计算机时,目的 MAC 是网关的
请问原因是什么?
答:当子网想要跨网通信,则需通过网关,
处于同一子网中进行通信,不需要经过网关。
实作三 掌握 ARP 解析过程
1.为防止干扰,先使用 arp -d * 命令清空 arp 缓存
2.ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可 arp 过滤),查看 ARP 请求的格式以及请求的内容,注意观察该请求的目的 MAC 地址是什么。再查看一下该请求的回应,注意观察该回应的源 MAC 和目的 MAC 地址是什么。
目的mac: c8:ea:f8:32:82:dd
源mac:34:4b:50:00:00:00
3.再次使用 arp -d * 命令清空 arp 缓存
4.然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 arp 过滤)。查看这次 ARP 请求的是什么,注意观察该请求是谁在回应。
还是c8:ea:f8:32:82:dd这个网关在回应。
✎ 问题
通过以上的实验,你应该会发现
ARP 请求都是使用广播方式发送的
如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;如果访问的非本子网的 IP, 那么 ARP 解析将得到网关的 MAC。
请问为什么?
答:若arp表未有目的地址则需要发送请求,处于不同子网需通过网关才可以建立连接。
使用 Wireshark 任意进行抓包(可用 ip 过滤),熟悉 IP 包的结构,如:版本、头部长度、总长度、TTL、协议类型等字段。
IPV4的版本号为4,其他IP协议的扩展协议(SIP和PIP协议)都有不同的版本号。
4位头部长度
8位服务类型
16位总长度
16位标识
16位头部校验和由发送端填充,接收端进行CRC算法以检验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 中,如果路由器遇到了一个大数据包该怎么办?
答:直接丢弃,发送端重传。
在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。
在验证性实验部分我们使用了 tracert 命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。
请使用 tracert www.baidu.com 命令进行追踪,此时使用 Wireshark 抓包(用 icmp 过滤),分析每个发送包的 TTL 是如何进行改变的,从而理解路由追踪原理。
✎ 问题
在 IPv4 中,TTL 虽然定义为生命期即 Time To Live,但现实中我们都以跳数/节点数进行设置。如果你收到一个包,其 TTL 的值为 50,那么可以推断这个包从源点到你之间有多少跳?
答:14跳
1.用 Wireshark 任意抓包(可用 tcp 过滤),熟悉 TCP 段的结构,如:源端口、目的端口、序列号、确认号、各种标志位等字段。
2.用 Wireshark 任意抓包(可用 udp 过滤),熟悉 UDP 段的结构,如:源端口、目的端口、长度等。
✎ 问题
由上大家可以看到 UDP 的头部比 TCP 简单得多,但两者都有源和目的端口号。请问源和目的端口号用来干什么
答:在一台机器上,一个进程对应一个端口。端口的作用就是用来唯一标识这个进程。源端口标识发起通信的那个进程,目的端口标识接受通信的那个进程。
1.打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用 tcp 过滤后再使用加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间使得能够捕获释放连接的包。
2.请在你捕获的包中找到三次握手建立连接的包,并说明为何它们是用于建立连接的,有什么特征。
3.请在你捕获的包中找到四次挥手释放连接的包,并说明为何它们是用于释放连接的,有什么特征。
✎ 问题一
去掉 Follow TCP Stream,即不跟踪一个 TCP 流,你可能会看到访问 qige.io 时我们建立的连接有多个。请思考为什么会有多个连接?作用是什么?
答:它们是短连接,数据发送后,断开连接。多个连接是为了实现多个用户进行访问,节省通道的使用,不让其长期占用通道。
✎ 问题二
我们上面提到了释放连接需要四次挥手,有时你可能会抓到只有三次挥手。原因是什么?
答:可能其中有两次合并了
应用层的协议非常的多,我们只对 DNS 和 HTTP 进行相关的分析。
1.先使用 ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。
1.QR:查询/应答标志。0表示这是一个查询报文,1表示这是一个应答报文
2.opcode,定义查询和应答的类型。0表示标准查询,1表示反向查询(由IP地址获得主机域名),2表示请求服务器状态
3.AA,授权应答标志,仅由应答报文使用。1表示域名服务器是授权服务器
4.TC,截断标志,仅当DNS报文使用UDP服务时使用。因为UDP数据报有长度限制,所以过长的DNS报文将被截断。1表示DNS报文超过512字节,并被截断
5.RD,递归查询标志。1表示执行递归查询,即如果目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,直到获得结果并把该结果返回给客户端。0表示执行迭代查询,即如果目标DNS服务器无法解析某个主机名,则它将自己知道的其他DNS服务器的IP地址返回给客户端,以供客户端参考
6.RA,允许递归标志。仅由应答报文使用,1表示DNS服务器支持递归查询 zero,这3位未用,必须设置为0
7.rcode,4位返回码,表示应答的状态。常用值有0(无错误)和3(域名不存在)
✎ 问题
你可能会发现对同一个站点,我们发出的 DNS 解析请求不止一个,思考一下是什么原因?
答:为了使服务器的负载得到平衡(因为每天访问站点的次数非常多)网站就设有好几个计算机,每一个计算机都运行同样的服务器软件。这些计算机的IP地址不一样,但它们的域名却是相同的。这样,第一个访问该网址的就得到第一个计算机的IP地址,而第二个访问者就得到第二个计算机的IP地址等等。这样可使每一个计算机的负荷不会太大。
1.打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用http 过滤再加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间以将释放连接的包捕获。
2. 请在你捕获的包中找到 HTTP 请求包,查看请求使用的什么命令,如:GET, POST。并仔细了解请求的头部有哪些字段及其意义。
3.请在你捕获的包中找到 HTTP 应答包,查看应答的代码是什么,如:200, 304, 404 等。并仔细了解应答的头部有哪些字段及其意义。
✎ 问题
刷新一次 qige.io 网站的页面同时进行抓包,你会发现不少的 304 代码的应答,这是所请求的对象没有更改的意思,让浏览器使用本地缓存的内容即可。那么服务器为什么会回答 304 应答而不是常见的 200 应答?
答:1.初始状态:第一次访问时,向服务器发送请求,成功收到相应,则返回200,浏览器此时下载资源文件, 并记录下response header和返回时间。
2.再次请求:再次访问相同的资源的时候,本地先判断是否需要发送请求给服务器,此时比较当前时间和 上一次返回200时的时间差,如果没有超过过期时间,则命中强缓存,读取本地资源文件。如果已经过期了, 那么就向服务器发送header带有 If-None-Match 和 If-Modified-Since的请求
3.服务器收到请求后,优先根据Etag值判断被请求的文件有没有被修改过,Etag值是一致的表示没有被修 改,命中协商缓存,返回304;如果不一致则表示有改动,直接返回新的资源文件并带上新的Etag值并返回 200; - 4,如果服务器收到请求没有Etag值,则将If-Modified-Since和被请求文件的最后修改时间做比对,一 致则命中协商缓存,返回304;不一致则返回新的last-modified和文件并返回200
将两台 PC 直接连接构成一个网络。注意:直接连接需使用交叉线。
进行两台 PC 的基本网络配置,只需要配置 IP 地址即可,然后相互 ping 通即成功。
构建如下拓扑结构的局域网:
各PC的基本网络配置如下表:
如图所示配置PC0,PC1,PC2,PC3的操作相同。
问题
PC0 能否 ping 通 PC1、PC2、PC3 ?
PC3 能否 ping 通 PC0、PC1、PC2 ?为什么?
将 4 台 PC 的掩码都改为 255.255.0.0 ,它们相互能 ping 通吗?为什么?
使用二层交换机连接的网络需要配置网关吗?为什么?
(1)答:PC0能ping通PC1,不能ping通PC2和PC3
(2)答:PC3能ping通PC2,不能ping通PC0和PC1
因为PC3和PC2在同一子网中,而PC0和PC1在另一个子网中。当PC3想与PC0、PC1通信时,必须通过网关到另一个子网,而PC3的网络号是通过IP地址与子网掩码与运算得到的,网络号的不同导致找不到网关,因此不能ping通。
(3)答:可以ping通,因为改成255.255.0.0后,这些主机都会位于同一子网下。
以PC0为例:
(4)不需要,由于二层交换机它是子网内部进行数据传输,不需经过到网关对外进行通信。
二层交换机是一种即插即用的多接口设备,它对于收到的帧有 3 种处理方式:广播、转发和丢弃(请弄清楚何时进行何种操作)。那么,要转发成功,则交换机中必须要有接口地址列表即 MAC 表,该表是交换机通过学习自动得到的!
仍然构建上图的拓扑结构,并配置各计算机的 IP 在同一个一个子网,使用工具栏中的放大镜点击某交换机如左边的 Switch3,选择 MAC Table,可以看到最初交换机的 MAC 表是空的,也即它不知道该怎样转发帧(那么它将如何处理?),用 PC0 访问(ping)PC1 后,再查看该交换机的 MAC 表,现在有相应的记录,请思考如何得来。随着网络通信的增加,各交换机都将生成自己完整的 MAC 表,此时交换机的交换速度就是最快的!
PC0发出请求,经过switch01,switch01学习了PC0的mac地址;PC1回应PC0,发出的信息经过switch01,switch01学习了PC1的mac地址。
交换机在目的地址未知或接收到广播帧时是要进行广播的。如果交换机之间存在回路/环路,那么就会产生广播循环风暴,从而严重影响网络性能。
而交换机中运行的 STP 协议能避免交换机之间发生广播循环风暴。
建立拓扑结构:
这是初始时的状态。我们可以看到交换机之间有回路,这会造成广播帧循环传送即形成广播风暴,严重影响网络性能。
随后,交换机将自动通过生成树协议(STP)对多余的线路进行自动阻塞(Blocking),以形成一棵以 Switch5 为根(具体哪个是根交换机有相关的策略)的具有唯一路径树即生成树!
经过一段时间,随着 STP 协议成功构建了生成树后,Switch4 的两个接口当前物理上是连接的,但逻辑上是不通的,处于Blocking状态(桔色)如下图所示:
在网络运行期间,假设某个时候 Switch4 与 Switch5 之间的物理连接出现问题(将 Switch4 与 Switch5 的连线剪掉),则该生成树将自动发生变化。Switch4 下方先前 Blocking 的那个接口现在活动了(绿色),但上方那个接口仍处于 Blocking 状态(桔色)。如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。