实验目录

  • 前期准备
  • 参考资料
  • 一、验证性实验
  • 1.ipconfig
  • 2.ping
  • 3.tracert
  • 4.ARP
  • 5.DHCP
  • 6.netstat
  • 7.DNS
  • 8.cache
  • 二、Wireshark实验
  • 1.熟悉 Ethernet 帧结构
  • 2.了解子网内/外通信时的 MAC 地址
  • 3.掌握 ARP 解析过程
  • 4.熟悉 IP 包结构
  • 5.IP 包的分段与重组
  • 6.考察 TTL 事件
  • 7.熟悉 TCP 和 UDP 段结构
  • 8.分析 TCP 建立和释放连接
  • 9.了解 DNS 解析
  • 10.了解 HTTP 的请求和应答
  • 三.Cisco Packet Tracer实验
  • 先了解 VLSM、CIDR、RIP、OSPF、VLAN、STP、NAT 及 DHCP 等概念
  • 1.直接连接两台 PC 构建 LAN
  • 2.用交换机构建 LAN
  • 3.交换机接口地址列表
  • 4.生成树协议(Spanning Tree Protocol)
  • 5.路由器配置初步
  • 6.静态路由
  • 7.动态路由 RIP
  • 8.动态路由 OSPF
  • 9.基于端口的网络地址翻译 PAT
  • 10.虚拟局域网 VLAN
  • 11.虚拟局域网管理 VTP
  • 12.VLAN 间的通信
  • 13.DHCP、DNS及Web服务器简单配置
  • 14.WLAN初步配置



前期准备

需要软件:
Cmder Cmder下载1 Cmder下载2(官网) Wireshark Wireshark下载 Cisco Packet Tracer (CPT) CPT下载 CPT 建议免费注册,否则将以 Guest 身份下载和使用
CPT官网

关于Cmder的一些常用快捷键

Tab       自动路径补全
Ctrl+T    建立新页签
Ctrl+W    关闭页签
Ctrl+Tab  切换页签
Alt+F4    关闭所有页签
Alt+Shift+1 开启cmd.exe
Alt+Shift+2 开启powershell.exe
Alt+Shift+3 开启powershell.exe (系统管理员权限)
Ctrl+1      快速切换到第1个页签
Ctrl+n      快速切换到第n个页签( n值无上限)
Alt + enter 切换到全屏状态
Ctr+r       历史命令搜索
Tab         自动路径补全
Ctrl+T      建立新页签
Ctrl+W      关闭页签
Ctrl+Tab    切换页签
Alt+F4      关闭所有页签
Alt+Shift+1 开启cmd.exe
Alt+Shift+2 开启powershell.exe
Alt+Shift+3 开启powershell.exe (系统管理员权限)
Ctrl+1      快速切换到第1个页签
Ctrl+n      快速切换到第n个页签( n值无上限)
Alt + enter 切换到全屏状态
Ctr+r       历史命令搜索
Win+Alt+P   开启工具选项视窗

参考资料

使用Cmder替换cmd,让开发更高效


一、验证性实验

1.ipconfig

  1. ipconfig-Microsoft简介
  2. ipconfig命令詳細圖解
  3. ipconfig-WiKI

ipconfig是微软操作系统的电脑上用来控制网络连线的一个命令行工具。它的主要功用,包括用来显示现时网络连线的设置(/all参数),或透过/release参数来释放获取的ip位置,和透过 /renew 来重新获取ip位置的分配。

显示所有当前 TCP/IP 网络配置值并刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置。 在没有参数的情况下使用, ipconfig 显示 Internet 协议版本 4 (IPv4) 以及所有适配器的 IPv6 地址、子网掩码和默认网关。

参数

说明

/all

显示所有适配器的完整 TCP/IP 配置。 适配器可表示物理接口(例如已安装的网络适配器)或逻辑接口(如拨号连接)。

/?

显示帮助信息

/release

释放某一个网络上的IP位置

/renew

更新某一个网络上的IP位置

/flushdns

