当前位置: 首页 > news >正文

IPv4分组

4.3.1 IPv4分组

IP协议定义数据传送的基本单元——IP分组及其确切的数据格式

1. IPv4分组的格式

IPv4分组由首部和数据部分(TCP、UDP段)组成,其中首部分为固定部分(20字节)和可选字段(长度可变,用于提供错误检测及安全等机制)

1)版本:指IP协议的版本

2)首部长度:占4位,可以表示最大的数为15。以32位为单位,最大值为60B(32 * 15 / 8 = 64B),最常用的首部长度是20B,最小为数字5即(0101),因此取值范围为(0101 ~ 1111)

3)总长度:占16位,指首部和数据之和长度单位为字节,因此IP数据报的最大长度为 2 16 − 1 = 65535 B 2^{16} - 1 = 65535B 2161=65535B,以太网帧的最大传送单元(MTU)为1500B(IP数据报的长度不能超过此值)

4)标识:占16位,它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。

5)标志:占3位,标志字段最低位为MF,等于1表示后面还有分片,0表示最后一个分片,标志位中间一位为DF,当其为0时才允许分片

6)片偏移:占13位,它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8个字节为偏移单位。除最后一个分片外,每个分片的长度一定是8B的整数倍

7)生存时间(TTL):占8位,数据报在网络中可通过的路由器数的最大值,为了确保帧不会永远在网络中循环,路由器在转发分组前,先把TTL减1。 若TTL被减为0,则该分组必须丢弃。

8)协议:占8位,指出此分组携带的数据使用何种协议(其中TCP协议为6,UDP协议为17)

9) 首部校验和:占16位。首部校验和只校验分组的首部,而不校验数据部分

10)源地址字段:占4B,标识发送方的IP地址

11) 目的地址字段:占4B,标识接收方的IP地址

在这里插入图片描述

首部长度、总长度、片偏移,基本单位 分别为4B、1B、8B

2. IP数据报分片

一个链路层数据报能承载的最大数据量称为最大传送单元(MTU)

当IP数据报的总长度大于链路MTU时,就需要将 IP数据报中的数据分装在多个较小的IP数据报中,这些较小的数据报称为

目的主机上,使用IP首部中的标识、标志、片偏移来完成对的组装

原理:

  • 在将数据报进行分片时,形成的每个数据报(片)都具有原始数据报的标识号。因此收到数据后,IP首部的标识相同就说明这些数据属于同一个原始数据报的片
  • IP首部中的标志位占3位,但只有后2位有意义,分别是MF位(More Fragment) 和DF位(Don’t Fragment),DF = 0表示该IP数据报才可以被分片MF则用来告知目的主机该IP数据报是否为原始数据报的最后一个片。当MF= 1表示相应的原始数据报还有后续的片;当MF = 0表示该数据报是相应原始数据报的最后一个片
  • 使用片位移字段来确定该片应该在原始数据报的哪个位置

进行分片时,除了最后一个片,其他所有片的有效数据载荷都是8B的倍数
计算片偏移时,第一个片的片偏移为0,其往后每个片偏移的值为其起始值除以8B

http://www.lryc.cn/news/128830.html

相关文章:

  • Jmeter常用功能-参数化介绍
  • “深入探索JVM内部机制:解密Java虚拟机的工作原理“
  • C++超基础语法
  • 位运算相关题目:下一个数、整数转换、配对交换
  • 【数据结构】链表常见题目
  • 多家企业加入即将在2024年发射的量子卫星SpeQtral-1任务
  • shell脚本基础
  • 创建maven的Springboot项目出现错误:Cannot access alimaven
  • 神经网络基础-神经网络补充概念-32-神经网络与大脑
  • linux自动填充密码及提示信息
  • IC设计中主要的EDA工具有哪些? (内附EDA虚拟机安装资源)
  • Zabbix配置通用的TCP/IP:port监控项
  • 【RocketMQ】SpringBoot集成RocketMQ
  • 思腾云计算
  • 前端面试:【HTML】语义化标签、表单、媒体元素
  • 2024浙大MBA/MEM/MPA四个月冲刺备考策略
  • Element通过v-for循环渲染的form表单校验
  • 精彩回顾 | 迪捷软件出席2023ATC汽车电子与软件技术周
  • 树莓派的自启动与桌面应用程序
  • RabbitMQ面试题
  • Kubernetes二进制部署方案
  • Android 13 开启关闭飞行模式
  • C++学习笔记总结练习:EffectiveSTL
  • SQL Developer中的Data Redaction
  • 深入解析Ed25519椭圆曲线数字签名算法的C#移植及应用示例
  • XQuery创建BaseX数据库实例
  • MySQL索引(Index)
  • web框架面试题
  • 什么是字体堆栈(font stack)?如何设置字体堆栈?
  • 推特群推王:引爆您的产品