【网络安全 | 网络协议】结合Wireshark讲解IP协议

简介: 【网络安全 | 网络协议】结合Wireshark讲解IP协议

前言:IP协议传输过程与数据分片

当我们进行数据传输时,操作系统会创建一个 ICMP Echo Request 数据包,并在该数据包中包含要发送的目标 IP 地址。然后操作系统将数据包传递给网络协议栈,该数据包被封装成 IP 数据包。IP 数据包的头部包含源 IP 地址和目标 IP 地址等信息。封装后的 IP 数据包被传递到数据链路层(如以太网),这样它就可以通过网络适配器发送到目标 IP 地址所在的网络。

然而,如果 ICMP Echo Request 数据包的大小超出了网络的最大传输单元(MTU),则数据包可能会被分片,以保证正确的传输,每个分片会被封装成一个独立的 IP 数据包,但它们都携带相同的标识符(Identification)字段,以便接收端能够重新组装这些分片。称此过程为IP地址划分及IP分片重组。

接下来,我们就通过Wireshark抓包来分析IP协议。


Ping目标主机并发送数据包

向目标主机发送一个字节为3200的数据包:

由上图,wireshark抓到六个包,其中三个为请求包,另外三个为目标主机的响应包。

由于数据帧的最大传输限制(MTU)是1500字节,我们 ping 的数据包是 3400 字节,会被IP协议分割成三个数据包,分别为1500字节、1500字节、400字节。

看下面这张图:

这张图是我们的第一个请求包的数据,图中圈起来的More Fragments表示这个数据包之后有多余的数据分片,也就是说这个包的字节已经满了,多余的字节在第二个数据分片(数据包)中;Fragment Offset字段的值是0,表示第一个数据分片从第0个字节开始保存数据。

接着我们看第二个请求包:

同样地,这个包之后还是有多的数据分片;Fragment Offset字段的值是1480,表示这个数据包从第1480个字节开始保存数据。

所以我们就能知道,第一个数据包存储了1480个字节,再加上每个包首部有20个字节,加起来等于MTU,这也就印证了前言。

在 IPv4 中,每个 IP 数据包的首部都有固定的长度为20字节(不包括选项字段)。这是由于 IPv4 首部的结构是固定的,它包含了一些必需的字段来标识源地址、目标地址、数据包长度、协议类型等信息。

接着看第三个请求包:

可以看到More Fragments字段消失了,即没有多余的字节需要下一个数据包储存,毋庸置疑,这是最后一个数据包;Fragment Offset字段的值是2960,所以第二个数据包存储的字节为2960-1480=1480,再加上首部的20字节,刚好为MTU,这也验证了前言。

我们也可以从第三个数据包中看到:

我们发送的3200字节的数据包被分成了三个 IPv4 分片,编号为 #1633、#1634 和 #1635。每个分片的大小和偏移如下:

  • #1633 分片大小为 1480 字节,分片偏移为 0 字节。
  • #1634 分片大小为 1480 字节,分片偏移为 1480 字节。
  • #1635 分片大小为 448 字节,分片偏移为 2960 字节。

在接受三个数据分片后,目标主机能够根据这些信息将数据分片进行重组。

生存时间

在上图圈起来的行中,可以看到ttl=128、ttl=51的字段,这是什么意思呢?

TTL (Time to Live) 是 IPv4 数据包头部中的一个字段,它指定了数据包在网络中可以经过的最大路由跳数。每当数据包经过一个路由器时,该路由器会减少1个 TTL 值,直到 TTL 值为0,数据包将被丢弃,同时路由器会发送一个 ICMP 时间超时消息回到数据包的源地址,通知源地址数据包已经被丢弃。这样,源地址可以根据这个信息来确定是否有网络问题或者路径选择错误。

TTL 字段的主要目的是防止数据包在网络中无限循环。

由请求包与响应包TTL的差值,可以知道数据在发送到返回的过程中经过了77个路由。

cmd中接受到的回复信息与抓到的返回包存在一致性。

目录
相关文章
|
11天前
|
运维 网络协议 网络安全
2023网络建设与运维正式赛卷-IP地址分配-下
【7月更文挑战第1天】该集团进行数字化转型,构建了两地三中心的网络架构,包括城市A的两个数据中心(SW1、SW2为核心交换机)和城市C的灾备数据中心(SW3)。使用OSPF、RIP、ISIS、BGP路由协议实现全网互联。RT1和RT2为总部分公司间的路由器,FW1作为总公司互联网出口防火墙,FW2为办事处防火墙。IP地址表详细列出了各设备接口的IPv4和IPv6地址。本文配置示例了路由器和防火墙的接口设置。
2023网络建设与运维正式赛卷-IP地址分配-下
|
3天前
|
网络协议 程序员 定位技术
学习网络的第一步:全面解析OSI与TCP/IP模型
**网络基础知识概览:** 探索网络通信的关键模型——OSI七层模型和TCP/IP五层模型。OSI模型(物理、数据链路、网络、传输、会话、表示、应用层)提供理论框架,而TCP/IP模型(物理、数据链路、网络、传输、应用层)更为实际,合并了会话、表示和应用层。两者帮助理解数据在网络中的传输过程,为网络设计和管理提供理论支持。了解这些模型,如同在复杂的网络世界中持有了地图。
9 2
|
2天前
|
网络协议 安全 Python
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
5 0
|
10天前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
|
10天前
|
运维 网络协议 安全
Wireshark网络抓包工具入门指南
Wireshark是一款功能强大的开源网络协议分析器,它允许用户捕获和查看网络接口上传输的详细数据包信息。无论是网络故障排查、安全分析还是开发调试,Wireshark都能提供深入的网络洞察。本文旨在为初学者提供Wireshark的基本使用方法,帮助快速掌握网络抓包技巧。
|
11天前
|
传感器 算法
基于LEACH路由协议的网络性能matlab仿真,包括数据量,能耗,存活节点
- **LEACH协议**在WSN中通过分簇减少能耗,普通节点向最近簇头发送数据,簇头融合后发送给基站。本项目研究LEACH在不同初始能量、数据包及控制包长度条件下的网络性能,如剩余节点、能量、接收数据量和累计接收量。
|
12天前
|
人工智能 缓存 网络协议
网络层之三层交换、icmp协议、arp协议
网络层之三层交换、icmp协议、arp协议
|
1月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
48 1
|
3天前
|
Linux
linux网络统计信息和端口占用情况基本语法
linux网络统计信息和端口占用情况基本语法
|
11天前
|
网络协议 安全 Ubuntu
7 个有用的免费 Linux 网络隧道
【7月更文挑战第4天】
47 0
7 个有用的免费 Linux 网络隧道