把DNS解析器的暂存内容全数删除

  • 实作一

问题:
你的计算机和旁边的计算机是否处于同一子网,为什么?

  • 回答:
    当我的计算机和旁边的计算机连接在同一个交换机或者是同一个路由器的同一个LAN口上的时候,处在同一个子网

2.ping

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

  1. ping指令高級用法
  2. Ping 命令详解

用法:

ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]

           [-r count] [-s count] [[-j host-list] | [-k host-list]]

           [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
-t :Ping 指定的计算机直到中断。

-a :将地址解析为计算机名。

-n count :发送 count 指定的 ECHO 数据包数。默认值为 4。

-l size :发送包含由 size 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是65,527。

-f :在数据包中发送"不要分段"标志。数据包就不会被路由上的网关分段。

-i ttl :将"生存时间"字段设置为 ttl 指定的值。

-v tos :将"服务类型"字段设置为 tos 指定的值。

-r count :在"记录路由"字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。

-s count :指定 count 指定的跃点数的时间戳。

-j host-list :利用 host-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。

-k host-list :利用 host-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。

-w timeout :指定超时间隔,单位为毫秒。

destination-list :指定要 ping 的远程计算机。
  • 实作一

要测试到某计算机如 重庆交通大学 Web 服务器的连通性,可以使用 ping www.cqjtu.edu.cn 命令,也可直接使用 IP 地址。
请掌握使用该命令后屏幕显示的反馈回来信息的意思,如:TTL、时间等。

wireshark用命令提示符抓包 wireshark命令提示符窗口_windows

  • 实作二

使用 ping/? 命令了解该命令的各种选项并实际使用。

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_02

问题1:
假设你不能 ping 通某计算机或 IP,但你确定该计算机和你之间的网络是连通的,那么可能的原因是什么?该如何处理能保证ping 通?

  • 回答:
    网络连通说明网线以及通信过程中间的通信子网没问题,则原因可能有:
    1.网络协议配置问题(eg:局域网IP冲突)
    2.网卡问题
    3.目的IP在防火墙里面把Ping给ban了 4.IP协议未安装
    解决方案:
    1.ping 127.0.0.1,检查是否是自身网卡问题
    2.在网络连接属性里面查看网络协议配置是否出错
    3.ping一下其他的IP确认是否是对方计算机的问题

秘籍:
当你的网络出现故障不能访问某计算机如 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,否则,问题在网关以外,这也是你无能为力的事情,报告给网管或者李彦宏?

问题2:
假设在秘籍中进行的网络排查中,ping 百度的 IP 即 ping 14.215.177.39 没问题,但 ping 百度的域名即 ping www.baidu.com 不行,那么可能的原因是什么?如何进行验证和解决?
另外,经常有同学问到的:“能上 QQ,但不能上网” 跟这个问题的原因是相似的。

  • 回答:
    域名ping不通说明域名解析不出来。
    负责解析域名的,就是DNS,
    首先清空一下DNS缓存,命令窗口ipconfig/flushdns然后设置电脑的DNS为google的DNS 8.8.8.8 或者电信的 101.226.4.6或者114.114.114.114大部分是可以的 如果还是Ping不通 则可联系给域名服务的服务商,他们会给出dns服务器。
    能上 QQ,但不能上网是因为QQ是不需要DNS解析域名的,DNS再怎么出问题也不会影响

在baiInternet上域名与IP地址之间是一对一(或者多对一)的,也可采用DNS轮循实现一对多,域名虽然便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

3.tracert

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

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

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_03

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

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_04


ping 油管时,国内服务器都处于离线状态

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_05


使用G Suite可视化追踪到Netflix

✎ 问题一

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

tracert背后的原理就是基于IP包中的TTL,每当数据包经过一个路由器,其存活时间就会减1。当其存活时间是0时,主机便取消数据包,并发送一个ICMP TTL数据包给原数据包的发出者。

计算机发出TTL从1开始逐次加一的ICMP报文,通过返回的ICMP报文得到沿途IP信息。

tracert baidu的时候使用wireshark进行抓包

wireshark用命令提示符抓包 wireshark命令提示符窗口_网络_06


抓包结果明显看到本机发出的报文的TTL是从一开始逐次加一的

✎ 问题二

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

第一跳是计算机所在的子网的出口路由器的接口地址,所有出口流量都会经过这个接口,所有相同。前几跳相同表明该子网出口流量必经过前几跳ip代表的路由器。

✎ 问题三

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

出于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器缺省配置为不返回各种 ICMP 报文,其余路由器或交换机也可被管理员主动修改配置变为不返回 ICMP 报文。因此 Traceroute 程序不一定能拿全所有的沿途网关地址,所以有的节点显示为*号。

4.ARP

实作一:
运行 arp -a 命令查看当前的 arp 缓存, 请留意缓存了些什么。

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

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_07

实作二:
请使用 arp /? 命令了解该命令的各种选项。

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_08

实作三:
一般而言,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 命令设置其为静态类型的。

当前网关ip为192.168.43.79,MAC地址为c2-a6-42-5d-6a-b7

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_09

🗣 TroubleShooting

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

权限不够,需要以管理员身份启动cmder

✎ 问题

在实作三中,为何缓存中常常有网关的信息?

我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点?

将网关的arp设置为静态可以有效预防arp欺骗,避免计算机受到攻击
缺点就是不够灵活,并且麻烦

5.DHCP

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

wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_10


wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_11


release后可以看到网络配置消失,计算机显示断网

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_12


wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_13


renew后网络配置有了,而且和之前的网络配置一样

wireshark用命令提示符抓包 wireshark命令提示符窗口_网络_14

🗣 TroubleShooting

如果你没能成功的释放,请思考有哪些可能的原因并着手进行解决?

有可能不是以管理员权限启动

✎ 问题

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

169.254.X.X的IP可以使得在同一子网下的主机能够保证通信,就算不能接入internet也能在局域网内进行通信

6.netstat

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

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_15

实作二:
使用 netstat -an 命令,查看计算机当前的网络连接状况。更多的 netstat 命令选项,可参考链接 netstat 命令用法详解netstat 命令详解

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_16

7.DNS

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

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_17

实作二:
解析过的 DNS 记录将会被缓存,以利于加快解析速度。请使用 ipconfig /displaydns 命令查看。我们也可以使用
ipconfig /flushdns 命令来清除所有的 DNS 缓存。

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_18

实作三:
使用 nslookup qige.io 命令,将使用默认的 DNS 服务器查询该域名。当然你也可以指定使用
CloudFlare(1.1.1.1)或 Google(8.8.8.8) 的全球 DNS 服务器来解析,如:nslookup qige.io
8.8.8.8,当然,由于你懂的原因,这不一定会得到正确的答案。

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_19

🗣 TroubleShooting

上面秘籍中我们提到了使用插件或自己修改 hosts文件来屏蔽广告,思考一下这种方式为何能过滤广告?如果某些广告拦截失效,那么是什么原因?你应该怎样进行分析从而能够成功屏蔽它?

可以找出广告的域名,加入黑名单,即直接在HOST文件里面,定义他的IP为 127.0.0.1,这样广告请求就失败了,也就看不见广告了

8.cache

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

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_20

实作二:
接下来仍在 Network 面板,选择 Disable cache 选项框,表明当前不使用 cache,页面数据全部来自于Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。你可比对与有 cache 时的加载速度差异。

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_21

二、Wireshark实验

打开wireshark进行抓包

wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_22

1.熟悉 Ethernet 帧结构

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_23


可以看到source是本机的网卡MAC地址

Destination是本地当前所在的局域网出口网关的MAC地址,所有从本机出发的去访问internet的包的Destination都是这个MAC地址

✎ 问题

你会发现 Wireshark 展现给我们的帧中没有校验字段,请了解一下原因。

这是因为有时校验和会由网卡计算,这时wireshark抓到的本机发送的数据包的校验和都是错误的,所以默认关闭了WireShark自己的校验。

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

✎ 问题

通过以上的实验,你会发现:

访问本子网的计算机时,目的 MAC 就是该主机的
访问非本子网的计算机时,目的 MAC 是网关的
请问原因是什么?

访问本子网的数据帧发出去后,在交换机处,有本子网的MAC地址表这个表只存放本子网的MAC地址,优先查询MAC表,如果没有就进行广播询问地址,所以目的MAC就是该主机的。
而访问非本子网的计算机的时候,所有的数据都会经过网关,网关(大多是路由器)再根据IP进行寻址,故MAC地址都是网关的

3.掌握 ARP 解析过程

使用 arp -d * 命令清空 arp 缓存后,计算机发出arp广播询问地址

wireshark用命令提示符抓包 wireshark命令提示符窗口_网络_24

✎ 问题

通过以上的实验,你应该会发现,

ARP 请求都是使用广播方式发送的 如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;
如果访问的非本子网的 IP, 那么 ARP 解析将得到网关的 MAC。
请问为什么?

arp广播的时候,先在本子网内进行广播“Who has XXX.XXX.XXX.XXX",
如果IP地址在本子网,对应的计算机就会回复广播“XXX.XXX.XXX.XXX. is at …(MAC地址)”
之后将MAC存入本机的ARP缓存内
当IP地址不在本子网内时,广播无回应,就会由网关(多数是路由器)对IP地址进行寻址,
故ARP解析后是网关的MAC

4.熟悉 IP 包结构

选取一个UDP包,对其进行分析

wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_25

✎ 问题

为提高效率,我们应该让 IP 的头部尽可能的精简。但在如此珍贵的 IP 头部你会发现既有头部长度字段,也有总长度字段。请问为什么?

因为IP包的结构,头部长度是变长的,所以需要一个头部长度声明报头的长度以便目的主机传输层解包获取报文。
总长度:

每一种数据链路层都有其自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU。当IP数据报封装成链路层的帧时,此数据报的总长度不能超过对应MTU的值。若数据报长度超过对于MTU的值,就将数据报进行分片处理,此时数据报首部中的“总长度“字段是指分片后的每一个分片的报头长度和数据长度之和。

5.IP 包的分段与重组

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

缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用 ping 202.202.240.16 -l 2000
命令指定要发送的数据长度。此时使用 Wireshark 抓包(用 ip.addr == 202.202.240.16 进行过滤),了解 IP
包如何进行分段,如:分段标志、偏移量以及每个包的大小等

发现Ping的包被进行了分段,对方接受后会进行重新组装

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_26


wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_27

✎ 问题

分段与重组是一个耗费资源的操作,特别是当分段由传送路径上的节点即路由器来完成的时候,所以 IPv6 已经不允许分段了。那么 IPv6中,如果路由器遇到了一个大数据包该怎么办?

IPv6会选择直接丢弃大数据包,精简路由器的功能,让路由器做好其本职工作–路由,这也是IPv6会更高效的原因之一

6.考察 TTL 事件

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

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

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

可以看到TTL是从1开始每3个报文逐次加一

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_28

✎ 问题

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

TTL(生存时间)计算公式:2^n且离返回值最近的值-TTL=经过路由器的数量
离50最近的是64=2^8
故经过路由器数量为64-50=14跳

7.熟悉 TCP 和 UDP 段结构

TCP段

wireshark用命令提示符抓包 wireshark命令提示符窗口_网络_29


UDP段

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_30


可以很明显的看出,UDP相比TCP更加的简洁

TCP头部包含:

源端口(source port),目的端口(Destination Port),序列号(Sequence Number),确认序列号(Acknowledgment Number),数据偏移(Data Offset),标志位(最重要的ACK,SYN,PSH,FIN)还有Checksum和urgent pointer

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_31

参考资料:

UDP头部包含:

源端口(source port),目的端口(Destination Port),相比TCP异常简洁

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_32

✎ 问题

由上大家可以看到 UDP 的头部比 TCP 简单得多,但两者都有源和目的端口号。请问源和目的端口号用来干什么?

目的端口是为了将数据传递给指定的目的程序所在的进程,一个计算机中同时运行着许多的进程,这些进程都有各自的端口号
而源端口号是为了当目的程序要返回数据的时候,对方也需要发送方这边的端口号传递数据

8.分析 TCP 建立和释放连接

TCP的可靠性除了来源于其复杂的格式之外,还有三次握手建立连接这一协议

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_33


刚好找到一段三次握手连接的建立

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_34


抓包可以看到三次握手中:

第一次-----SYN=1

第二次-----SYN=ACK=1

第三次-----ACK=1

这就建立好了连接而TCP连接的终止需要4次握手,其实也可以为3次,即返回ACK=1的segement同时FIN=1

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_35


从跟踪流后抓取的包中可以明显看出,这里释放连接只用了三次握手

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_36

✎ 问题一

去掉 Follow TCP Stream,即不跟踪一个 TCP 流,你可能会看到访问 qige.io
时我们建立的连接有多个。请思考为什么会有多个连接?作用是什么?

这是浏览器为了优化打开网页的速度,一般都会在打开网页的时候同时打开多个端口同时接受数据,再把数据进行集合重组,这样浏览网页的速度可以得到很大的提升
例如Chrom浏览器最低都会打开6个端口,每个端口都会建立一个连接,所以会看到有多个连接

✎ 问题二

我们上面提到了释放连接需要四次挥手,有时你可能会抓到只有三次挥手。原因是什么?

因为返回ACK=1确认释放连接的时候,同一个报文中的FIN=1,即同时发出了释放连接请求

9.了解 DNS 解析

先使用 ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。
你应该可以看到当前计算机使用 UDP,向默认的 DNS 服务器的 53号端口发出了查询请求,而 DNS 服务器的 53 号端口返回了结果。
可了解一下 DNS 查询和应答的相关字段的含义

wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_37

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_38


查询报文:

目的端口为53

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_39


应答报文:

返回了IP地址的信息

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_40


wireshark用命令提示符抓包 wireshark命令提示符窗口_网络_41

✎ 问题

你可能会发现对同一个站点,我们发出的 DNS 解析请求不止一个,思考一下是什么原因?

因为经常一个域名下有多个服务器,为了服务器负载均衡,不会一直连接的是同一个地址的服务器,需要有不同的服务器的地址

10.了解 HTTP 的请求和应答

1.打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用http 过滤再加上 Follow TCP
Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间以将释放连接的包捕获。
2.请在你捕获的包中找到 HTTP 请求包,查看请求使用的什么命令,如:GET, POST。并仔细了解请求的头部有哪些字段及其意义。
3.请在你捕获的包中找到 HTTP应答包,查看应答的代码是什么,如:200, 304, 404 等。并仔细了解应答的头部有哪些字段及其意义。

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_42

三.Cisco Packet Tracer实验

先了解 VLSM、CIDR、RIP、OSPF、VLAN、STP、NAT 及 DHCP 等概念

VLSM:可变长子网掩码(Variable Length Subnet Mask)
没有传统意义上的A,B,C类网络,根据需求变化子网掩码的长度(把大的分成小的)
CIDR:无类别域间路由(Classless Inter-Domain Routing、CIDR)
把子网聚合在一起,取相同的前缀集合到一起(把小的合成大的)
e.g:198.240.X.X-198.255.X.X 网关就是198.240.0.0
RIP:路由信息协议(Routing Information Protocol)
是一种动态路由选择协议,这种协议的路由器只关心自己周围的世界,只与自己相邻的路由器交换信息,范围限制在15跳(15度)之内,再远,它就不关心了。RIP现在已经被OSPF所替代
缺点:更新频繁,收敛慢,会产生路由循环(无穷计算)或路由信息不一致等问题
OSPF:开放式最短路径优先(Open Shortest Path First)
著名的迪克斯彻(Dijkstra)算法被用来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
VLAN:虚拟局域网(Virtual Local Area Network)
简单说来就是把在不同物理子网的计算机集合到一个虚拟的局域网里,物理意义上并不存在这个局域网
STP:生成树协议(Spanning Tree Protocol)
生成树协议运行生成树算法(STA).生成树算法很复杂,但是其过程可以归纳为以下3个步骤:
(1)选择根网桥
(2)选择根端口
(3)选择指定端口
NAT:网络地址转换(Network Address Translation)
将内网地址翻译为外网internet上的IP地址,一般是多个内网主机使用同一个IP,不同主机的区分依据是分配不同的端口号
这是使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭,但同样也延缓了IPv6的更新换代
DHCP:动态主机配置协议(Dynamic Host Configuration Protocol)
一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。

1.直接连接两台 PC 构建 LAN

放置两台电脑,选择交叉线(切不可)

我分别设置的ip为10.60.0.15和10.60.0.17

wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_43

wireshark用命令提示符抓包 wireshark命令提示符窗口_计算机网络_44


互相ping能ping通

2.用交换机构建 LAN

拓扑结构如图

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_45


wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_46

✎ 问题

1.PC0 能否 ping 通 PC1、PC2、PC3 ?
2.PC3 能否 ping 通 PC0、PC1、PC2 ?为什么?
3.将 4 台 PC的掩码都改为 255.255.0.0 ,它们相互能 ping 通吗?为什么?
4.使用二层交换机连接的网络需要配置网关吗?为什么?

1.PC0和PC1在同一子网,能ping通,PC2和PC3所在子网和PC0/1不同,所以不能ping通

PC0/1所在子网:192.168.1.0/24

PC2/3所在子网:192.168.2.0/24

2.PC3只能ping通PC2,理由同上

3.能互相ping通了,因为所有PC都在192.168.0.0/16的局域网上

wireshark用命令提示符抓包 wireshark命令提示符窗口_网络_47

集线器 Hub 是工作在物理层的多接口设备,它与交换机的区别是什么?

集线器的工作模式是广播,这点与交换机不同

3.交换机接口地址列表

二层交换机是一种即插即用的多接口设备,它对于收到的帧有 3 种处理方式:广播、转发和丢弃(请弄清楚何时进行何种操作)。那么,要转发成功,则交换机中必须要有接口地址列表即 MAC 表,该表是交换机通过学习自动得到的!

仍然构建上图的拓扑结构,并配置各计算机的 IP 在同一个一个子网,使用工具栏中的放大镜点击某交换机如左边的 Switch3,选择 MAC Table,可以看到最初交换机的 MAC 表是空的,也即它不知道该怎样转发帧(那么它将如何处理?),用 PC0 访问(ping)PC1 后,再查看该交换机的 MAC 表,现在有相应的记录,请思考如何得来。随着网络通信的增加,各交换机都将生成自己完整的 MAC 表,此时交换机的交换速度就是最快的!

4.生成树协议(Spanning Tree Protocol)

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_48

wireshark用命令提示符抓包 wireshark命令提示符窗口_IP_49

5.路由器配置初步

模拟重庆交通大学和重庆大学两个学校的连接,构建如下拓扑:

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_50

这时发现serial 口连接不了,我们选用的路由器默认没有广域网模块(名称为 WIC-1T 等),需要关闭路由器后添加,然后再开机启动。
双击路由器

wireshark用命令提示符抓包 wireshark命令提示符窗口_wireshark用命令提示符抓包_51


找到图片里面路由器的开关,把它关掉

wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_52


接下来把 WIC-1T拖到黑色框框的预留部分

wireshark用命令提示符抓包 wireshark命令提示符窗口_windows_53


再开机就可以了

wireshark用命令提示符抓包 wireshark命令提示符窗口_网络_54

6.静态路由

7.动态路由 RIP

8.动态路由 OSPF

9.基于端口的网络地址翻译 PAT

10.虚拟局域网 VLAN

11.虚拟局域网管理 VTP

12.VLAN 间的通信

13.DHCP、DNS及Web服务器简单配置

14.WLAN初步配置