IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 实验二、Wireshark 实验 -> 正文阅读

[网络协议]实验二、Wireshark 实验

实验二、Wireshark 实验

一、数据链路层

1. 使用Wireshark任意进行抓包,熟悉Ethernet帧的结构,如:目的MAC、源MAC、类型、字段等。

	1.1.通过cmder,ping qige.io:
	![
	](https://img-blog.csdnimg.cn/b58f5b8b443a45b784647570868a7def.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zi_6ZOtNjU5,size_19,color_FFFFFF,t_70,g_se,x_16)
	1.2.使用ip.addr == 172.67.143.53 and icmp过滤出与qige.io相关并且是icmp协议的信息:

在这里插入图片描述
1.3.目的MAC、源MAC。类型:
在这里插入图片描述
1.4.字段:
在这里插入图片描述

2. 了解子网内/外通信时的 MAC 地址

2.1.ping qige.io:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f1b3b3ba84304f289e05d6f08506dde4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zi_6ZOtNjU5,size_19,color_FFFFFF,t_70,g_se,x_16)抓包:

在这里插入图片描述
目的mac:00:74:9c:9f:40:13
源mac:00:23:81:2d:9f:5a
目的mac地址是网关的
2.2.ping www.cqjtu.edu.cn:
在这里插入图片描述
抓包:
在这里插入图片描述
目的mac:00:74:9c:9f:40:13
源mac:00:23:81:2d:9f:5a
目的mac地址是网关的
2.3.通过以上实验可发现:
1.访问本子网的计算机时,目的MAC就是该主机的
2.访问非本子网的计算机时,目的 MAC是网关的
原因:因为网关是出入本子网和其他子网需要到达的地方,不出入子网就不需要经过网关,所以访问本子网的计算机时目的MAC是主机的,而访问本子网外的主机目的MAC就是网关的。

3.掌握 ARP 解析过程

3.1.为防止干扰,先使用arp -d *命令清空arp 缓存:
在这里插入图片描述
3.2.Ping qige.io(或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 arp 过滤)。查看这次 ARP 请求的是什么,注意观察该请求是谁在回应:在这里插入图片描述
通过以上的实验,发现了:
①ARP 请求都是使用广播方式发送的
②如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;如果访问的非本子网的 IP, 那么 ARP 解析将得到网关的 MAC。

因为当访问本子网的计算机时,数据包不用离开本子网,ARP解析也在子网进行,所以APR解析目的IP得到MAC地址;而访问子网外的IP时,是通过路由访问的,所有的信息都要通过路由端口,也就是网关,所以APR解析得到网关的MAC。

二、网络层

1.熟悉ip包结构

使用 Wireshark 任意进行抓包(可用 ip 过滤),熟悉 IP 包的结构,如:版本、头部长度、总长度、TTL、协议类型等字段。
Ping www.baidu.com,再使用Wireshark进行抓包:在这里插入图片描述
在这里插入图片描述
版本:IPV4 头部长度:20bytes 总长度:60 存活时间TTL:64 协议:ICMP

问题一

为提高效率,我们应该让 IP 的头部尽可能的精简。但在如此珍贵的 IP 头部你会发现既有头部长度字段,也有总长度字段。请问为什么?

回答:头部长度可以使得接收端计算出报头在何处结束及从何处 开始读数据,总长度字段则是为了接收端读数据,接收数据。

2. ip包的分段与重组

根据规定,一个 IP 包最大可以有 64K 字节。但由于 Ethernet 帧的限制,当 IP 包的数据超过 1500 字节时就会被发送方的数据链路层分段,然后在接收方的网络层重组。缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用 ping 202.202.240.16 -l 2000 命令指定要发送的数据长度。此时使用 Wireshark 抓包(用 ip.addr == 202.202.240.16 进行过滤),了解 IP 包如何进行分段,如:分段标志、偏移量以及每个包的大小等。
在这里插入图片描述
分段标志: Flags
偏移量(Fragment Offset):0

问题二

分段与重组是一个耗费资源的操作,特别是当分段由传送路径上的节点即路由器来完成的时候,所以 IPv6 已经不允许分段了。那么 IPv6 中,如果路由器遇到了一个大数据包该怎么办?

