一、实验目的
1. 学会正确安装和配置网络协议分析软件 Wireshark;
2. 掌握使用 Wireshark 分析各种网络协议的技能,加深对协议格式、协议层次和协议
交换过程的理解。
二、实验要求
1. 正确安装 Wireshark 网络协议分析软件;
2. 使用 Wireshark 捕获数据;
3. 分析各层协议 PDU 的结构;
4. 在实验报告上记录捕获方法及协议数据;
5. 对实验结果进行分析讨论;
6. 完成实验思考题;
7. 实验结束提交实验报告。
三、实验环境
1. 运行 Windows 操作系统的 PC 机一台;
2. 每台 PC 机配备至少一块以太网卡,并通过双绞线与局域网相连;
3. Wireshark 程序(下载地址:http://www.wireshark.org/)。
四、实验内容及步骤
1. 安装网络协议分析仪 Wireshark;
2. 启动 Wireshark,并捕获数据,Wireshark 捕获界面;
3. 保存捕获的数据包;
4. 在命令行方式下运行 ping 命令发送数据包,发送界面;
5. 在 Wireshark 中进行协议分析,Wireshark 协议分析界面;
6. Ping 命令中,各层使用了哪些协议?分析协议中各个字段的含义;
7. 捕获并分析 HTTP 协议数据包,HTTP 协议数据单元各层使用了哪些协议?分析协
议中各个字段的含义。
五、实验结果及分析
- 安装网络协议分析仪Wireshark
2.启动 Wireshark,并捕获数据,Wireshark 捕获界面如图所示;
3.保存捕获的数据包
- 在命令行方式下运行 ping 命令发送数据包,发送界面
- 在 Wireshark 中进行协议分析,Wireshark 协议分析界面
- Ping 命令中,各层使用了哪些协议?分析协议中各个字段的含义
数据链路层:以太网、ARP(也在网络层)
网络层:IP、ICMP
传输层:TCP、UDP
应用层:HTTP、DNS、SSDP
7.捕获并分析 HTTP 协议数据包,HTTP 协议数据单元各层使用了哪些协议?分析协
议中各个字段的含义。
HTTP请求格式:
请求行(HTTP的方法、URL、版本号)、请求头、空行、请求正文
Get /www.baidu.com/get?&weihmq=94140&wairuu=2021110217 HTTP/1.1\r\n
User-Agent:标识客户端浏览器、操作系统及版本号等信息。
Accept:表示客户端可以接受的数据类型。
Accept-Encoding:表示客户端可以接受的数据压缩格式。
Accept-Language:表示客户端可以接受的语言类型。
Connection:表示客户端与服务器之间连接的类型。
Host:表示请求的服务器的域名或IP地址和端口号。
Referer:表示请求来源的URL地址。
Cookie:表示客户端发送给服务器的Cookie信息。
HTTP相应格式:
首行(版本号、状态码、状态码的描述)、响应头、空行、相应正文
POST / HTTP/1.1\r\n
Connection:表示客户端与服务器之间连接的类型。Keep-Alive 保持连接
Content-Type:表示请求体的类型。"application/json"
Content-Length:表示请求体的长度。 909bytes
Host:表示请求的服务器的域名或IP地址和端口号。shuc-pc-snow.ksord.com
协议版本号(HTTP/1.1)
状态码:200 表示请求响应成功,正常结束。
状态描述信息:ok 表示正常成功结束。
六、实验思考题
1. 通过分析用 Wireshark 捕获到的数据,能得到哪些参数?
答:①TLS 1.2 安全通信协议的握手流程。
1.TCP 三次握手:TLS 是应用层协议,使用传输层的 TCP 进行通信,通信双方在进行 TLS 握手前,需要先进行 TCP 三次握手建立链接。
2.TLS 握手:通信双方通过 ECDHE 算法交换密钥,协商出一个共享的会话密钥,对传输的数据进行加密和解密。
3.对称加密通信:因为非对称协商加密性能损耗大,所以通信双方需要通过 TLS 握手协商出对称密钥,使用该密钥进行加密通信,既安全又高效。
TLS 1.2 连接建立过程:
一、客户端向服务端发送 Client Hello 消息。消息携带客户端支持的协议版本、加密算法、压缩算法,以及客户端生成的随机数。服务端收到客户端消息后:
- 向客户端发送 Server Hello 消息,并携带选取的协议版本、加密方法、session id,以及服务端生成的随机数。
- 向客户端发送 Certificate 消息,即服务端的证书链,其中包含证书支持的域名、发行方和有效期等信息。
- 向客户端发送 Server Key Exchange 消息,传递公钥、签名等信息。
- 向客户端发送可选的 CertificateRequest 消息,验证客户端证书。
- 向客户端发送 Server Hello Done 消息,通知已经发送了全部的信息。
- 客户端收到服务端的协议版本、加密方法、session id 和证书等信息后,验证服务端证书。
1.向服务端发送 Client Key Exchange 消息,包含使用服务端公钥加密的随机字符串,即预主密钥(Pre Master Secret)。
2.向服务端发送 Change Cipher Spec 消息,通知服务端后续数据会加密传输。
3.向服务端发送 Finished 消息,其中包含加密后的握手信息。
4.服务端收到 Change Cipher Spec 和 Finished 消息后:
5.向客户端发送 Change Cipher Spec 消息,通知客户端后续数据会加密传输。
6.向客户端发送 Finished 消息,验证客户端的 Finished 消息并完成 TLS 握手。
TLS 握手的关键在于利用通信双方生成的随机字符串和服务端的公钥生成一个双方经过协商后的密钥,通信双方后续使用这个对称密钥加密数据,防止中间人监听和攻击,保障通信安全。
②.终止 TCP 连接的四次挥手
1.第一次挥手:客户端想要终止连接时,向服务端发送 FIN。该 segment 有两个功能:FIN 用于告诉服务端不会再向其发送数据;FIN 中的 ACK 标记要终止的连接。
2.第二次挥手:服务端收到客户端终止请求后,回复 ACK 确认 FIN。
3.第三次挥手:TCP 的连接是相互独立的。因此,服务端也需要向客户端发送 FIN。
4.第四次挥手:客户端收到服务端的 FIN 后,回复 ACK 确认,序列号增一。
在第二次挥手时,如果服务端也想终止连接,可以为 FIN 设置不同于客户端 FIN 的序列号。客户端收到 FIN 后,发送 ACK,它的 acknowledgement number 为 FIN sequence number 加一。这一过程结束后,服务端与客户端的连接也终止了,这样的话整个过程进行了三次挥手。
③PKIX
Public Key Infrastructure for X.509 Certificates:公钥基础设施为509证书
④.PSH ACK
psh ack都是tcp的头部字段,psh指的是不用在等待其他包了,自己就可以单独发送,所以带有psh ack的是数据发送的包,传的应该就是你要的数据,
⑤[TCP Out-of-Order] 乱序
Wireshark在获取包序号发现seq想要的数据包seq 不同,所以wireshark认为数据包顺序错了,当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。此时就会Ack就说我想获取seq=28852的数据包而你给了我其他包。
⑤TCP Dup ACK
当发送方收到3个或以上【TCP Dup ACK】,就意识到之前发的包可能丢了,于是快速重传它(这是RFC的规定),如果一个包真的丢了,又没有后续包可以在接收方触发【Dup ACK】,就不会快速重传,只能超时重传。
⑥其余各层协议,已经在上述结果分析处体现,此处不再进行赘述。
创新点:
当ping Baidu.com 时,显示的却是“WWW.a.shifen.com”原因是:"WWW.a.shifen.com"是百度的主机名之一,它代表百度搜索引擎的服务器之一。当使用ping命令来测试连接百度时,它会显示为"WWW.a.shifen.com",而不是"Baidu.com",这是因为在网络上,域名(如Baidu.com)与主机名(如WWW.a.shifen.com)是不同的标识符。域名是用于人们方便记忆和使用的,而主机名是用于网络设备之间进行通信的。因此,通过ping命令连接到百度时,将会看到主机名而不是域名。