【网络安全 | 网络协议】结合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中接受到的回复信息与抓到的返回包存在一致性。

目录
相关文章
|
8月前
|
数据采集 算法 数据挖掘
模块化控制协议(MCP)在网络中增强智能体执行效率的研究
随着Web3技术的迅速发展,去中心化应用和智能体在各种领域的应用逐渐增多。MCP(Modularized Control Protocol,模块化控制协议)作为一种增强智能体执行能力的关键技术,为Web3场景中的智能体提供了更强的灵活性和可扩展性。本文将探讨如何利用MCP技术提升智能体在Web3场景中的执行能力,并通过实例代码展示其实现路径。
734 22
|
5月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
6月前
|
运维 架构师 安全
二层协议透明传输:让跨域二层协议“无感穿越”多服务商网络
简介:本文详解二层协议透明传输技术,适用于企业网工、运营商及架构师,解决LLDP/LACP/BPDU跨运营商传输难题,实现端到端协议透传,提升网络韧性与运维效率。
|
10月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
289 18
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
379 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
295 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
291 10
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。