网络工程师 (43)IP数据报

前言

       IP数据报是互联网传输控制协议(Internet Protocol,IP)的数据报格式,由首部和数据两部分组成。

一、首部

       IP数据报的首部是控制部分,包含了数据报传输和处理所需的各种信息。首部可以分为固定部分和可变部分。

  1. 固定部分

    • 版本:占4位,指IP协议的版本。目前广泛使用的协议版本号为4(即IPv4)。通信双方的协议版本必须一致。
    • 首部长度:占4位,表示数据报首部的长度。因首部长度可表示的最大数值是15个单位(每单位为4字节),所以IP的首部长度的最大值为60字节。
    • 区分服务:占8位,表示对数据报的服务要求。该字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。其中,前三位表示优先级(0~7,0最低),D、T、R和C分别表示对时延、吞吐量、可靠性和路由服务费用有选择的要求。最后一位未用。
    • 总长度:占16位,指整个数据报(包括首部和数据)的长度,单位为字节。数据报的最大长度为65535字节(64KB)。这个字段很重要,因为数据报在传输过程中需要被封装成链路层的帧,而帧有自己的最大传输单元MTU(Maximum Transfer Unit)。如果数据报的总长度超过了MTU,那么就需要对数据报进行分片。
    • 标识:占16位,用于数据报各分片最终被重装成原来的数据报。它是一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。目的主机将相同标识字段值的各分片数据报最后进行正确地重装(合片)。
    • 标志:占3位,但只有后两位有意义。最低位记作MF(More Fragment),MF=1表示后面“还有分片”,MF=0表示已是最后一个分片。次低位是DF(Don't Fragment),用来控制是否允许数据报分片。只有DF=0才允许分片。
    • 片偏移:占13位,指较长的分组在分片后某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始,以便目的主机重装数据报。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节(64位)的整数倍。
    • 生存时间:占8位,记为TTL(Time To Live),表示该数据所在网络中的寿命。其单位最初是秒,但为了方便,现在都用“跳数”作为TTL的单位。数据报每经过一个路由器,其TTL值就减1,当TTL值减为零时,就丢弃这个数据报。
    • 协议:占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
    • 首部检验和:占16位,这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
    • 源地址:占32位,表示数据报的发送方地址。
    • 目的地址:占32位,表示数据报的接收方地址。
  2. 可变部分

    • 可变部分是一个可选字段,其长度可变,从1个字节到40个字节不等,取决于所选择的项目。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段包括安全和处理限制(用于军事领域)、记录路径(让每个路由器都记下它的IP地址)、时间戳(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)、宽松的源站路由(Loose Source Route)(为数据报指定一系列必须经过的IP地址)以及严格的源站路由(Strict Source Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)等。
    • 增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的,增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用,新的IP版本IPv6就将IP数据报的首部长度做成固定的。

二、数据部分

       数据部分是高层需要传输的数据。在IP数据报中,数据部分紧跟在首部之后,其长度由总长度字段减去首部长度字段得到。

三、IP数据报的工作原理

  1. 封装与发送:在源主机上,传输层的数据交给IP协议后,IP协议要在其前面加上一个IP报头(即首部),用于控制对数据的转发和处理等。然后,通过地址解析协议ARP将目的IP地址映射为物理地址,把IP数据报嵌入数据链路层帧中,交由数据链路层完成将其发送到网络上的工作。

  2. 寻址与路由:当IP数据报在网间穿行时,网络上的IP协议需要对它进行寻址和路由选择,以使其正确到达目的地。

  3. 分段与重组

    • 分段:如果一个路由器收到一个IP数据报,其长度对下一个物理网络来讲太长,那么就由IP协议将它分成若干个段。分段可以在任何需要的中间路由器上进行。在IP报头中,用标识符、标志和片偏移三个字段来实现对报文的分段。
    • 重组:当这些分段到达目的主机时,由端系统中的IP层将其重组成源IP数据报,然后传至传输层处理。
  4. 流量控制:IP层还提供初步的流量控制。如果由于IP分组到达主机或路由器太快而被丢弃时,IP层就会发送一个ICMP源抑制报文给发送端,告诉它数据发得太快了。

 结语        

每一个心灵的闪光瞬间

都是对生活的深深热爱与感悟

!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

部署k8s 集群1.26.0(containerd方式)

随着k8s版本逐步更新,在不支持docker环境的情况下,需要使用containerd方式作为容器引擎。为了更好的个人学习使用,需要重新部署一套1.26.0版本的k8s集群,并且使用containerd方式作为容器引擎,版本为1.6.33。在部署过程…

移动通信发展史

概念解释 第一代网络通信 1G 第二代网络通信 2G 第三代网络通信 3G 第四代网络通信 4G 4g网络有很高的速率和很低的延时——高到500M的上传和1G的下载 日常中的4G只是用到了4G技术 运营商 移动-从民企到国企 联通-南方教育口有人 电信 铁通:成立于 2000 年…

HarmonyOS进程通信及原理

大家好,我是学徒小z,最近在研究鸿蒙中一些偏底层原理的内容,今天分析进程通信给大家,请用餐😊 文章目录 进程间通信1. 通过公共事件(ohos.commonEventManager)公共事件的底层原理 2. IPC Kit能…

openCV中如何实现滤波

图像滤波用于去除噪声和图像平滑,OpenCV 提供了多种滤波器: 1.1. 均值滤波: import cv2# 读取图像 image cv2.imread("example.jpg")# 均值滤波 blurred_image cv2.blur(image, (5, 5)) # (5, 5) 是滤波核的大小 滤波核大小的…

Linux网络 | 多路转接Reactor

前言:本节内容结束Linux网络部分。本节将要简单实现一下多路转接Reactor的代码,制作一个多路转接版本的四则运算计算器服务器。Reactor的代码相当困难,除了350多行新代码, 还要用到我们之前写的许多文件, 比如之前写的…

数控机床设备分布式健康监测与智能维护系统MTAgent

数控机床设备分布式健康监测与智能维护系统MTAgent-v1.1融合了目前各种先进的信号处理以及信息分析算法以算法工具箱的方式,采用了一种开发的、模块化的结构实现信号各种分析处理,采用Python编程语言,满足不同平台需求(包括Windows、Linux)。…

Opencv项目实战:26 信用卡号码识别与类型判定

项目介绍 在日常生活中,信用卡的使用越来越普遍。本项目的主要目标是通过图像处理技术自动识别信用卡号码,并根据信用卡号码的第一个数字判定信用卡的类型(如Visa、MasterCard等)。项目结合了图像预处理、轮廓检测、模板匹配等技…

利用websocket检测网络连接稳定性

浏览器中打开F12,控制台中输入以下内容 > 回车 > 等待结果 连接关闭 表示断网 let reconnectDelay 1000; // 初始重连间隔 let pingInterval null; let socketManuallyClosed false; // 标志是否手动关闭function createWebSocket() {if (socketManuallyCl…

WPF9-数据绑定进阶

目录 1. 定义2. 背景3. Binding源3.1. 使用Data Context作为Binding的源3.2. 使用LINQ检索结果作为Binding的源 4. Binding对数据的转换和校验4.1. 需求4.2. 实现步骤4.3. 值转换和校验的好处4.3.1. 数据转换的好处 4.4. 数据校验的好处4.5. 原理4.5.1. 值转换器原理4.5.2. 数据…

【Unity Shader编程】之图元装配与光栅化

执行方式:自动完成 图元装配自动化流程 顶点坐标存入装配区 → 按绘制模式连接顶点 → 生成完整几何图元 示例:gl.drawArrays(gl.TRIANGLES, 0, 3)自动生成三角形 会自动自动裁剪超出屏幕范围(NDC空间外)的三角形,仅保…

ssm121基于ssm的开放式教学评价管理系统+vue(源码+包运行+LW+技术指导)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

网工项目理论1.11 网络出口设计

本专栏持续更新,整一个专栏为一个大型复杂网络工程项目。阅读本文章之前务必先看《本专栏必读》。 一.网络出口接入技术 二.单一出口网络结构 三.同运营商多出口结构 四.多运营商多出口结构——出向流量 五.多运营商多出口结构——服务器访问流量 六.多运营商多出口…

Django 5 实用指南(一)安装与配置

1.1 Django5的背景与发展 Django 自从2005年由Adrian Holovaty和Simon Willison在 Lawrence Journal-World 新闻网站上首次发布以来,Django 一直是 Web 开发领域最受欢迎的框架之一。Django 框架经历了多个版本的演进,每次版本更新都引入了新功能、改进了…

Redis实战-扩展Redis

扩展Redis 1、扩展读性能2、扩展写性能和内存容量3、扩展复杂的查询3.1 扩展联合查询3.2 扩展分片排序 如有侵权,请联系~ 如有错误,也欢迎批评指正~ 本篇文章大部分是来自学习《Redis实战》的笔记 1、扩展读性能 单台Redis服务器…

【AI面板识别】

题目描述 AI识别到面板上有N(1 ≤ N ≤ 100)个指示灯,灯大小一样,任意两个之间无重叠。 由于AI识别误差,每次别到的指示灯位置可能有差异,以4个坐标值描述AI识别的指示灯的大小和位置(左上角x1,y1&#x…

朴素模式匹配算法与KMP算法(有next[]和nextval[]详细讲解

这篇文章是建立在上篇文章的基础上的,看此篇文章要有串的基本知识 举个例子引进我们今天的知识 假设我们这里有两个字符串,一个主串,一个子串 主串: aaa223aa225 子串: aa22 我们这里需要进行匹配,传统的朴素模式匹配算法,就是主串下标i从1开始,主串j从1开始…

文件操作(PHP)(小迪网络安全笔记~

免责声明:本文章仅用于交流学习,因文章内容而产生的任何违法&未授权行为,与文章作者无关!!! 附:完整笔记目录~ ps:本人小白,笔记均在个人理解基础上整理,…

【分治法】棋盘覆盖问题 C/C++(附代码和测试实例及算法分析)

问题描述 在一个 2 k 2 k 2^k \times 2^k 2k2k大小的棋盘中,有一个与其他方块不同的特殊方块,如下图红色方块。另有4种形态不同的L型骨块(见下图),要用图示四种骨块覆盖棋盘上除特殊方格外的其他所有方格&#xff0c…

el-table的hasChildren不生效?子级没数据还显示箭头号?树形数据无法展开和收缩

问题:明明子级只有一条数据,还显示箭头号 原因:最开始row-key写的是id,父级和子级都有该属性,所以展开失效了。 解决方法:row-key:id改成 row-key"name"

2002-2019年各省人口老龄化程度数据

2002-2019年各省人口老龄化程度数据 1、时间:2002-2019年 2、来源:国家统计局、统计年鉴 3、指标:地区、年度、六十五岁以上占比 4、范围:31省 5、指标解释:人口老龄化是指人口生育率降低和人均寿命延长导致的总人…