2.2 - 网络协议 - IP协议,IP地址划分,报文格式,数据分片,抓包实战

news2024/11/25 13:27:11

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

IP协议

  • 1、IP地址划分
  • 2、IP协议报文格式
  • 3、IP协议数据分片
  • 4、IP协议抓包分析

IP(Internet Protocol)协议也叫 「网际互联协议」,负责 「不同网络」之间的 「通信」,为主机提供一种无连接、不可靠的数据包传输服务。

1、IP地址划分

IP协议规定,网络上的所有设备都必须有一个「唯一」的IP地址(同一设备可以有多个不同的IP)

cmd 执行 ipconfig ,可以查看本机的IP地址:

在这里插入图片描述

IP地址由「网络地址」「主机地址」两部分组成。

  • 「网络地址」:用来识别设备所在的「网络」,位于IP地址的前段,同一网络上的所有设备,都使用相同的网络地址。比如 192.168.31.121,前段的 192.168 就是网络地址。IP在路由的时候,就是根据网络地址,决定数据发给哪个网络。
  • 「主机地址」:用来识别网络上的「设备」,位于IP地址的后段。比如 192.168.31.121,后段的 31.121 就是主机地址。IP路由到指定网络以后,就根据主机地址,决定数据发给哪个设备。

为了适应「不同大小」的网络规模,IP地址被划分为A、B、C、D、E五类。

在这里插入图片描述

A类地址第一段是网络地址,剩下三段是主机地址;
B类地址前两段是网络地址,剩下两段是主机地址;
C类地址前三段是网络地址,最后一段是主机地址;

类别IP范围子网掩码描述
A类(1~126)1.0.0.1 ~ 127.255.255.254255.0.0.0共有126个网络,每个网络有1600万台主机,适合大规模的网络。
B类(128~191)128.0.0.1 ~ 191.255.255.254255.255.0.0共有16384个网络,每个网络有6万台主机,适合中等规模的网络。
C类(192~223)192.0.0.1 ~ 233.255.255.254255.255.255.0共有209万个网络,每个网络有254台主机,适合小型网络。
D类(224~239)224.0.0.0 ~ 239.255.255.255组播地址,一次请求发给一组特定的主机 ,常用于视频会议等场景。
E类(240~255)240.0.0.0 ~ 255.255.255.254保留地址

其中A、B、C三类地址比较常用,分别适用于大、中、小型网络,公司可以根据自己的规模申请合适的网络地址。比如我是个大公司,我就可以申请 126.0.0.0 这个网络地址,我公司的员工可以使用它的主机地址。

IP地址是有限的,总有用完的一天,为了节约IP资源,从A、B、C类地址中抽出一部分作为「私有地址」。私有地址不需要注册,也不不能跟互联网直接通信。比如我们公司的网络可以用192.168.100.1这个私有IP,其他公司的网络也可以用同样的IP。

私有地址如下:

  • A类 10.0.0.0–10.255.255.255,1个
  • B类 172.16.0.0–172.31.255.255,16个
  • C类 192.168.0.0–192.168.255.255,255个

A、B、C类地址范围中,私有IP外的地址都是「公有地址」(特殊地址除外)。

为了满足不同的应用场景,产生了很多不同作用的「特殊地址」

类型地址格式描述
全0地址0.0.0.0路由表的默认路由,表示整个网络,即网络内的所有主机,而非某一个主机,不可用。
网络号全00.x.x.x本网内某个特定主机
主机号全0x.0.0.0网络地址,表示整个网络
全1地址255.255.255.255子网的广播地址,路由器不转发
主机号全1x.255.255.255广播地址,对当前网络所有主机进行广播
环回地址127.0.0.1 ~ 127.255.255.254代表本机IP,可用于测试网络连通性

2、IP协议报文格式

IP协议的报文分为「首部」「数据」两个部分,首部分由固定部分(20字节)和可变部分组成。

在这里插入图片描述

结合数据包解释下每个字段的含义

在这里插入图片描述

  • Version:版本【4位】,目标主机按照此版本解释数据,如果目标主机使用的是其他版本,则丢弃数据报。
  • Header Length:首部长度【4位】,数据报协议头长度,最小值为5,最大值为15。
  • Differentiated Services Field:服务【8位】,用于分配优先级、延迟、吞吐量以及可靠性;前3位是优先级,后面4位成为服务类型,最后1位没有定义。
  • Total Length:总长度【16位】,IP数据报的字节长度(协议头部和数据),其最大值为65535字节。
  • Identification:标识【16位】,一个整数,数据报分段时,用于识别当前数据报。
  • Flags:标记【3位】,由3位字段构成,最低位(MF)控制分段,存在下一个分段置为1,否则置0代表该分段是最后一个分段;中间位(DF)指出数据报是否可进行分段,如果为1则机器不能将该数据报进行分段;第三位即最高位保留不使用,值为0。
  • Fragment offset:分段偏移【13位】,指出数据在源数据报中的相对位置,用于重组源数据。
  • Time to live:生存时间【8位】,一种计数器,在丢弃数据报的每个点值依次减1直至减少为0。这样确保数据报拥有有限的环路过程(即TTL),限制了数据报的寿命。
  • Protocol:协议【8位】,指明上层接收数据报的协议。
  • Header checksum:头部校验和【16位】,该字段帮助确保IP协议头的完整性。由于某些协议头字段的改变,这就需要对每个点重新计算和检验。计算过程是先将校验和字段置为0,然后将整个头部每16位划分为一部分,将个部分相加,再将计算结果取反码,插入到校验和字段中。
  • Source:源地址【32位】,源主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间必须保持不变。
  • Destination:目的地址【32位】,目标主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间同样必须保持不变。

