IP报文结构

news2024/11/19 2:27:17

文章目录

    • IP报文结构
      • 分片

IP报文结构

在这里插入图片描述

  • 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.

  • 4位头部长度(header length): 类似于TCP4位首部长度,通常填的是0101(十进制5)

  • 16位总长度(total length): IP数据报整体占多少个字节.这用于报文和有效载荷的分离,向上交付,解决粘包问题。

  • 8位协议: 表示上层协议的类型。这用于决定向上交付的时候自己的有效载荷应该交付给谁(TCP/UDP),这是由上层协议填的,自然也就传送给对等的协议。


分片

  • 以下部分有关IP报文分片

首先,IP分片不是大多数情况,只有在某些条件下会进行分片。

  • 那为什么会分片呢?

数据链路层一次可以往网络里发送的数据大小是有限制的:

MTU = 1500byte

如果报文太大的话,就要解决如何传输的问题。

这里就会用到IP分片,并且分片后的每个IP报文都需要带有相同的报头(相当于寄大件快递时,可能会拆分成几个快递,都需要添加相同的目的地址)

  • 分片成功了,还需要考虑组装的问题

对于传输层来说,它只需要做出决策就行了,不会管下层的网络层如何做到。

所以分片和组装都是在网络层IP解决的。每个层次有每个层次不同的任务,这个部分就是网络层负责。

而组装的过程,就是根据13位片偏移进行升序排序即可。

  • 分片的风险

由于分成了多个包,那么丢包的概率自然也会上升。如果丢了其中一个包,整个组装的包都会丢掉,由传输层进行重传。

所以并不建议分片,会增加丢包风险,这也是为什么前面说分片不是大部分情况。

  • 既然分片有风险,如果不想分片,是由谁决定?

很明显这是由传输层说了算,因为发多少、怎么发都是由传输层决定的,既然一次IP报文最大是一个MTU,那传输层一次不传超过MTU的数据,不就可以降低分片的概率了吗?

总的来说,传输层和网络层的分工就很明显了:决策VS执行。

介绍完分片,以下的字段就很好理解了:

  • 16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的所以这个字段的功能是把标识相同的报文聚在一起。

  • 13位分片偏移(framegament offset): 标识本报文的有效载荷,在原始报文有效载荷中的偏移量。所以这个字段的功能是把所有标识一样的报文组合在一起
    这个字段还可以甄别是否丢包的情况,因为如果没有丢包,本报文的偏移量加上上一个报文偏移量肯定是下一个报文的偏移量,如果不符合肯定就是丢包了。但是也会怕最后一个报文丢包,因为无法得知偏移量是否匹配。但是不是有16位报文长度吗?按照这个长度不就可以得知总长度是否符合吗?这是错的,因为这个16位总长度代表的仅仅是本报文的长度,和整个组装后的报文长度是不一样的。但是,接下来的3位标志字段可以解决这个问题。

  • 3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文,十分强硬。 第三位表示"更多报文", 如果置1了,代表后面还有更多分片,反之则没有。所以可以用来解决上述的 “最后一个报文是否收到” 的问题。
    有了最后一个标志位,即可表示所有分片报文是否收全。

  • 接收数据的一方,如何得知收到的报文是分片的一方还是独立的一方?

可以根据13位片偏移得知:如果为0,就是未分片;如果不为0,就是分片。

那如果分片了,并且是第一个分片呢?偏移量不也为0?

可以根据3位标志:如果符合第一个分片,那后续必定会有其他分片,所以该字段的最后一位必定为1。


  • 32位源地址和32位目标地址: 表示发送端和接收端.
  • 8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL-= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环
  • 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏.

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

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

相关文章

大数据企业应用合作解决方案案例

打造产教融合的就业育人的综合服务平台,给予十余年的数据智能产业实践经验,专注于大数据和人工智能方向。 目前合作的企业案例包括:信访大数据平台解决方案、工业废水处理解决方案、找齐远程监控解决方案、道路运输安全、广电用户服务大数据解…

VS2019 c++ cmake项目 打包并使用 (lib\dlll)

