| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> IPv4与IPv6的区别 -> 正文阅读 |
|
[网络协议]IPv4与IPv6的区别 |
先来了解IPv4与IPv6的报文格式的区别。 1.IPV4和IPV6的叫法: 因特网协议(Internet Protocol)。 IPV4和IPV6只干两件事: 它不用定义数据发送的规则,数据怎么传输是由2层来定义的。 一、定义3层报头的格式。让你三层具备哪些功能。 二、定义3层地址信息。IPV4定义的就是IPV4地址,IPV6定义的就是IPV6地址。 2.协议的定义: 不管是IPV4、IPV6、二层协议、三层协议、四层协议,都称为封装协议。这些协议本身不会产生数据,这些协议只用定义一个封装报文,这些协议都是为上层的应用转发流量的时候来提供三层封装服务。 3.封装结构: 在以太网环境中收到一个数据帧是以太网二封装它的类型字段的值是0X0800代表三层使用的是IPV4。类型字段的值是0x86DD代表三层使用的是IPV6。 IPV4报头:从左往右看,从上到下看。 其中有个IP Options代表你IP报头可以包含这个字段也可以不包含,说明IPV4报头是可变长的。这些可变长的也分为两个部分: 第一是主报头。如图所示的前五行12个字段。 第二是扩展报头。如图所示最后一行1个字段。 IPV4报头长度总结: 最短20字节,每一层长度是4字节,一共5层。可选项就是扩展报头最多40字节,IPV4报头长度20-60字节。 所有的三层封装协议和四层封装协议在设计报文架构的时候都遵循了一个原则: 三层四层长度必须能被4字节整除。以太网二是14字节不能被4字节整除是因为不属于三层四层的范畴。 可选项引申: 在IPV4环境中有很多高级的扩展特性,这些特性如果想应用必须给主报头扩充一些字段,所有被扩充出来的这些可有可无的字段都属于可选项。可选项有很多字段并且含义不一样,在扩充的时候有可以要扩充其中的一些,有可能扩充其中的全部,当在扩充一些字段会出现当你主报头添加扩充报头之后它的长度不能被4字节整除,解决办法是在可选项报头的身后去填充连续的0直至能被4字节整除。 主报头解读: 第一个字段Version(版本)描述是IPV4。 第二个字段Header Lengh(报头长度)描述你有多少个字节,因为长度可变你每次发送的数据是多少字节不能确定,通过这个字段来告诉接收者你的IP报头有没有添加可选项,没有添加就是20字节,添加就是大于20字节。 第三个字段Type Of Service (服务类别)简称TOS。用来实现IP QOS(服务质量)的。现在网络环境中有上网玩游戏的冲浪流量、办公业务流量、上传下载大批量文件的大块数据流量、交互式视频会议流量、Voip语音流量、动态路由选择协议流量这些不同类别的流量发送品质的要求要差异化的处理这些流量,要让网络设备根据流量的特征来做一个区分叫做流量分类。流量分类后为了防止后续的路由器在通过复杂的手断来做流量区分把不同类别的流量打上不同类型的标记。在三层使用IPV4的时候这个标记就是打在TOS字段,1个字节。 第四个字段Total Length(总长度)指的就是包括IP报头在内完整的数据包有多少字节这个不包含帧头帧尾。 第五,六,七个字段分别是标识符、标记、分段偏移量主要用来做三层的数据分片的。通常做数据切片的时传输层,但三层也具备数据切片的能力一般是使用IPV4。 标识符:用来标识属于同一个数据包的所有分片打上一个标记值并且不同数据包分片属于不同标记值来做一个彼此区分。 标记:它只有3bit 分段偏移量:每一个分片的分段偏移量就是描述我这个分片相对于这个完整数据包是从第几bit到第几bit。根据每一个数据包的分片所属的字节区间接收者收到若干分片之后就算乱序,我能跟据你的序列来做一个重新的排序,保证能把这个分片后的数据包给封装。(四层切片是四层协议的本质属性,这个切片对CPU,对内存消耗都不大。但三层切片导到网络品质降低,不建议使用三层切片。 第八个字段Time to Live(存活时间)简称TTL。描述一个数据包在网络中发送的时候能传多长时间。用跳数来表示。一跳就是一台三层网络设备。跳数就是限制数据包在网络中能传多少跳,防止路由选择环路,避免数据包在路径中永无止境的传递,消耗链路带宽消耗CPU资源,给数据包设计一个TTL最多能传255跳,传到255跳就被丢弃了,因每台路由器的硬件中都会包含一个分组改写引擎专门修改三层报头的字段的,通过接收接口收到数据包之后把TTL值-1,减到0了就被丢包了。 第九个字段Protocol(上层协议)用来描述这个数据包传输层使用的什么协议。 第十个字段Header Checksum(报头校验核)通过散列算法CRC对IP报头的头部字段做一个校验,把散列的算法值放到这个字段。接收方收到数据包之后会对整个三层报头在做一个校验得出一个乱码对比这个报头校验核得出的新的乱码看是否一致,一致就代表数据包的三层报头是没有被篡改的。 第十一个字段Source IP Address (源IP地址)描述数据流量发送的发送接口。 第十二个字段Destination IP Address(目的IP地址)描述数据流量接收的接口。三层地址具有端到端的一致性,排除公有地址私有地址,排除PAT,所谓的端到端的三层一致性指的源发送流量去往目的地,不管数据包在哪个网络环境下发送他的源目地址都是保持不变的。 ?4.IPV6报头格式: 黄色代表IPV4和IPV6共有并且名字一致的字段。IPV6的源目IP地址128位,源地址16字节 ,目地地址16字节。 红色代表IPV4中表在IPV6中没有的字段。IPV6中报头是定长的40Bit。IPV6没有标识符,标记和分断偏移量,指IPV6不建议做三层的数据切片,有两点好处:一是减少路径中CPU的消耗并且增加端到端的效率。 蓝色代表IPV4与IPV6都有功能相似但换了一种叫法。IPV6中的Traffic Class用来做QOS标记的。 Payload length(载核长度)指去掉IPV6报头之后我们的四层数据段有多少字节。 Hop Limit(跳数限制)指的就是TTL。 Next Header(下一报头)在IPV6中可能指的是传输层,可能是你主报头的下一层。 灰色代表IPV6新定义的叫流标签。流标签结合SDIP,结合Traffic Class来时时的锁定,当你锁定一股流之后做基于流的策略。 IPV6和IPV4对比:虽然IPV6的主报头要比IPV4要长,长的是SDIP部分。路由器收到这两种三层封装的数据,IPV6的报头处理比较简单。 ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:20:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |