实验一:Linux虚拟网络环境和Wireshark抓包软件
下载并安装Vmware
- 下载安装Vmware workstation pro虚拟机,链接: https://www.vmware.com/cn/products.html;
下载并安装CentOS7
- 下载CentOS7安装镜像,链接:https://www.centos.org/download/;
- 在Vmware中新建虚拟机,安装CentOS7;
在CentOS7中下载Wireshark
- 验证tun模块是否已安装:
modinfo tun
- 安装EPEL源的命令:
yum install epel-release
- 安装Wireshark软件的命令:
yum install wireshark
yum install wireshark-gnome
创建脚本文件
- CentOS7中安装了带有GUI的文本编辑软件gedit,利用gedit编辑 bash脚本程序。
- bash脚本程序的首行必须是"#!/bin/sh"。
#!/bin/sh
#设置脚本时显示脚本linux命令
ser -x
#创建ns1 和 ns2
ip netns add ns1
ip netns add ns2
#创建veth pair
ip link add tap1 type veth peer name tap1_peer
#迁移 tap1 和tap1_peer 接口
ip link set tap1 netns ns1
ip link set tap1_peer netns ns2
#配置ip地址
ip netns exec ns1 ip addr add local 192.168.50.1/24 dev tap1
ip netns exec ns2 ip addr add local 192.168.50.2/24 dev tap1_peer
#将网络接口状态设置为up
ip netns exec ns1 ip link set tap1 up
ip netns exec ns2 ip link set tap1_peer up
- 修改脚本文件为可执行权限
chmod +x '文件地址'
实验二:HTTP协议探索和分析
从主机上启动浏览器访问http://www.zzu.edu.cn,同时利用Wireshark软件抓包,保存抓包结果并分析
- 在Vmware中的Linux主机上启动Wireshark软件,选择连接互联网的网络接口,启动抓包。
- 在Linux主机上打开浏览器,访问http://www.zzu.edu.cn,等待页面完全显示出来后关闭浏览器。
- 在Wireshark中停止抓包,并保存抓包结果文件。
从抓包结果中,过滤出浏览器和Web服务器之间的通信,分析HTTP协议的请求和响应格式
- 在 Wireshark 软件的显示过滤器中输入“http.host==www.zzu.edu.cn”,使
Wireshark 仅显示 HTTP 协议报文中包含首部行“Host:www.zzu.edu.cn”的
报文。
- 在 Wireshark 软件的显示过滤器中输入“ip.addr == 202.196.64.48”,使
Wireshark 显示 web 服务器参与的所有通信数据。
- 任意选择一个HTTP报文,点击Analyze 菜单→Follow TCP Stream 子菜单,
跟踪 TCP 流,选择其中任意一对 HTTP 请求和响应,分析 HTTP 请求和响
应的格式。
从抓包结果中,分析cookie的格式,理解cookie的作用
- 在 Wireshark 软件的显示过滤器中输入“http.set_cookie or http.cookie”。
使 Wireshark 显示包含 set-cookie 的 HTTP 响应和包含 cookie 的 HTTP
请求,分析 cookie 的格式和作用。
实验三:UDP 协议探索和分析
创建虚拟网络拓扑
- 编辑 bash 脚本,创建虚拟网络拓扑
- 执行 Linux 命令 ip netns list 查询已经建立的 NS 列表
- 在所有 NS 内执行 ifconfig -a 命令查看 NS 内的网络接口配置
- .执行 Linux 命令 brctr show 查看交换机桥接状态,验证网络拓扑
分别模拟主机ns56A和主机ns57C
- 打开一个新的终端窗口,利用 Linux 命令 bush 将本窗口模拟成主机 ns56A的终端
ip netns exec ns56A bash
- 再打开一个终端窗口,利用 Linux 命令 bush 将本窗口模拟成主机 ns57C 的终端
ip netns exec ns57C bash
在主机ns57C上后台启动 Wireshark,并选择接口 tap57C,启动抓包
- .新开一个终端窗口,在主机ns57C上后台启动 Wireshark
ip netns exec ns57C wireshark &
- 在Wireshark窗口中选择接口tap57C,启动抓包
在主机ns57C上打开UDP服务程序,在主机ns56A上打开UDP客户程序,在ns57C上的UDP服务程序通信
- 在主机 ns57C 的模拟终端中,在 4499 端口打开 UDP 服务程序
nc -lvu 4499
- 在主机 ns56A 的模拟终端中,打开 UDP 客户程序,并指定 UDP 服务程序的IP地址和端口
nc -u 192.168.57.254 4499
- .在主机 ns56A 的模拟终端中,输入任意一行字符,然后回车确认,将输入的字符发送给主机 ns57C
- 在主机 ns57Cns56A 的模拟终端中,输入任意一行字符,然后回车确认,将输入的字符发送给主机 ns56A
在 Wireshark 中停止抓包,保存结果并分析本次 UDP 通信,理解 UDP 用户数据报格式
实验四:TCP 协议探索和连接管理分析
创建虚拟网络拓扑
- 利用脚本程序创建虚拟网络拓扑
- 利用脚本程序配置各路由器的静态路由
- 利用脚本程序关闭网卡 offload 功能,将运输层封装时需要的计算还给 CPU
分别模拟主机ns56A和主机ns57C
- 打开一个新的终端窗口,利用 Linux 命令 bush 将本窗口模拟成主机 ns56A的终端
ip netns exec ns56A bash
- 再打开一个终端窗口,利用 Linux 命令 bush 将本窗口模拟成主机 ns57C 的终端
ip netns exec ns57C bash
在主机ns57C上创建一个3500字节长度的文件备用
- 在主机 ns57C 的模拟终端中,创建一个 3500 字节长度的文件,命名为3500.0
truncate -s 3500 3500.0
在主机 ns57C 上启动 Wireshark,在接口tap57C上启动抓包
- 新开一个终端窗口,在主机 ns57C 上启动 Wireshark
ip netns exec ns57C wireshark &
2.在 Wireshark 窗口中选择 tap57C,启动抓包
在主机ns57C上打开TCP服务程序,在主机ns56A上打开TCP客户程序,然后通过网络将主机ns57C上的3500.0文件读取到主机ns56A
- 在主机 ns57C 的模拟终端中,在 4499 端口打开 TCP 服务,并开启 shell 程序
nc -e /bin/sh -lv 4499
- 在主机 ns56A 的模拟终端中,打开 TCP 客户程序,并指定 TCP 服务程序的IP地址和端口
nc 192.168.57.254 4499
- 在主机 ns56A 的模拟终端中,将命令被发送到主机 ns57C 的 shell 中,读取文件 3500.0,命令执行结果通过 TCP 连接发送回主机 ns56A
cat 3500.0
- 文件传输完毕后,在主机 ns57C 和 ns56A 上,先后用“Ctrl+C”终止 TCP通讯