计算机网络【IP数据包首部的各个字段详解】

2023-10-30

一 网络层简述

在这里插入图片描述
一个IP数据包的首部至少是20个字节!


二 网络层首部–版本,首部长度,区分服务,总长度

在这里插入图片描述


版本:
就是指出IP数据包是什么版本;常见的版本就是0100 IPV40110 IPV6


首部长度:
整个IP数据包的首部长度,不包括数据部分;
但是首部长度只用4个bit存储,表示最大值也是1111,即15;
而我们实际上首部长度还需要乘于5才可以得到实际答案;
假如首部长度为0101,也就是4,那么实际的首部长度为4×5=20;
假如首部长度为1111,也就是15,那么实际的首部长度为15×4=60;
常见的首部长度一般都是20字节,因为IP数据包至少需要20字节


区分服务:
整个字段主要是用来提高网络服务质量的,至于细节我们不用深究!举个例子描述以下它是如何提高网络服务质量的,比如说我们有一个客户端要给服务器发数据包,这中间过程需要经过路由器,而路由器接收到这个IP数据包时候,会检查它的首部字段的区分服务是否有设置什么值,这些值是可以提高网络服务的,比如可能会优先传送该IP数据包,大概就是这样!!!


总长度:

在这里插入图片描述

总长度表示IP数据包整个大小;
总长度占两个字节,也就是说有16个bit可以表示总长度,也就是说总长度的范围是0-65535数据范围;
但是我们知道网络层的数据包需要传输给数据链路层的帧数据部分,而数据链路层帧的数据部分长度不可以超过1500;也就是IP假如是65535那么大的话,是无法传输给数据链路层的帧部分的,那么我们就需要对IP数据包进行分片,拆分成小于1500的数据包再传输给数据链路层;至于如何分片,分片后如何找到那些片段是同一个数据包,传输过去后,如何正确的拼回原来的数据包都是未解决的问题。接下来都会讲到这几个问题。


三 网络层首部–标识,标志,片偏移

在这里插入图片描述
标识:
就是标识该数据包是某一个大的IP包的分片包,标识一样的数据包都是属于同一数据包的分片中的某一片;
比如有一个IP包很大:3800字节,很明显,传输给数据链路层是无法接收的,那么就需要分片,假设分了3片,那么这三片数据包的标识都是一模一样的,因为这三片数据包都是同一个大的IP数据包分片出来的;
标识的字段也解决了一个问题,就是分片后的数据包,是如何找回来的拼接成为原来的大IP数据包的问题


片偏移:
在这里插入图片描述
片偏移字段主要是说明:该数据包被分片后,相对于第一片偏移了多少个字节;
但是实际上我们在IP数据包看到的片偏移字段结果不是实际的结果,实际的结果还是需要片偏移的值×8,也就是字节偏移
如上图:我们IP数据包3800字节,被分了三片!
片偏移字段的主要作用是:说明该IP数据包是分片后的具体位置在哪一片中,根据片偏移可以一个一个的拼凑成一个完整的包,相当于拼会成原来大的IP数据包有了参考一样;
比如上图:当我们在服务器的网络层拿到了三个分片的IP数据包后,我们是可以根据每个包的标志位,和片偏移位组合成为一个完整的IP数据包!标志位相同说明上面三个分片都是同一个大的IP数据包分片出来的,偏移位标识拼接的顺序是怎么样,如何拼接才会保持数据顺序变;

有一个问题:为什么字节偏移需要用片偏移字段×8才可以得到实际的值呢?
其实很好想,因为片偏移只有13个bit去存放片偏移的信息,很明显13个bit存放的信息是有限的,所以我们了表示更多的信息,就需要×8才可以;


实际上:我们仅仅通过标识和片偏移是无法确定IP数据包是什么时候拼接结束的问题,我们拿到片偏移,只能确定拼接的顺序,而结束的标志却没有!
所以为了解决这个问题,我们的IP数据包首部字段中还是有一个比较重要字段:标志位

标志位:
标志位:占3个bit;
第一个bit我们通常作为保留位:直白一点就是基本不用这个位的信息,通常我们抓包见到都是0;
第二个bit表示不要分片的意思:也就是说,当我们看到第二个bit位置是1时候, 表示这个数据包不需要分片;为0时候就表示需要分片;通常该数据包过大时候需要分片那么该数据包的第二个bit就是为1;
第三个bit表示更多分片:直白点就是该位置为1时候,表示不是最后一片,为0时候就是最后一片数据包;
所以:我们在拼接数据包时候,我们是可以根据标志位的第三个bit位为0,就知道这个IP数据包时最后一片数据包了,当把这个数据包拼接过后,那么就表示大的IP数据包就完成了拼接;


四 网络层首部–生存时间,协议,首部检验和

我们先来看看协议字段
协议:
在这里插入图片描述
协议字段表示上一层传输下来的是什么协议!如上图,不同的值表示不同的协议;
假如说IP数据包数据部分,封装是TCP协议,那么就说明协议字段的值为6,假如为UDP,那么值为17;
抓个ICMP包看看,对于协议字段的值为1;也就是表面为上一层传下来是ICMP包
在这里插入图片描述


首部检验和:
其实这个字段没什么好说的就是检验你的包是否正确;


生存时间:
![在这里插入图片描述](https://img-blog.csdnimg.cn/1fe3cf6e5d4f4abb81239da2fee57906.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,sh
TTL一般是操作系统内定设置好的,每个操作系统的TTL的值都可能不一样!


五 可选字段,填充字段,源IP,目标IP,

可选字段一般都是在一个IP数据包头部的20个字节无法表达完整信息时候,才会使用它;
填充字段一般也是为了筹够20个字节的IP数据包的首部才会使用;
其实这个两个字段都不是很常见,也就是说,我们通常看到的IP数据包的首部这两个字段是五具体信息的!
源IP地址和目标IP地址,我们都很清楚,发数据包过去肯定需要这两个字段的信息。


六 总结

其实要学明白IP数据包的首部各个字段,最主要的是结合理论信息,通过手动抓包分析去理解各个字段!反正这写字段理解了就很容易记住!
而我并没有放抓包的信息的图,因为我觉得这个放上去可能信息有点乱,但是你们不会学习时候,必须自己抓包分析,这样才会理解深刻!
最后附上我自己花的IP数据包首部字段的图给你们!!!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络【IP数据包首部的各个字段详解】 的相关文章

  • 明明导入Jar包却抛出ClassNotFoundException

    项目中添加过Jar包 显示ClassNotFoundException 因为在Tomcat中找不到mysql jar包 手动添加Jar包到tomcat bin下 出现错误的原因是 delete调用了executeQuery 方法
  • 私有代码存放仓库 BitBucket介绍及入门操作

    本文主要来自于萧 瑟BLOG 和牛仔的移动开发博客 并综合了多篇网上文章 代码版本控制系统在局域网内Subvision用的比较多 但其局限性太多 在代码审查 异地合作等功能方面比较弱 目前比较出名的分布式版本控制系统有Bitbucket和G
  • 求多边形面积公式(已知顶点坐标)

    下面介绍一种求多边形面积的方法 首先已知各定点的坐标分别为 x1 y1 x2 y2 x3 y3 Xn Yn 则该多边形的面积公式为 s 1 2 x1 y2 x2 y1 x2 y3 x3 y2 Xk Yk 1 Xk 1 Yk Xn y1 x1

随机推荐

  • JavaScript检查null与undefined以及==和===之间的差异

    如何检查变量是否为null或undefined并且null和undefined什么区别 和 什么区别 很难在Google上搜索 1楼 区别是微妙的 在JavaScript中 undefined变量是从未声明或从未分配值的变量 假设您声明va
  • 生信必会格式:Fasta & Fastq 简介及转换

    文章目录 前言 FASTA 例子 血红蛋白 的核酸和蛋白质序列 FASTQ FASTA FASTQ 对比 FASTQ 转为 FASTA 使用基本的命令 sed paste awk 使用现有工具 Bioawk Seqtk FASTA 到 FA
  • sql注入详细解释

    sql注入以及应对措施 sql注入是什么 sql注入的危害 sql注入的几种方式 数字型注入 字符串注入 关于mybatis中传递变量用 的原因 sql注入是什么 sql是我们操作数据库与其交互的语言 而sql注入是用户将Web页面的原UR
  • waymo数据集下载

    下载waymo数据集下载报错 gsutil不能使用怎么办 安装谷歌云 gcloud init gcloud auth login gcloud auth application default login gsutil config 然后就
  • Linux内核调度框架和CFS调度算法

    进程调度 暂时以2 6 24内核版本讲解 该版本是CFS调度器注入Linux内核之后的第二个版本 在框架和数据结构上与4 x之后没有本质上的区别 但是由于4 x对CFS调度做了很大的优化 代码量暴增10倍之多 故不容易把握算法与框架的本质
  • 【两阶段鲁棒优化问题】用列和约束生成方法求解两阶段鲁棒优化问题(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 文献来源 4 Matlab代码及文章 1 概述 文献来源 鲁棒优
  • vue后台水印实现

  • RGB与YCbCr

    1 RGB RGB色彩模式是工业界的一种颜色标准 是通过对红 R 绿 G 蓝 B 三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的 RGB即是代表红 绿 蓝三个通道的颜色 这个标准几乎包括了人类视力所能感知的所有颜色 是目前运
  • 成功解决Array Index Out Of Bounds Exception问题

    成功解决Array Index Out Of Bounds Exception问题 目录 解决问题 解决方法 解决问题 Array Index Out Of Bounds Exception 解决方法 数组索引越界异常 即数组下标号超出数组
  • Spring Cache --- @Cacheable/@CachePut/@CacheEvict注解的原理深度剖析和使用

    这里只是部分 需要深入了解可以看原著 原文链接 https blog csdn net f641385712 article details 94570960 关于Spring的缓存注解 一共有如下5个 1 Cacheable 缓存 sin
  • 实战:10 种实现延迟任务的方法,附代码!

    捡田螺的小男孩 2022 08 04 07 45 发表于广东 以下文章来源于Java中文社群 作者磊哥 Java中文社群 Java实用文章聚集地 程序员田螺 专注分享后端面试题 包括计算机网络 MySql数据库 Redis缓存 操作系统 J
  • 新Kubeflow,新征程 (一):简化部署体验

    综述 2017年底 奥斯汀的Kubecon上 Google项目的产品经理 David Aronchick 和首席工程师 Jeremy Lewi将Kubeflow这个项目带到了大家的视野里 经过一年的发展 在2018年的西雅图的Kubecon
  • Python中selenium实现文件上传所有方法整理总结

    pyAutoGUI官方文档 https pyautogui readthedocs io en latest 文件上传是所有UI自动化测试都要面对的一个头疼问题 今天博主在这里给大家分享下自己处理文件上传的经验 希望能够帮助到广大被文件上传
  • ​stp文件转ply

    什么是一 stp 文件 STP 文件是用于在 CAD 和 CAM 应用程序之间交换产品数据的 3D CAD 文件 它包含有关 3D 对象的信息 并以类似于STEP文件格式的方式保存 STP 文件根据STEP应用程序协议 ISO 10303
  • Qt设置label的文字自动换行、高度随内容调整、上下可滚动

    Qt初学者 想要用label控件实现一个用于显示文字信息的文本框 要求文字自动换行 label高度随内容调整 上下可滚动 为了实现滚动 使用ScrollArea控件 将要显示文字的label放到这个ScrollArea里 然后设置Scrol
  • 控制台报错:failed to load resource: net:err_cert_date_invalid的解决办法

    原因 浏览器端屏蔽了不安全的连接 解决办法 1 打开检查页面里 Network 网络 2 双击name 名称 下红色报错的地方 会出现以下界面 3 点击高级 下面会出现提示 点击继续前往 不安全 4 回到之前的页面刷新 问题就解决了
  • Exception of type 'System.OutOfMemoryException' was thrown.

    OutOfMemoryException Exception of type System OutOfMemoryException was thrown 在装有4G物理内存的32位OS机器上内存不足 原因是 The common lang
  • array type has an incomplete element type

    一 错误详情 array type has an incomplete element type 二 错误分析 1 错误代码 int readInfo int B int n int findMax int B int n int m 2
  • 英伟达Tesla T4 显卡编解码能力测试

    显卡基本参数 Timestamp Fri Aug 27 10 04 12 2021 Driver Version 460 32 03 CUDA Version 11 2 Attached GPUs 8 FB Memory Total 151
  • 计算机网络【IP数据包首部的各个字段详解】

    文章目录 一 网络层简述 二 网络层首部 版本 首部长度 区分服务 总长度 三 网络层首部 标识 标志 片偏移 四 网络层首部 生存时间 协议 首部检验和 五 可选字段 填充字段 源IP 目标IP 六 总结 一 网络层简述 一个IP数据包的