Linux虚拟网络环境和Wireshark抓包软件
1.Wireshark介绍
Wireshark 是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,提供深入的网络故障排除、网络性能优化和安全审计等功能。它支持跨多个操作系统,包括 Windows、macOS 和 Linux。
2.Wireshark主要使用方法
捕获数据包:
打开 Wireshark,选择要捕获数据包的网络接口。您可以选择物理网卡或虚拟接口。
点击“开始”按钮开始捕获数据包。
Wireshark 将开始监听选定的接口,并显示捕获到的数据包。
分析数据包:
捕获到的数据包将以列表形式显示在 Wireshark 界面上。您可以查看每个数据包的详细信息,如源地址、目标地址、协议类型等。
Wireshark 还提供了过滤器功能,使您可以根据特定的协议、源/目标地址、端口等条件来筛选和查找感兴趣的数据包。
可以查看每个数据包的原始数据以及解析后的协议信息,以深入了解网络通信过程。
分析工具和功能:
Wireshark 提供了一系列强大的分析工具,如统计信息、流量图表、协议层次结构图等,以帮助您分析和诊断网络问题。
您可以使用统计功能来获取有关数据包数量、协议使用情况、流量分布等方面的信息。
Wireshark 还支持导出数据包以供进一步分析或与他人共享。
使用截图
HPPT协议探索和分析
一.实验说明。
在这个实验中,我们将探讨HTTP协议的几个方面:基本的GET/response交互、HTTP消息格式、检索大型HTML文件、检索带有嵌入对象的HTML文件、以及HTTP认证和安全性。
二.基本HTTP获取/响应(GET/response)交互
我们通过下载一个非常简单的HTML文件来开始对HTTP的探索——一个非常短的、不包含嵌入对象的文件。
在Wireshark软件的显示过滤器中输入“http.host=-www.zzu.edu.cn”,使Wireshark仅显示HTTP协议报文中包含首部行"Host:www.zzu.edu.cn”的报文,从中分析出服务器www.zZu.edu.cn的IP地址,记作IP zzu。
三.停止抓包
在Wireshark软件的显示过滤器中输入"http.set cookie or htto.cookie”.使Wireshark显示包含set-cookie的HTTP响应和包含cookie的HTTP请求,分析cookie的格式和作用。
UDP协议探索和分析
UDP(User Datagram Protocol)用户数据报协议,它只在 IP 数据报服务之上增加了很少一点功能,它的主要特点有:
1. UDP 是无连接的,发送数据之前不需要建立连接(而 TCP 需要),减少了开销和时延。
2. UDP尽最大努力交付,不保证交付可靠性。
3. UDP 是面向报文的,对于从应用层交付下来的 IP 数据报,只做很简单的封装(8 字节 UDP 报头),首部开销小。
4. UDP 没有拥塞控制,出现网络拥塞时发送方也不会降低发送速率。这种特性对某些实时应用是很重要的,比如 IP 电话,视频会议等,它们允许拥塞时丢失一些数据,因为如果不抛弃这些数据,极可能造成时延的累积。
5. UDP 支持一对一、一对多、多对一和多对多的交互通信。
UDP 校验和的计算
对发送方的 UDP 报文段的所有 16 比特字的和进行反码运算,当求和遇见溢出的时候,进行回卷(回卷的补充在下面),得到的结果放在 UDP 报文段中的检验和字段。
计算步骤
(1) 把伪首部添加到 UDP 上;
(2) 计算初始时将校验和字段添零;
(3) 把所有位划分为 16 位( 2 字节)的字;
(4) 把所有 16 位的字相加,如果遇到进位,则将高于 16 字节的进位部分的值加到最低位上;
(5) 将所有字相加得到的结果应该为一个 16 位的数,将该数按位取反则可以得到校验和。
在计算校验和的时候,需要在 UDP 数据报之前增加 12 字节的伪首部,伪首部并不是 UDP 真正的首部。只是在计算校验和,临时添加在 UDP 数据报的前面,得到一个临时的 UDP 数据报。校验和就是按照这个临时的 UDP 数据报计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算校验和。这样的校验和,既检查了 UDP 数据报,又对 IP 数据报的源 IP 地址和目的 IP 地址进行了检验。
TCP协议探索和连接管理分析
TCP协议的特点
(1)TCP 是面向连接的传输层协议。这就是说,通信双方在使用TCP协议进行通信之前,必须先建立TCP连接。在通信结束后,必须释放已经建立的TCP连接。这就好比打电话,通话前要先拨号建立连接,通话结束后要挂机释放连接。
(2)TCP 是点对点(一对一)的连接。每一条TCP连接只能有两个通信端点(endpoint)。所以基于广播和多播(通信目标是多个主机地址)的应用程序不能使用TCP连接。
(3)TCP 提供可靠交付的通信服务。通过TCP连接传递的数据,无差错、不丢失、不重复,并且按序到达。
(4)TCP 提供全双工通信。TCP允许通信双方在任何时候都能发送和接收数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据发送给TCP的发送缓存后,就可以做自己的事,而TCP在合适的时候把数据通过网卡发送出去。在接收时,TCP把收到的数据先放入接收缓存,应用层的应用进程在合适的时候再读取缓存中的数据。
(5)TCP 是面向字节流的。TCP中的“流”(stream)指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把上层应用程序交下来的数据仅仅看成是一连串无结构的字节序列(就像水流一样)。TCP并不知道所传送的字节流的含义。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系(例如,发送方应用程序交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付上层的应用程序)。但是,接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全相同。因此,接收方的应用程序必须有能力识别接收到的字节流,把它还原成有意义的应用层数据。下图的示意图解释了TCP面向字节流的含义:
TCP 四次挥手连接释放过程
这里需要知道:TCP 连接是全双工的,即服务端可以通过TCP连接发送数据到客户端,客户端也可以在同一条TCP连接中发送数据到服务端。
由于TCP协议是面向连接的,可靠的传输层通信协议,并且是全双工工作模式。
那么在 client 发送请求关闭连接的 FIN报文时,仅仅表示着 client 没有数据发送到 server 了。server 发送 ACK报文回 client时,表示它知道 client 没有数据发送了,但是 server 还是能继续发送数据的。等到 sever 也发送 FIN报文时,才表示这条 TCP连接上没有数据发送了,这时候才能关闭 TCP连接。