背景 最近项目中经常调用第三方库、带头文件、lib和dll的库,需要使用cmake进行项目管理,之前一直比较糊涂这方面,在这里做一个整理总结 编译汇编过程 静态链接方式: 把lib里面编译好的东西(函数、变量等&#xff09…

【Yolo】YoloV5训练自定义模型

【Yolo】Jetson Orin Nano下部署 YoloV5 上一篇博文主要记录了在Jetson Orin Nano下部署YoloV5环境,并运行了yoloV5n.pt模型,本篇在上一篇的基础上,进一步记录如何训练自己的目标模型,我们以一根口香糖盒子为训练对象进行说明。 …

Kali Linux 操作系统安装详细步骤——基于 VMware 虚拟机

1. Kali 操作系统简介 Kali Linux 是一个基于 Debian 的 Linux 发行版,旨在进行高级渗透测试和安全审计。Kali Linux 包含数百种工具,适用于各种信息安全任务,如渗透测试,安全研究,计算机取证和逆向工程。Kali Linux 由…

学习笔记(4)页面开发

目录 1,页面开发1.1,标签类1.2,资源引用1.3,页面跳转 2,开发规范2.1,应用生命周期2.2,页面生命周期:2.3,条件编译 3,注意事项 1,页面开发 1.1&am…

真实业务场景使用-模板模式+策略模式组合

模板和策略设计模式一般是使用最频繁的设计模式,模板的场景主要是处理一系列相同的流程,将这些流程放到模板里,每个流程里的处理可能有一些不一样的地方,则可以抽象出一个方法,由每一个有实际意义的子类实现。 策略模…

从供应链角度看进销存:区别与联系

供应链和进销存是两个紧密相关的概念,它们都涉及到企业在商品贸易中的运作过程。虽然它们有一些相似之处,但是它们也有一些显著的区别。本文将从几个方面探讨供应链和进销存的区别。 一、概念定义 供应链的定义:供应链是一系列的活动&#…

WPF 多媒体MediaElement 的使用(一)

本章讲述MediaElement的简单使用: WPF 中对于多媒体的支持非常完整,可以使用MediaElement 为应用程序添加媒体播放控件,以完成播放音频、视频功能。MediaElement 属于UIElement,同时也支持鼠标及键盘的操作。 想以交互方式停止、…

通达信N字形态选股公式,突破前期高点发出信号

行情经历一波上涨之后回调,然后再次上涨,形态类似于字母N,这就是N字形态。该形态在不同的分析方法中均有描述,如123法则、波浪理论等,只是名称不同而已。 本文的N字形态选股公式,以突破前期波段高点发出信号…

2023年留学基金委(CSC)青年骨干教师出国研修项目解读及建议

5月4日,国家留学基金委(CSC)公布了2023年青年骨干教师出国研修项目通知,知识人网小编现将其选派工作流程、选派办法、申请材料及说明原文转载并加以解读、提出建议。 知识人网解读及建议 一、2023年的通知精神与往年相比&#xf…

MySQL索引、事务与存储引擎

数据库索引 是一个排序的列表,存储着索引值和这个值对应的物理地址,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)无需对整个表进行扫描,而是先通…

C++图文安装教程,计算机零基础都能懂

系统:win11 软件:code blocks&DEV-CPP 文章目录 一、Dev-Cpp安装步骤1.点击安装包2.选择我们的语言为English3.选择我同意即可4.点击next就可以,最后一个框除非是你之前有写过C的项目,想要清除,否则我们不用…

【Java|golang】2432. 处理用时最长的那个任务的员工

共有 n 位员工,每位员工都有一个从 0 到 n - 1 的唯一 id 。 给你一个二维整数数组 logs ,其中 logs[i] [idi, leaveTimei] : idi 是处理第 i 个任务的员工的 id ,且 leaveTimei 是员工完成第 i 个任务的时刻。所有 leaveTimei…

Android---启动速度优化

App 启动流程 1. 点击桌面 App 图标,Launcher 进程采用 Binder IPC 向 system_server 进程发起 startActivity 请求 ; 2. system_server 进程接收到请求后,向 zygote 进程发送创建进程的请求; 3. zygote 进程 fork 出新的子进程…

KDGK-F断路器机械特性测试仪

一、产品概述 KDGK-F 断路器机械特性测试仪可用于各电压等级的真空、六氟化硫、少油、多油等电力系统高压开关的机械特性参数测试与测量。测量数据稳定,抗干扰性强,可在500KV等级及以下电站做实验,接线方便,操作简单,是…

TikTok选品要怎样才能选到爆品?!

对于做TikTok的商家而言,选品是非常重要的,因为一个产品爆了之后能带动其他产品的销量,那我们要如何有效的选品呢? 一、多平台选品逻辑 首先要知道一个点,在独立站爆的品也会在亚马逊爆,而TikTok已经成为一…

安卓Glide那些事情面试,一篇全部搞定

安卓Glide那些事情面试,一篇全部搞定 一.Glide有几级缓存???二.Gllide源码分析三.内存缓存和磁盘缓存LruCache算法四.Gllide基本使用五.Gllide高级使用:配置1.配置内存和磁盘缓存大小2.配置okhttp3.配置https认证4.使用 一.Glide有…

冲浪杂记——

华为od是指什么? 华为OD(Open Developer Platform)是华为面向全球开发者推出的开放平台,旨在为开发者提供丰富的技术资源和开发工具,支持开发者快速构建基于华为技术的应用程序、解决方案和服务。华为OD平台为开发者提…

微软新Bing全面开放BingChat,无需排队,直接用

我是卢松松,点点上面的头像,欢迎关注我哦! 好消息,所有人都能上手微软Bing了!微软表示,为了感谢大量用户的使用与反馈,从今天起新 Bing 不再有候补名单,只要使用微软账户登录 Bing,…

函数(1)

文章目录 目录1. 函数是什么2. 库函数3. 自定义函数4. 函数的参数4.1 实际参数(实参)4.2 形式参数(形参) 5. 函数的调用5.1 传值调用5.2 传址调用5.3 练习 附: 目录 函数是什么库函数自定义函数函数的参数函数的调用函…