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

IP报文格式、IPv6概述

IPv4报文格式

在这里插入图片描述
IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下),下面来逐一介绍首部各个字段的含义

  • Version版本:表示采用哪一种具体的IP协议,对于IPv4来说该字段就填充4以表示,如果是IPv6就填充6
  • IHL首部长度:如果IP首部中出现了可选字段和填充,那么首部的长度是不固定的,需要根据该字段中的数值来表示首部的真实长度
  • TOS区分服务:表明服务质量,通过填充不同的数来改变最低延迟、最大吞吐、最大安全等权值,不过该字段在IPv4中一般都不被使用,原因在于TOS控制增加了太多复杂度难以维护
  • Total Length总长度:表明IP报文的总长度,如果想要得到正文部分的长度,只要将总长度(Total Length)减去首部长度(IHL)即可得到
  • Identification标识:用于分片重组,属于同一IP包的分片标识字段是相同的值,报文接受主机可以凭借该字段对分片进行重组
  • Flags标志:有3比特组成,第1位不使用恒定为0;第2位标识此IP报文是否允许被分片(0允许1拒绝),该位在确定路径MTU时有用;第3位标志IP在第2位为1时才有用,表示是否为最后一个分片(0是1非)
  • Fragment Offset片偏移:接受主机收到属于同一IP包的分片时,需要对其进行按序重组后才能向上交付,片偏移字段中记录了当前正文数据在完整数据正文中的偏移量
  • TTL生存时间:IP报文在网络中是有传输时间限制的,如果在范围之内没有到达目标,这个报文就被路由器丢弃不在转发(每经过一个路由器TTL减1,至0丢弃)
  • Protocol协议:指示上层采用的协议种类,是UDP填17,TCP填6
  • Header CheckSum首部校验和:用于检查报文有没有发生错误,如有则丢弃
  • SA源地址 DA目标地址:发送报文的主机IP和接受报文的主机IP
  • Option可选字段:可以设置安全级别、源路径、路径记录、时间戳等信息(一般不用)
  • Padding填充:如果IP报文具有可选字段,需要将首部长度调整为32的倍数

IPv6(仅作了解)

IPv6必要性
IP v6用以解决IP v4绝对数量不足的问题,一个IPv6的地址为16字节,其能够表示的范围远远大于IPv4。遗憾的是IPv6和IPv4不兼容,从IPv4过渡到IPv6是一项艰巨的任务

IPv6地址结构

IPv6地址以16比特为一组的点分十六进制表示,如FEDC:BA98:7654:3210:FEDC:BA98:7854:3211,与IPv4类似的也分为网络标识和主机标识

IPv6特点

  • IP地址扩大与路由控制表的聚合
  • 性能提升:首部采用固定40字节,无需首部校验码,不需要做分片处理
  • 即插即用:没有DHCP服务器也能自动分配IP地址
  • 安全性更高
  • 多播、Mobile IP成为扩展功能

IPv6报文格式

在这里插入图片描述

  • Version:填充6
  • 通信量类:等价于IP v4的TOS
  • 流标号:用于服务质量控制
  • 有效载荷长度:正文长度(不包括首部,因为首部固定40B)
  • 下一个首部:指示上层协议类型
  • 跳数限制:等价于TTL
  • 源地址目标地址:发送报文的主机IP和接受报文的主机IP

IP分片与重组

由于不同数据链路所支持的最大传输单元MTU不一致,当IP报文长度超过MTU时,需要将一个报文拆分为小于MTU的报文分批次传输,当这些分片到目标主机时被重组(注:分片由路由器完成,但重组必须由目标主机来完成)

在这里插入图片描述
分片的弊端很明显:就是增加了路由器负担和数据包丢包的概率,如果由一个分片丢失,那么整个IP报文全部作废,即使已经收到了其他分片,此时就需要发送端重传(需要可靠传输时),无疑提高了时间成本,因此需要通过一定的算法尽可能的减少分片

路径MTU

路径MTU是指从发送主机到目标主机之间不需要分片时的最大MTU大小(路径中存在的所有数据链路中最小的MTU),如果每一次发送的报文长度小于路径MTU,节点路由器就不需要分片操作,分片操作只会由发送主机进行(减少路由器压力)
**如何确定路径MTU:**通过试探性发送完整数据包给下一跳节点,下一跳节点会返回其所管理的网段的MTU,迭代操作直至发送主机不在收到MTU告知时就可以确定路径MTU
在这里插入图片描述
如果上层采用的是可靠传输TCP,那么通过MTU可以计算出MSS(最大段长度)的值,使得传输层每一次交给网络层的报文长度一定是小于MTU的,这样连发送主机都不用进行分片操作了。
在这里插入图片描述

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

相关文章:

  • 学习记录:js算法(六十七):任务调度器
  • 5分钟8图:Cursor如何让编程效率提升5倍?
  • 车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导
  • PACT 在微服务架构中的用途
  • LeetCode 3200.三角形的最大高度:枚举
  • ssm基于java的招聘系统设计与开发+vue
  • 【网络原理】TCP/IP五层网络模型之网络层-----IP协议详解,建议收藏!!
  • 三次握手与四次挥手
  • awk命令学习记录
  • 科大讯飞嵌入式面试题及参考答案
  • C Lua5.4.6 SDK开发库
  • 无线网卡知识的学习-- wireless基础知识(cfg80211)
  • Next.js 学习 - 路由系统(Routing)
  • Unity XR PICO 手势交互 Demo APK
  • EM算法学习
  • 019_基于python+django食品销售数据分析系统2024_4032ydxt
  • C语言笔记(数据的存储篇)
  • wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理的解决方法
  • CSS 居中那些事
  • Java项目-基于springboot框架的智能热度分析和自媒体推送平台项目实战(附源码+文档)
  • 跨平台进程池背后的思想
  • 前端性能优化之加载篇
  • 数据结构(栈)
  • Aspose.PDF功能演示:使用 JavaScript 从 PDF 中提取文本
  • 计算机系统简介
  • 学习文档10/18
  • Redis入门到精通(二):入门Redis看这一篇就够了
  • 荒岛逃生游戏
  • 玫瑰花HTML源码
  • 【wpf】07 后端验证及令牌码获取步骤