ip报头和ip报文切片组装问题

news/2024/11/14 23:28:44/

 在tcp层将数据打包封装向下传递后,网络层将其整个看为一个数据,然后对其数据加网络报头操作,在网络层最具有代表的协议就是ip协议。在这里我们探究ipv4的报头。

ip报头

4位版本:指定ip的版本号,对于ipv4来说就是4。

4位首部长度:和tcp报头一样,15个单位,每个单位代表4个字节。

8位服务类型:3位弃用,1位待用,还有4位分别标识:: 最小延时, 最大吞吐量, 最高可靠性, 最小成本,仅能存在一位被设置,假设是打游戏那就要设置最小延迟,如果是文件传输就要最大吞吐量,如果是银行转账就是最高可靠性。这是给路由器看的位。

16位报文长度:顾名思义,就是报文的大小

16位标识、3位标识位、13位偏移我们等等再唠。

8位生存时间:就是个计数器,防止报文长时间占用网络。

16位首部检验和:防止数据丢失篡改等等。

32位源ip地址:就是发送方的ip。

32位目的ip地址:该报文要去的目的机器ip。

报文切片组装

由于在网络中流动的报文是有大小限制的,一般而言,在ethernet默认MTU值为1500字节,我们就以1500字节讨论这个切片问题。

当传输层tcp协议向下传递了一个2980字节的数据帧。

在网络层中如果报文过大,必须将其做分片操作。

介绍报头第二行设置

16位标识:每一个在网络层组装的报文都是不同的16位标识,类似于tcp层的32位序列号,这个序列号是区分不同报文的序列号,如果从网络得到相同的16位标识的报文,那么报文就是被切片了。

3位标识:1位待用,1位禁止切片的标识,如果某个报文该位被设置,但是又过大,那么就直接将其报文丢弃。1位更多分片标志位,如果有报文该位被设置1,那么其报文之后一定还有报文在路上,如果被标识为0,原可能未被分片,或者是分片的最后一片。

13位分片位置:就是该分片在原报文中的起始位置。


5个问题:

  1. 分片好吗?
  2. 如何识别ip报文的不同
  3. 如何识别分片
  4. 如何分片。
  5. 如何对获得的分片组合
  6. 异常处理

1、分片并不是主流,分片增加了网络负担,并且升高了丢包率。

2、依托ip报头中的16位标识,区分报文,原报文不同的情况下,报文取得16位标识是一定不同的

3、如果发现接收多个ip报文16标识相同说明报文被分片,当然不同标识也不是未被分片。如果发现3位标识的“更多分片”被设置为1,那么就说明被分片了(最后一个分片设置为0)。如果偏移设置不为0,说明被分片了(第一个分片的分片偏移为1)。

4、分片过程:

分片后必须为其他报文增加新的ip报头。每次切分后需要设置新旧报头的3个标识:报文总大小,更多分片,13为分片偏移。

5、分片组合

6、异常处理,如果接收到多个分片报文,会留存分片报文到最大网络传输时间,如果在时间后仍然分片报文为齐全,则将该全部16为标识相同的分片报文全部丢弃。 


http://www.ppmy.cn/news/1170369.html

相关文章

【软考】12.1 范围管理/进度管理

《范围管理》 项目需求的范围边界工作分解结构(WBS):自上而下的分解结构 产品范围和项目范围 产品范围: a. 产品或服务应包含的功能 ——> 产品要求的描述 b. 判断是否完成:是否满足产品描述 项目范围:…

Java File与IO流学习笔记

内存中存放的都是临时数据,但是在断电或者程序终止时都会丢失 而硬盘则可以长久存储数据,即使断电,程序终止,也不会丢失 File File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文…

基于FPGA的图像拉普拉斯变换实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a vivado2019.2 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 202…

hutool 工具类提高编码效率

hutool 工具类 hutool 依赖 引入 hutool 依赖包。 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.6</version> </dependency>StrUtil 常用方法&#xff1a; StrUtil.equals&…

短视频矩阵系统源码---php搭建

一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统&#xff0c;目前是全国源头独立开发)&#xff0c;开发功能大拆解分享&#xff0c;功能大拆解&#xff1a; &#xff08;1&#xff09;数据概览&#x…

半导体用超高纯管材行业头部企业市场占有率及排名调研报告

内容摘要 本文调研和分析全球半导体用超高纯管材发展现状及未来趋势&#xff0c;核心内容如下&#xff1a; &#xff08;1&#xff09;全球市场总体规模&#xff0c;分别按销量和按收入进行了统计分析&#xff0c;历史数据2018-2022年&#xff0c;预测数据2023至2029年。 &…

AST反混淆实战|某国外混淆框架一小段混淆js还原分析

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 1. 需求 我相信做币圈爬虫的兄弟&#xff0c;或多或少的见过类似下面的…

Mysql数据库 2.SQL语言 数据类型与字段约束

Mysql数据类型 数据类型&#xff1a;指的是数据表中的列文件支持存放的数据类型 1.数值类型 Mysql当中有多种数据类型可以存放数值&#xff0c;不同的类型存放的数值的范围或者形式是不同的 注&#xff1a;前三种数字类型我们在实际研发中用的很少&#xff0c;一般整数类型…