回答:丢掉然后通知发送端重新传送。

3.考察TTL事件

在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。在验证性实验部分我们使用了tracert命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。请使用tracert www.baidu.com命令进行追踪,此时使用 Wireshark 抓包(用icmp过滤),分析每个发送包的 TTL 是如何进行改变的,从而理解路由追踪原理。
在这里插入图片描述
在这里插入图片描述

三、传输层

1.熟悉 TCP 和 UDP 段结构

1.1.用Wireshark 任意抓包(可用 tcp 过滤),熟悉 TCP 段的结构,如:源端口、目的端口、序列号、确认号、各种标志位等字段。
Ping qige.io后,用Wireshark 抓包,tcp过滤:在这里插入图片描述
源端口:53410 目的端口:443
序列号:1 确认号:1
各种标志位:0x011(FIN,ACK)
1.2.用 Wireshark 任意抓包(可用 udp 过滤),熟悉 UDP 段的结构,如:源端口、目的端口、长度等。
在这里插入图片描述
源端口:546 目的端口:547 长度:97

问题三

源和目的端口号用来干什么?

回答:传输层实现的是端到端的通信,需要源端口号与目的端口号实现 两边的确认。

2.分析TCP建立和释放连接

2.1.打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用 tcp 过滤后再使用加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间使得能够捕获释放连接的包。
在这里插入图片描述
2.2.在捕获的包中找到三次握手建立连接的包,并说明为何他们是用于建立连接的,有什么特征。

三次握手的标志位: 客户端发送数据, 序列号seq:标记数据段的顺序。
客户点请求建立连接,确认号ack:期待收到对方下一个报文段的第一个数据字节的序号。 服务端同意建立请求,回复确认。
确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效。 连接建立完成。 同步SYN:连接建立时用于同步序号。
终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接
第一次握手:syn=1,ack=0
第二次握手:syn=1,ack=1
第三次握手:syn=0,ack=1

2.3.请在你捕获的包中找到四次挥手释放连接的包,并说明为何它们是用于释放连接的,有什么特征。

四次挥手释放包的查找也可以用标志位进行查询,如下: FIN=1,其序列号为seq=u;
TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。
客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
服务器发送完数据后,再次向客户端发送连接释放的确认。FIN=1,ack=u+1,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
客户端收到服务器的连接释放报文后,必须发出确认,ACK=1。 服务器只要收到了客户端发出的确认,释放连接。
建立状态:FIN=1,
seq=u 服务器确认:ACK=1,seq=u,ack=u+1
服务器询问释放连接:FIN=1, ACK=1,seq=w,ack=u+1
用户端回复:ACK=1,seq=u+1,ack=w+1

问题四

去掉 Follow TCP Stream,即不跟踪一个 TCP 流,你可能会看到访问 qige.io 时我们建立的连接有多个。请思考为什么会有多个连接?作用是什么?

回答:访问qige.io的时候,不止一个端口与qige.io建立连接,而是许多端口同时与它建立连接。作用是可以同时进行加载数据,提高运行速度。

问题五

我们上面提到了释放连接需要四次挥手,有时你可能会抓到只有三次挥手。原因是什么?

回答:第二次和第三次可以合并。

四、应用层

了解DNS解析

先使用ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到当前计算机使用 UDP,向默认的 DNS 服务器的 53 号端口发出了查询请求,而 DNS 服务器的 53 号端口返回了结果。

问题六

刷新一次 qige.io 网站的页面同时进行抓包,你会发现不少的 304 代码的应答,这是所请求的对象没有更改的意思,让浏览器使用本地缓存的内容即可。那么服务器为什么会回答 304 应答而不是常见的 200 应答?

回答:服务器对于浏览器的第一次应答对于浏览器来说已经有了缓存,因此浏览器第二次发送请求的时候,服务器会回复浏览器上次请求的资源现在在缓存里,服务器根据浏览器传来的时间发现和当前请求资源的修改时间一致,应答304,表示不再重新传送。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:46:39  更:2022-01-04 13:48:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:33:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码