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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> WireShrak实验 -> 正文阅读

[网络协议]WireShrak实验

数据链路层

准备

  • 如图打开Wireshark进行抓包,点击WLAN或者其他即可开始捕获。
    在这里插入图片描述
  • 如图所示为开始/停止捕获按钮以及主要窗口区域
    在这里插入图片描述
  • 数据包的过滤

(1)协议过滤

直接输入协议名tcp/http/icmp(注:需要小写)

(2)IP过滤

ip.src==x.x.x.x 显示原地址为x.x.x.x的数据包列表

ip.dst==x.x.x.x 显示目标地址为x.x.x.x的数据包列表

ip.addr==x.x.x.x 显示原地址或者目标地址为x.x.x.x的数据包列表

(3)端口过滤

tcp.port==x 显示源主机或者目的主机端口为x的数据包列表

tcp.srcport==x 显示TCP协议的源主机端口为x的数据包列表

tcp.dstport==x 显示TCP协议的目的主机端口为x的数据包列表

(4)Http模式过滤

http.request.method==“GET” 显示HTTP GET方法。

(5)按照数据包内容过滤

找到数据包select contains“xxx"

实作一 熟悉 Ethernet 帧结构

目的 MAC、源 MAC、类型、字段如图所示。
在这里插入图片描述

? 问题

你会发现 Wireshark 展现给我们的帧中没有校验字段,请了解一下原因。

答:因为校验字段不会进行校验,因此Wireshark将它丢弃了

实作二 了解子网内/外通信时的MAC地址

  1. 如图 ping 192.168.0.198,得到的Wireshark发出帧与返回帧如图。
    在这里插入图片描述发出帧:目的MAC为f8:a2:d6:84:67:d7
    在这里插入图片描述

返回帧:源MAC为f8:a2:d6:84:67:d7
该MAC地址是处于同一子网的计算机的。

  1. ping qige.io,得到的Wireshark发出帧与返回帧如图。
    在这里插入图片描述发出帧的目的MAC地址为42:bb:64:20:57:fb
    在这里插入图片描述返回帧的源MAC地址为42:bb:64:20:57:fb
    在这里插入图片描述

这个MAC地址是网关的。
3. ping www.cqjtu.edu.cn,得到的Wireshark发出帧与返回帧如图。
在这里插入图片描述发出帧目的MAC地址为:42:bb:64:20:57:fb
在这里插入图片描述返回帧的源MAC地址为:42:bb:64:20:57:fb
在这里插入图片描述

该MAC地址是网关的。

? 问题
通过以上的实验,你会发现:

  1. 访问本子网的计算机时,目的 MAC 就是该主机的
  2. 访问非本子网的计算机时,目的 MAC 是网关的

请问原因是什么?

答:因为访问本子网的计算机时不需要经过网关,而访问本子网以外的计算机,必须要通过网关,因为网关是子网的出入口。

实作三 掌握 ARP 解析过程

  1. 使用arp -d *清空arp缓存
    在这里插入图片描述

  2. 如图 ping 192.168.0.189.

  3. arp广播请求问谁有192.168.0.189(ping 的地址),该请求的目的MAC地址为ff:ff:ff:ff:ff:ff。
    在这里插入图片描述该请求的回应为192.168.0.189。
    该回应的源MAC地址:20:79:18:8d:f1:9e。
    目的MAC地址:34:4b:50:00:00:00(本机)。
    在这里插入图片描述
    在这里插入图片描述

  4. 再次使用 arp -d * 命令清空 arp 缓存

  5. ping qige.io,如图。
    在这里插入图片描述

  6. arp广播请求问谁有192.168.0.1(网关)
    该请求的目的MAC地址为ff:ff:ff:ff:ff:ff。
    在这里插入图片描述

该请求的回应为192.168.0.1(网关)。
该回应的源MAC地址:86:54:f2:2c:ff:27(网关)。
目的MAC地址:34:4b:50:00:00:00(本机)。
在这里插入图片描述

在这里插入图片描述

? 问题

通过以上的实验,你应该会发现,

  1. ARP 请求都是使用广播方式发送的
  2. 如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;如果访问的非本子网的 IP, 那么 ARP 解析将得到网关的 MAC。

请问为什么?