3、IP协议数据分片

IP协议接收传输层的数据包,添加IP首部后,发送给数据链路层,由链路层「封装成帧」进行传输。

在这里插入图片描述

由于帧(默认MTU)最多只能封装1500字节的数据,当「超过最大限制」时,IP协议就会将报文的数据部分「分割」成若干个报文,也就是IP分片。

分片的时候,用标记位(Flags)和偏移量(Fragment offset)来记录报文的顺序。
等目标主机接收到所有的IP分片以后,再按照顺序「重组」起来。

4、IP协议抓包分析

1)Wireshark开启抓包后,cmd 执行 ping 54.222.162.186 -n 1 -l 3200,向百度发送一个3200字节的数据包

在这里插入图片描述

2)找到IPv4协议的数据包,前三个是「请求包」,后三个「响应包」

在这里插入图片描述

数据帧的最大传输限制(MTU)是1500字节,我们 ping 的数据包是 3200 字节,会被IP协议分割成三个数据包(1500 + 1500 + 200),刚好对应前面三个请求包;

三个请求包最后以一个ICMP协议数据包结尾,用来传输「控制信息」。响应包的作用也是如此。

3)先看第一个数据包(IPv4),重点看我圈中的字段:

在这里插入图片描述
Flags字段第二个值是 More Fragments,表示这个数据报后边有多余的数据分片;
Fragment Offset字段的值是0,表示这个数据分片从第0个字节开始保存数据。

4)再看第二个数据包(IPv4),重点看我圈中的字段:

在这里插入图片描述

Flags字段第二个值仍是More Fragments,表示这个数据报后边也有多余的数据分片;
Fragment Offset字段的值是1480,表示这个数据分片从第1480个字节开始保存数据。
从这里也可以反推出,第一个字段保存了 0~1480个字节。之所以只保存了1480个字段,是因为首部占了20个字节,首部+数据刚好够1500个字节,达到数据帧的上限。

5)再看第三个数据包(ICMP),重点看我圈中的字段:

在这里插入图片描述
Flags字段第二个值为「空」,表示这个数据报没有多余的数据分片;
Fragment Offset字段的值是2960,表示这个数据分片从第2960个字节开始保存数据。
从这里可以反推出,第二个字段保存了第 1480 ~ 2960个字节。

最下面的 IPv4 Fragments 字段记录了数据报的分片信息:第一、二个数据包保存了1480个字节,第三个数据包保存了248个字节。

接收方可以根据这些分片信息,重组被分割的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1161388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git(七).git 文件夹瘦身,GitLab 永久删除文件

目录 一、问题背景二、问题复现2.1 新建项目2.2 上传大文件2.3 上传结果 三、解决方案3.1 GitLab备份与还原1)备份2)还原 3.2 删除方式一:git filter-repo 命令【推荐】1)安装2)删除本地仓库文件3)重新关联…

图的广度优先遍历的单源路径、无权图的最短路径问题、BFS性质附Java代码

