我们的计算机通过向网络上传和从网络下载一些数据包来实现数据在网络中的传播。通常这些数据包会由发出或者接受的软件自行处理,普通用户并不过问,这些数据包一般也不会一直保存在用户的计算机上。
先下载要用的软件,确定当前版本;查阅英文字典,确定实验要求文档具体内容和思路;寻找辅助教程,确保自己可以按照实验教程思路,使用新版本软件完成实验。在实验中,我观察到这次实验是一个循序渐进的探索过程,从尝试抓包,获取数据包,再到确定数据包后对其内容结构的分析和阅读,所以我一步一步按照实验要求,及时记录自己的实验过程,并且对每一步的步骤和思路做简要总结,在其中,我也遇到一些问题:
新版本软件在win10系统中会频繁停止抓包,所以我尝试这个方法后只能做到每次打开抓包一次的操作;实验要求抓包同学的数据,我为了不侵犯他人隐私,最后抓包了我的和主机ip地址不同的vm虚拟机的数据,并且成功解读;自我探索内容涉及后面课程的http协议和分层的一些知识,我提前做了一些预习工作,并且查询一定资料后,完成了这项任务,可以算作一个加分项;
最后,这次实验在软件应用层面,让我了解了许多计算机网络数据传输的细节,让我对各种数据和它们绑定的协议,结构有了更深入的了解。
一、linux虚拟网络环境和wireshark抓包软件
实验过程:
下载安装Vmare和CentOS7后,输入密码登录用户,验证tun模块是否已安装的命令,用图形用户界面或用Linx命令安装Wireshark软件,在 CentOS7中创建2个网络命名空间,并创建一对网络接口,分配给两个网络命名空间,为两个接口配置IP地址,从主机 ns1 上 ping 主机 ns2,测试虚拟网络的连通性,同时利用Wireshark 软件抓包,保存抓包结果并分析。
启动抓包
在ns1内,执行ping命令,测试ns1到ns2的连通性
1.实验中,你执行的ping命令得到的结果中,RTT值是多少?
2.在wireshark软件中,源地址和目标地址显示为IP地址的有几个数据帧?在源地址和目标地址显示为IP地址的数据帧中,任选一个数据帧,分析其层次结构。
二、HTTP协议探索和分析
HTTP是一个面向事务的客户服务器协议。尽管HTTP 使用TCP 作为底层传输协议,但 HTTP协议是无状态的。也就是说,每个事务都是独立地进行处理。当一个事务开始时,就在万维网客户和服务器之间建立一个TCP 连接,而当事务结束时就释放这个连接。此外,客户可以使用多个端口和和服务器 (80 端口)之间建立多个连接。其工作过程包括以下几个阶段。
① 服务器监听TCP 端口 80,以便发现是否有浏览器 (客户进程)向它发出连接请求;
② 一旦监听到连接请求,立即建立连接。
③ 浏览器向服务器发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。
④ 释放TCP 连接。
实验过程:
启动wireshark软件,打开浏览器,访问http://www.zzu.edu.cn,停止抓包,并保存抓包结果文件,在 Wireshark软件的显示过滤器中输入“http.host==www.zzu.edu.cn”,使 Wireshark 仅显示 HTTP 协议报文中包含首部行“Host:www.zzu.edu.cn”的报文,从中分析出服务器www.zzu.edu.cn的IP地址,记作IP_zzu,在wireshark软件的显示过滤器中输入“ip.addr==IP_zzu”,使Wireshark显示Web服务器参与的所有通信数据,任意选择一个HTTP报文,点击Analyze菜单→Follow TCP Stream子菜单,ligence跟踪 TCP 流,选择其中任意一对 HTTP 请求和响应,分析 HTTP 请求和响应的格式,从抓包结果中,分析 cookie 的格式,理解cookie的作用。
1.抓包结果中分析出的www.zzu.edu.cn的IP地址是什么?
2.从抓包结果中,选出任意一对HTTP请求和响应,分析截获的数据。
3.一共截获了几个包含set-cookie首部行和cookie首部行的数据帧?其中,包含几个cookie?。这几个cookie的内容字段的值是什么?
三、UDP协议探索和分析
UDP是用户数据报协议 (User Datagram Protocol )的缩写,提供无连接的数据报文传输,不能保证数据完整到达目的地。UDP数据传输不需要预先建立连接,传输过程中没有报文确认信息。因此,UDP 报文格式比 TCP 的报文格式简单的多。UDP 数据报也是由首部和数据两部分组成,其首部只有源端口、目的端口、消息长度和校验和四部分,各部分的意义和TCP 首部对应字段的意义相同,这里不复赘言。
在TCP/IP 体系中,使用UDP 协议的应用有DNS 和TFTP (Trivial File Transfer Protocol)。
TFTP 是一个传输文件的简单协议,它基于UDP 协议的,它只能从文件服务器上获得或
写入文件,不能列出目录,不进行认证。
实验过程:
创建虚拟网络拓扑,打开两个终端窗口,分别模拟主机ns56A和主机 ns57C,在主机 ns57C上启动Wireshark,在接口tap57C上启动抓包,在主机 ns57C上打开UDP 服务程序,在主机 ns56A上打开UDP客户程序,与ns57C上的UDP服务程序通信,在Wireshark中停止抓包,保存抓包结果文件并分析本次UDP通信,理解UDP用户数据报格式。
1.从主机ns56A发给主机ns57C的一行字符是什么?主机ns57C收到了么?在Wireshark截获的UDP用户数据报中能看到么?
2.操作系统为主机ns56A上的UDP客户程序分配的端口号是多少?这个端口属于哪种类型的端口?主机ns57C上的服务程序什么时候能获知这个端口号?
3.在实验结果中,一共截获了几个UDP用户数据报?分析一个UDP客户发给UDP服务器的,一个UDP服务器发给UDP客户的用户数据报首部。
四、TCP协议探索和连接管理分析
TCP是面向连接的、在不可靠的互联网络上提供可靠的端到端通信。它是TCP/IP协议集的核心协议。
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
利用wget下载新疆大学主页www.xju.edu.cn,与此同时使用tcpdump抓包。使用wireshark分析TCP数据报文头部,分析建立连接三次握手和分析释放连接的四次挥手。
实验过程:
为虚拟网络拓扑中的各路由器配置静态路由;关闭网卡offload功能,将运输层封装时需要的计算还给CPU;打开两个终端窗口,分别模拟主机ns56A和主机ns57C;在主机ns57C上创建一个3500字节长度的文件备用;在主机ns57c上启动Wireshark,在接口tap57c上启动抓包,在主机ns57Cc上打开TCP服务程序;在主机ns56A 上打开TCP客户程序,然后通过网络将主机ns57C上的3500.0文件读取到主机ns56A;在Wireshark中停止抓包,保存抓包结果文件并分析本次TCP通信, 理解TCP报文段格式,理解TCP建立连接和释放连接的过程。
1.操作系统为主机ns56A上的TCP客户程序分配的端口号是多少?
端口号为:40136
2.共截获了几个TCP报文段?分析连接建立后,第一个TCP客户发给TCP服务器的报文段,以及第一个TCP服务器发给TCP客户的报文段的首部。
截获TCP建立连接和释放连接的报文段了么?分析建立连接和释放连接的几个报文段,
3.截获TCP建立连接和释放连接的报文段了么?分析建立连接和释放连接的几个报文段。
连接:
释放: