【IP协议】IP协议报头结构(上)

news2025/1/17 21:43:46

IP 协议报头结构

image.png|387

4位版本

实际上只有两个取值

  • 4 ==> IPv4(主流)
  • 6 ==> IPv6

IPv2IPv5 在实际中是没有的,可能是理论上/实验室中存在

4位首部长度

image.png|376

IP 协议报头也是变长的,因为选项个数不确定,所以报头长度也不确定。因此就需要使用 4 位首部长度进行区分

4 位首部长度范围:0~15,所以报头长度 *4 才是实际的长度

  • 当报头长度为 15,则实际报头长度为 15*4=60

8位服务类型

type of serviceimage.png|176
3位优先权字段(已经弃⽤),4位 TOS 字段,和 1位保留字段(必须置为 0)。4位 TOS 分别表⽰:

  • 最⼩延时:从 A 到 B 的时间消耗更少
  • 最⼤吞吐量:从 A 到 B,单位时间内传输的数量更多
  • 最⾼可靠性:数据丢包概率更小(IP 协议并不想 TCP 那样有严格的可靠性)
  • 最⼩成本:设备上消耗的资源更少
    这四者相互冲突,只能选择⼀个。其中一个为 1,那么其他的都得为 0。IP 协议拥有变身技能!

16位总长度

IP 数据报的长度 image.png|311
UDP 也是 16 位(2 个字节,64KB)。但并非 IP 协议报头最多能携带的数据就是 64KB

IP 协议内置了拆包组包机制,单个 IP 数据报确实没法超过 64KB,但是不代表 IP 协议不能传输超过 64KB 的数据。IP 协议会自动把大的数据包,拆成多个 IP 数据报携带传输,在接收方再进行拼装

装修的时候,装柜子/床,进不了电梯,也进不了房门,怎么办?

  • 厂家发的货就不是拼装好的柜子和床,而是零件
  • 我们就可以先把零件搬进去,然后再组装起来

16位标识、3位标志、13位片偏移

image.png

IP 协议会自动拆包,统一个载荷的数据,会被分成多分,交给多个 IP 数据报来携带。多个 IP 数据包之间:

  • 16位标识 是相同的数值,

  • 13位片偏移 决定组包时候数据报的位置

    • 网络传输数据的时候会存在后发先至的情况,所以不能按照发送顺序就确定接受顺序
  • 3位标志 只有两位有效(有一位是保留位,现在不用,以后可能用,先占个位置)

    • 其中一个标识这个包是否需要组包(是否是拆包的一部分)
    • 另一个表示当前包是否是组包中的最后一个单位

最后组包的时候,根据 16 位标识 确定哪些数据包放在一组,然后根据 13位片偏移 决定顺序,最后根据 3位标志位 决定是不是最后一个

如果就是想使用 UDP 实现传输找过 64KB 的数据,该怎么做呢?

  • 此处参考 IP 协议
  • 在应用层编写代码的时候
    - 引入“标识”,约定标识相同的数据,就应该进行组包
    - 引入“片偏移”,约定组包的时候的先后顺序
    - 引入“标志位”,区分是否需要组包,标识最后一个包

8位生存时间

image.png|137

描述了一个数据包在网络上存活的最长时间

  • 假设构造一个 IP 数据报,目的 IP 写错了(不存在的 IP 地址),结果这个数据包就在网络上传输了很久,也没有达到目的地。
  • 如果让这样的数据包无限传输的话,就会消耗很多网络资源
  • 这样的数据包存在一个两个还好,要是存在很多呢?总不能让这些数据包把路全部堵死了吧

TTL 就是约定了一个传输时间的上限,当达到上限之后,数据包就会被自动丢弃掉

  • 它的单位不是 s 或者 min,而是次数(经过路由器转发的次数)

发送一个 IP 数据报的时候,会有一个初识的 TTL 的值(32,64,128…)。数据包每次经过一个路由器转发,TTL 就会 -1(经过交换机不减)。一旦 TTL 减到 0 了,此时这个数据包就会被当前的路由器直接丢弃掉


image.png|596

  • ping命令:用来检测网络的连通性
  • 输入命令后,我们的电脑就会给百度发送一个数据包,百度收到这个 ping 命令的数据包之后,就会返回一个响应
    • 我们发送了四次 32 字节的数据包
    • 几十毫秒,说明网络比较好;上百,上千毫秒说明网络比较卡
    • 咱们初始 TTL 应该是 64,中间经过了 12 个路由器的转发,最终到达了百度

64 这样的 TTL 够用吗?

  • 正常情况下,64 这样的 TTL非常充裕
    • 六度空间理论(社会科学中的理论)
  • 而且发送数据的时候,还有 128 这样的 TTL

8位协议

image.png|159

IP 数据包中,携带的载荷,是哪种传输层协议的数据包

通过这里的不同数值,感知到接下来要把数据给 TCP 解析,还是 UDP 解析,还是其他协议解析

  • 类似于 TCP/UDP 报头中的“端口号”,决定要将这个数据交个哪个应用程序,也就是要将这个数据交给哪个应用层的具体协议进行处理
    现在 IP 协议要先交给传输层,交给哪个传输层协议进行处理,就通过 8位协议 进行标识

具体的数值这里不谈,这里暂时只聊作用

16位首部校验和

image.png
验证数据在传输中是否出错(只是针对首部,IP 报头)

  • 载荷部分 TCP/UDP 都有自己的校验和,此处就不需要再次进行验证了

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

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

相关文章

【达梦数据库】mysql 和达梦 tinyint 与 bit 返回值类型差异

测试环境 mysql5.7.44 达梦2024Q2季度版 前言 在mysql 中存在 tinyint(1)的用法来实现存储0 1 作为boolean的标识列;但是在达梦并不允许使用 tinyint(1)来定义列,只能使用 tinyint 即 取值范围为&#xff…

《深度学习》CUDA安装配置、pytorch库、torchvision库、torchaudio库安装

目录 一、下载CUDA 1、什么是CUDA 2、查看电脑支持版本号 3、下载CUDA包 1)进入下列下载位置 2)选择版本 4、安装CUDA 1)双击这个文件,然后得到下列图像 2)选择自定义安装 3)取消选项Visual Inte…

众店绿色积分模式:引领消费新风尚,共筑商业新生态

大家好,我是吴军,目前担任一家业界知名的软件开发公司产品管理的领航者。 最近,市场上涌动着一股创新商业模式的新浪潮,它不仅为消费者编织了一张省钱的网,更为商家铺设了一条吸引新客与增收的道路,甚至平…

【智能流体力学】数值模拟中的稳态和瞬态

在流体力学和数值模拟中, 稳态 (Steady State)意味着流体的物理量(如速度、压力、温度等)不随时间变化。换句话说,在稳态模拟中,系统已经达到了平衡,任何位置上的流场特性都不再随时间发生变化。 其他教程参考:https://doc.cfd.direct/openfoam/user-guide-v12/index…

Linux环境变量详解命令行参数

🌟目录 📝1. 什么是环境变量?📝2. 查看系统的环境变量📝3. 添加环境变量📝4. 环境变量用例5. 命令行参数 好雨知时节 当春乃发生 随风潜入夜 润物细无声 📝1. 什么是环境变量? 环境…

