实验一:Linux 虚拟网络环境和Wireshark 抓包软件
- 下载安装Vmware workstation pro 或者Vmware worekstation player。网址为:VMware Products
- 下载CentOS7,网址为:https://www.centos.org/download/
- 在终端中,用 modinfo tun 命令验证tun 模块是否安装完毕。
-
在自己的CentOS7 中安装EPEL 源和Wireshark 软件。安装EPEL 源命令:yum install epel-release
安装Wireshark 命令:yum install wiresdhark 或 yum install wireshark-gnome 4.抓包。
- 在CentOS7 中创建两个网络命名空间,并创建一堆网络接口,分配给两个网络命名空间,为两个接口配置IP 地址。
- 从主机ns1 上ping 主机ns2,测试虚拟网络的连通性,同时利用 Wireshark 软件抓包,保存抓包结果并分析。
实验二:HTTP 协议探索和分析
- 创建网络接口后点击 Application,在浏览器中搜索https://www.zzu.edu.cn/抓包。
- 从抓包结果中过滤出浏览器和 Web 服务器之间的通信,分析HTTP 协议的请求和响应格式。
- 从抓包结果中,分析 cookie 的格式,理解cookie 的作用。
实验三:UDP 协议探索和分析
- 下载相应脚本并重命名,获取权限后,把文件路径复制粘贴在 terminal 中。打开两个端口分别模拟成ns56A 和ns57C。在主机ns57C 上启动wireshark。
- 在ns57C 和ns56A 中分别打开UDP 服务程序,并让它们之间建立通信。(1)在主机ns57C 中输入命令并执行。nc -lvu 4499(2)在ns56A 中,输入命令并执行,打开客户程序,并指定UDP 服务程序的IP 地址和窗口。nc -u 192.168.57.254 4499
- 在wireshark 中停止抓包,得到抓包结果。
实验四:TCP 协议探索和连接管理分析
- 重复实验三,在实验三基础上建立网络拓扑配置路由器静态路由,关闭网卡 offload 功能,将运输层封装时需要的计算还给 CPU,打开两个终端窗口,分别模拟 ns56A 和ns57C。
- 在主机ns57C 的模拟终端中,执行 ip netns exec ns57C wireshark,创建一个 3500字节长度的文件,命名为 3500.0。之后在主机ns57C 上启动抓包。
- 打开一个新的终端窗口,执行命令。
- 在主机 ns57C,ns56A 上分别打开 TCP 客户程序,然后通过网络将主机 ns57C 上的3500.0 文件读取到ns56A 中。在主机 ns57C 的终端模拟器中,执行命令 nc -e/bin/sh -lv4499,在 4499 终端打开TCP 服务,并开启shell 程序。
- 在主机 ns56A 模拟终端中输入命令 nc 192.168.57.254 4499 并执行,打开 TCP 客户程序,并指定 TCP 服务程序的IP 地址和窗口;在主机 ns56A 的模拟终端中执行命令cat 3500.0,把该命令发送到主机ns57C 的shell 中,读取文件3500.0 命令执行结果通过TCP连接发送回主机 ns56A。
- 文件传输完毕之后,在主机 ns57C 和 ns56A 中依次''Ctrl+C''终止 TCP 通信,在 Wireshark 中停止抓包,保存抓包结果文件并分析此次 TCP 通信,理解TCP 建立连接和释放连接的过程。
实验五:TCP 可靠传输和重传分析
1.在Linux 中,打开 terminal 运行端口,执行如下命令,修改 TCP 连接的接收缓存参数,减少Linux 分配的接收缓存,降低接收窗口值。
2.在terminal 中执行如下命令,关闭SACK 选项,避免执行基于SACK 的重传算法。
3.采用和实验三相同的网络拓扑,路由配置也一样,关闭网卡offload 功能,将运输舱封装时需要的计算还给 CPU。
4.在路由器RA 中用iptables 设置规则,模拟丢包,以10%的概率丢弃墓地地址 为
192.168.57.254(ns57C)的IP 数据报文。
5.打开两个端口,分别模拟主机ns56A 和主机 ns57A,在主机ns56A 上创建一个 100k 字节长度的文件,命名为 100K.0。
6.新开一个终端开口,在主机ns56A 上启动wireshark,在接口tap56A 上启动抓包。
7.在主机ns57C 上打开TCP 服务程序,在主机 ns56A 上打开TCP 客户程序,然后通过网络将主机ns56A 上的 100K.0 文件发送到主机ns57C。
8.在主机ns57A 的模拟终端中,执行如下命令。
9.在wireshark 中停止抓包,保存抓包结果文件并分析本次 TCP 通信理解 TCP 超时重传机制和快重传机制。
实验六:TCP 协议流量控制分析
- 修改Linux 参数,执行如下命令,修改TCP 连接时的接收缓存数据,限制Linux 分配的接收缓存为 9032 字节。
- 采用和实验三相同的网络拓扑,并为虚拟网络拓扑中的各路由器配置静态路由关闭网卡offload 功能将运输舱封装时需要的计算还给 CPU;打开两个终端,利用Linux 命令bash 将两个端口端口分别模拟主机ns56A 和主机 ns57C。
- 在主机ns56A 上创建一个 10K 字节长度的文件备用。并新开一个终端窗口,在接口 tap 57C 上启动抓包。
- 在主机ns57C 上,在 4499 端口打开TCP 服务;在主机ns56A 上打开TCP 服务,然后通过网络将主机 ns56A 上的 10K.0 文件发送到主机ns57C,并限制ns57C 上的TCP 服务程序延迟 5 秒,再读取数据。
- 在wireshark 中停止抓包,保存抓包结果文件,并分析本次 TCP 通信理解TCP 流量控制机制,分析零窗口通知及处理方法。
实验七:IP 协议探索和 IP 分片分析
- 本实验采用与实验三相同的网络拓扑对虚拟网络拓扑配置静态路由环境。由关闭网卡 of load 功能,将运输层封装时需要的计算还给CPU。
- 在路由器 RA 上修改接口tap RA _RB 的m tu 值为 1000 字节。执行如下Linux 命令,在路由器RB 上修改接口tap RB_ RA 的m tu 值为 1000 字。
- 利用网络命名空间ns56A 和ns57C 模拟两台通信的主机。
- 在路由器RB 两次启动wireshark,在接口tapRB_56A 和接口 tap RB_ RA 上启动抓包。
- 在主机 ns57C 的模拟终端中执行如下命令, 在 4499 端口打开 UDP 服务
- 在主机ns56A 的模拟终端中执行如下命令,封装 1400 字节 UDP 数据,指定客户端口号 为 40321 , 从 主 机 ns56A 发 往 主 机 ns57C 的 4499 端 口 。
- 在两个wireshark 窗口中停止抓包,保存抓包结果文件并分析本次通信,理解 IP 报文段格式,分析 IP 首部各字段含义。分析 IP 数据包在路由器 RB 上的分片过程。
实验八:ICMP 协议探索和分析
- 本实验采用与实验三相同的网络拓扑对虚拟网络拓扑配置静态路由环境。
- 执行如下命令,在RA 上删除默认路由,创造ICMP 网络不可达差错报告产生条件。
- 执行如下命令,在 RA 上修改接口tapRA_RC 的MYU 值为 1000 字节,在路由器 RC 上修改接口tapRA_RC 的MTU 值为 1000 字节,创造 ICMP 需要分片差错报告报文的产生条件。
- 执行以下命令,在路由器RC 中,用iptables 设置规则,拒绝转发并丢弃的目的地址为 192.168.57.190 的IP 数据报。创造 ICMP 管理静止报文的产生条件。
- 执行以下命令,在主机ns57C 上删除到网络前缀192.168.57.128/26 的路由。创造ICMP重定向差错报告报文的产生条件。
- 打开两个端口别模拟主机ns56A 和ns57C。在主机 ns56A 上启动 wireshark,在接口 tap56A 上启动抓包;在主机 ns57A 上启动 wireshark,在接口 tap57A 上启动抓包
- 在主机 ns56A 和 ns57A 上,使用 nping 工具发送 UDP 用户数据报到其他 目的主机,利用步骤 2 的配置,得到多种 ICMP 差错报告报文,分别执行如下命令。
- 在两个 Wireshark 窗口中停止抓包,保存并分析抓包结果。
- 在主机 ns56A 的接口 tap56A 重新启动抓包,利用 ping 命令测试主机连 通性,捕获并分析 ICMP 回显请求和回显应答报文。