目录 使用BFS求解单源路径问题 BFS重要性质 无权图的最短路径问题 使用BFS求解单源路径问题 import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.Queue;public class SingleSourcePath {private Graph G;private i…

Greenplum管理和监控工具-gpcc-web介绍

Greenplum管理和监控工具-gpcc-web介绍 1. gpcc-web简介 ​ gpcc(Greenplum Command Center)的Web用户界面是一个强大的工具,它可以帮助用户管理Greenplum数据库集群,提高效率,优化性能,并确保数据的安全…

安防监控项目---Cortex-A9和zigbee传感器数据上传至网页

文章目录 前言一、A9平台数据的采集与上传二、共享内存上传数据到CGI三、设备代码总结 前言 书接上期,我们大概来梳理一下,已经完成的需求有哪些了,从html下发指令控制Cortex-A9平台硬件,其中主要实现的有控制LED,蜂鸣器&#xf…

AI大模型时代网络安全攻防对抗升级,瑞数信息变革“下一代应用与数据安全”

AI与大模型技术加速普及,安全领域也在以创新视角聚焦下一代应用安全WAAP变革,拓展新一代数据安全领域。近日瑞数信息重磅发布了瑞数全新API扫描器、API安全审计、数据安全检测与应急响应系统及分布式数据库备份系统四大新品。此次发布在延续瑞数信息Bot自…

【中国知名企业高管团队】系列55:奇瑞汽车

昨天华研荟介绍了吉利集团的现状,创始人李书福先生的故事,以及吉利集团的现任高管团队。我们了解到现在的吉利集团品牌多元化,吉利汽车只是其中的一个品牌和产业集团,整个吉利集团有十余个汽车品牌,还有多个网约车品牌…

力扣第416题 *** 分割等和子集 c++ 新题 动态规划 中的 01背包问题

题目 416. 分割等和子集 中等 相关标签 数组 动态规划 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释…

qt 系列(二)---qt designer通过设置控件样式表进行背景颜色设置

1. 前言 一般Layouts不可以进行改变样式表,当我们想修改背景样式表,同时又不改变其他控件的颜色时,可以选择List View 控件改变背景颜色。 2. 设置背景 (1)配置 .qrc 文件 新建mypicture.qrc文件,记事本打…

【刷题宝典NO.0】

目录 素数的判定 打印素数 打印水仙花数 百钱买百坤 输出闰年 逆序打印一个整数的每一位 输出乘法口诀表 数字9出现的次数 二进制1的个数 输出一个整数的偶数位和奇数位的二进制序列 求两个整数的最大公约数 求两个整数的最小公倍数 小乐乐与欧几里得 小…

C#,数值计算——积分方程与逆理论Quad_matrix的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Quad_matrix : UniVarRealMultiValueFun { private int n { get; set; } private double x { get; set; } public Quad_matrix(double[,] a) { this.n a…

适用于 Linux 的 WPF:Avalonia

许多年前,在 WPF 成为“Windows Presentation Foundation”并将 XAML 作为 .NET、Windows 等的 UI 标记语言引入之前,有一个代号为“Avalon”的项目。Avalon 是 WPF 的代号。XAML 现在无处不在,XAML 标准是一个词汇规范。 Avalonia 是一个开…

精品Python空巢老人志愿服务平台慈善捐赠活动报名

《[含文档PPT源码等]精品基于Python的空巢老人志愿服务平台》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术&#…

EasyExcel复杂表头数据导入

目录 表头示例导入代码数据导出 表头示例 导入代码 Overridepublic void importExcel(InputStream inputStream) {ItemExcelListener itemExcelListener new ItemExcelListener();EasyExcel.read(inputStream, ImportItem.class, itemExcelListener).headRowNumber(2).sheet()…

【蓝桥每日一题]-二分类型(保姆级教程 篇2) #砍树 #木材加工

今天讲二分的例题,一道是“砍树”,一道是“木材加工” 目录 题目:砍树 思路1: 思路2: 题目:木材加工 思路: 题目:砍树 思路1: 二分查找:对高度进行二分 二…

关注云栖大会的感受:从工业大脑到全面AI时代的进化

前言 自2009年的地方网站峰会到如今的云栖大会,这个盛大的科技盛事已经走过了一个多十年的漫长历程。这个会议见证了中国科技行业的崛起,也记录了技术的不断演化。而对我来说,首次接触云栖大会是在2020年,当年大会迁移到线上&…

从零开发基于ASM字节码的Java代码混淆插件XHood

项目背景 因在公司负责基础框架的开发设计,所以针对框架源代码的保护工作比较重视,之前也加入了一系列保护措施 例如自定义classloader加密保护,授权license保护等,但都是防君子不防小人,安全等级还比较低 经过调研…

【密评】商用密码应用安全性评估从业人员考核题库(十七)

商用密码应用安全性评估从业人员考核题库(十七) 国密局给的参考题库5000道只是基础题,后续更新完5000还会继续更其他高质量题库,持续学习,共同进步。 4001 多项选择题 网络和通信安全层面的通信主体一般包括哪些&…

基于Docker-consul容器服务更新与发现

目录 一、什么是服务注册与发现: 二、Docker-consul介绍: 三、consul的关键特性: 四、consul部署: 1.部署规划: 2.consul服务器部署: 2.1 建立consul服务: 启动consul后默认会监听5个端口&a…

管理双因素身份验证的Web应用2FAuth

什么是 2FAuth ? 2FAuth 是一种基于 Web 的自托管替代方案,可替代 Google Authenticator 等一次性密码 (OTP) 生成器,专为移动设备和桌面设备设计。 近年来,双因素身份验证变得非常流行,2FA 现在是不可避免且至关重要的…

阿里云ECS经济型e实例ecs.e-c1m1.large性能测评

阿里云服务器ECS经济型e实例2核2G配置规格ecs.e-c1m1.large,CPU采用Intel Xeon Platinum架构处理器,e系列云服务器是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器。目前云服…