答:ARP解析是先看arp表中是否有目的地址,如果有就不需要再次建立联系了,可以直接得到目的MAC。如果没有就需要发送ARP请求,但是因为不知道目的地址在哪,因此需要发送广播,通过“学习”来完善arp表。如果目的地址是属于同一个子网,则不需要通过网关就能够进行通信,而不在同一个子网中就需要通过网关才能够建立联系。

网络层

实作一 熟悉 IP 包结构

在这里插入图片描述

? 问题

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

答:IP的头部长度可以使得接收端计算出报头在何处结束及从何处开始读数据。总长度的字段是因为接收端需要去掉添加的0

实作二 IP 包的分段与重组

  • ping 192.168.0.198 -l 2000使用 Wireshark 抓包(用 ip.addr == 192.168.0.198 进行过滤)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    这里看到,这个2000字节的数据分为了两次进行传送。

? 问题

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

答:转发到支持该数据传输的路由上或者丢弃该数据包。

实作三 考察 TTL 事件

使用tracert www.baidu.com命令进行追踪,使用Wireshark抓包。
tracert追踪可看出每经过一跳,TTL数增加1
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
Tracert 先发送 TTL 为 1 的回应数据包,并随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由

? 问题

在 IPv4 中,TTL 虽然定义为生命期即 Time To Live,但现实中我们都以跳数/节点数进行设置。如果你收到一个包,其 TTL 的值为 50,那么可以推断这个包从源点到你之间有多少跳?

答:我收到的包说明我是目的地址,值为50,取 2 n 2^{n} 2n跟50最接近的为64,则为64-50=14跳。

传输层

实作一 熟悉 TCP 和 UDP 段结构

TCP段结构如图:
在这里插入图片描述UDP段结构如图:
在这里插入图片描述

? 问题

由上大家可以看到 UDP 的头部比 TCP 简单得多,但两者都有源和目的端口号。请问源和目的端口号用来干什么?

答:源端口就是本机程序用来发送数据的端口,目的端口就是对方主机用哪个端口接收。实现端到端的进程通信。

实作二 分析 TCP 建立和释放连接

使用tcp加上Follow TCP Stream,如图。
在这里插入图片描述第一次握手时,客户端发送一个(同步位)SYN=1,(确认位)ACK=0标志的数据包给服务端,请求进行连接。
在这里插入图片描述第二次握手时,服务端收到请求并且允许连接的话,就会发送一个(同步位)SYN=1,(确认位)ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让客户端发送一个确认数据包,这是第二次握手。
在这里插入图片描述第三次握手时,服务端发送一个SYN=0,ACK=1的数据包给客户端端,告诉它连接已被确认,TCP连接建立,开始通讯。在这里插入图片描述四次挥手释放连接
在这里插入图片描述从图上可以看出,断开连接时首先由一方发出FIN报文,然后另一方接收并回ACK报文;并且它也会发送一个FIN报文表示断开连接,最开始发送的一方也接收并发ACK报文,TCP连接断开。

? 问题一

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

答:有多个连接相当于多线程取数据,响应速度更快。

? 问题二

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

答:服务端发送的确认与请求释放连接一起发送了。

应用层

实作一 了解DNS解析

如图使用ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析
在这里插入图片描述当前计算机使用UDP,向默认的 DNS 服务器的 53 号端口发出了查询请求。
在这里插入图片描述DNS 服务器的 53 号端口返回的结果。

在这里插入图片描述

? 问题

你可能会发现对同一个站点,我们发出的 DNS 解析请求不止一个,思考一下是什么原因?

答:因为网站设有好几台计算机,每台计算机运行同样的服务器。这些计算机IP地址不一样,但是域名相同。

实作二 了解 HTTP 的请求和应答

访问qige.io网站,使用http过滤加上Follow TCP Stream
在这里插入图片描述请求使用的是GET。
在这里插入图片描述

请求使用的是POST。
在这里插入图片描述

这里应答代码是200.

Server:服务器通过这个头告诉浏览器服务器的类型。
Transfer-Encoding:告诉浏览器数据的传送格式。
Content- Type:表示后面的文档属于什么MIME类型。
Cache-Control:指定请求和响应遵循的缓存机制

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:27:45  更:2022-01-03 16:29:41 
 
开发: 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 11:50:26-

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