Matlab simulink建模与仿真 第十二章(信号属性库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、信号属性库中的模块概览 1、信号属性操作库 注:数据类型转换模块在第二章中有介绍,本章不再赘述;数据类型传播实例在本章也不进行介绍。 2、信号属性检测库 二、数据类…

OPENAI的 o1非常强-可是也被网友们玩坏了

OpenAI o1的潜力 OpenAI o1作为当前人工智能领域的先锋,展现了强大的推理能力和文本生成水平。其在多个标准测试中表现优异,甚至在某些任务上超越了人类PhD水平。这让人们对其能力充满期待。根据数据,o1在处理复杂语句和逻辑推理解题时&…

Qt常用控件——QTextEdit

文章目录 QTextEdit核心属性和信号同步显示示例信号示例 QTextEdit核心属性和信号 QTextEdit表示多行输入框,是一个富文本和markdown编辑器,并且能在内存超出编辑框范围时自动提供滚动条。 QPlainTexEdit是纯文本,QTextEdit不仅表示纯文本&a…

AI界的新宠儿:L20显卡凭什么让云服务商趋之若鹜?

NVIDIA L20 GPU 随着 AI 模型的规模和复杂度不断攀升,对计算能力的渴求也与日俱增。对于 C 端用户的朋友们而言,A 系列和 H 系列的价格过于昂贵,而 RTX 4090 在更高的现存需求面前也无能为力。 在这个背景下,一款新的 GPU 悄然崛起…

SQL入门题

作者SQL入门小白,此栏仅是记录一些解题过程 1、题目 用户访问表users,记录了用户id(usr_id)和访问日期(log_date),求出连续3天以上访问的用户id。 2、解答过程 2.1数据准备 通过navicat创建数据&#xf…

如何将一个软件添加到开始菜单以快速打开?

以QQ音乐为例: 1.先找到QQMusic.exe 2.右键创建快捷方式到桌面 3.经过第二步,桌面上就有了QQMusic的快捷打开方式,以后就可以通过双击这个快捷方式打开QQMusic,如果想从开始菜单打开,还需要一些工作:请你…

数据结构-线性表顺序单项链表双向链表循环链表

1数据结构概述 数据结构是计算机组织、存储数据的方式。是思想层面的东西,和具体的计算机编程语言没有关系。可以用任何计算机编程语言去实现这些思想。 1.1 数据逻辑结构 反映数据逻辑之间的逻辑关系,这些逻辑关系和他们咱在计算机中的存储位置无关。…

专题三_二分查找算法_算法详细总结

目录 二分查找 1.⼆分查找(easy) 1)朴素二分查找,就是设mid(leftright)/2,xnums[mid],t就是我们要找的值 2)二分查找就是要求保证数组有序的前提下才能进行。 3)细节问题: 总结&#xff1a…

P3565 [POI2014] HOT-Hotels

~~~~~ P3565 [POI2014] HOT-Hotels ~~~~~ 总题单链接 ~~~~~ 2024.9.10:DP方程有问题,已修改,同时更新了长链剖分优化版本。 思路 ~~~~~ 设 g [ u ] [ i ] g[u][i] g[u][i] 表示在 u u u 的子树内,距离 u u u 为 i i i 的点的…

了解国产光耦合器的核心功能和应用

光耦合器或光隔离器是现代电子产品中的关键组件,它能够在没有电接触的情况下在系统的不同部分之间安全地传输信号。这是通过基于光的信号传输来实现的,它可以隔离电路,防止高压损坏敏感元件。近年来,国产光耦合器取得了重大进展&a…

孙怡带你深度学习(1)--神经网络

文章目录 深度学习神经网络1. 感知器2. 多层感知器偏置 3. 神经网络的构造4. 模型训练损失函数 总结 深度学习 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向。 从上方的内容包含结果,我们可以知道,在学习深度学…

OpenHarmony鸿蒙开发( Beta5.0)智能油烟机开发实践

样例简介 本Demo是基于Hi3516开发板,使用开源OpenHarmony开发的应用。本应用主要功能有: 可以搜索本地指定目录的图片和视频文件,并可进行点击播放。 可以通过wifi接收来自手机的美食图片以及菜谱视频,让我们对美食可以边学边做…

昨晚,OpenAI震撼发布o1大模型!我们正式迈入了下一个时代。

大半夜的,OpenAI抽象了整整快半年的新模型。 在没有任何预告下,正式登场。 正式版名称不叫草莓,草莓只是内部的一个代号。他们的正式名字,叫: 为什么取名叫o1,OpenAI是这么说的: For complex …

TCP核心机制

TCP基本特点:有连接,面向字节流,全双工,可靠传输(TCP最核心的机制) 核心机制一(确认应答): 在网络中,可能我们传输的消息会因为诸多原因导致发送到对方手中的顺序不一样,举个例子: 在这张图中…

【鸿蒙开发从0到1 支付宝界面布局实现day11】

鸿蒙开发案例-支付宝界面 一.布局思路二.页面搭建1.整体stack布局底部的tab2.主体区域的架子:头部主体界面(层叠关系,主题页面可以滚动)3.给主体内容填内容(1).完成快捷导航(2)服务导航 4.装饰图片 三.整体效果展示1.效果展示2.完整代码演示 四.总结 一.布局思路 整体stack布局…