《图解TCP/IP》阅读笔记(第四章 4.6、4.7)—— IPv6到底不同在哪里?IPv4 + IPv6首部结构详解

第四章 4.6 IPv6

书接上回,之前谈到即使用了无类型域间路由CIDR和可变长子网掩码技术VLSM,IPv4的容量依旧不够用

IPv4的地址长度为4个8位字节,32比特,而IPv6的地址长度则是IPv4的4倍,即128比特,一半写成8个16位(两字节)

从数量级上来看,IPv6应该足以应付了,但是将所有使用IPv4地址的设备替换成IPv6,在互联网已经如此普及的当今,是个十分艰巨的任务。

目前人们正着力进行IPv4和IPv6之间的相互通信与兼容性方面的测试。

接下来就要谈谈IPv6除了在大小上,其他的特点。

首先要提的一点是,IPv6的特性在一定程度上减弱了管理员的负担,因为即使IPv4也具有类似的功能,但可能无法使用或者需要管理员介入才可以实现。

  • IP地址的扩大与路由控制表的聚合

    适应互联网分层构造。分配与地址构造相适应的IP地址。

  • 性能提升

    包首部长度采用固定的值(40字节),不再采用首部校验码。

    简化了首部结构,减轻路由器负荷。路由器不用再做分片处理,而是通过路径MTU发现只有发送端主机进行分片处理。

  • 支持即插即用功能

    即使不支持DHCP功能的服务器,也可以实现自动分配IP地址。

  • 采用认证与加密功能

  • 多播、Mobile IP成为扩展功能

那么IPv6的标记方法是什么样呢?

简而言之,就是16比特为一组,中间用冒号隔开

还可以省略表示,比如一组里面全是0,那么就可以省略

IPv6的地址结构,同样是通过IP地址的前几位标识IP地址的种类。

接下来这一段我有些没太读懂,大概意思就是,在互联网通信中,有三类地址

  • 全局单播地址,是互联网中唯一一个地址,不需要正式分配IP地址
  • 限制性网络中,即不连入公网,可以使用唯一本地地址,这个地址根据一定的算法生成随机数,并融合到地址中
  • 而在不使用路由器的一个网段中通信时,还可以使用一种叫做链路本地单播地址的IP地址类型

具体见下图:

在IPv6的环境下, 可以同时将这些IP地址全都配置在同一个NIC上,按需灵活使用。

接下来就要详细介绍一下这三类IP地址:

  • 全局单播地址

    世界上唯一一个,如下图所示,现在的IPv6网络中,n = 48, m = 16, 128 - m - n = 64位.

    前64位为网络标识,后64位为主机标识。(和IPv4一样,分成网络和主机两部分)

    接口ID常保存MAC地址的64位版,如果不想让对方知道的话,那么就根据操作系统的具体装置,设置一个临时地址。
    在这里插入图片描述

  • 链路本地单播地址

    不经过路由器,在同一个链路中进行通信时使用。接口ID常保存MAC地址的64位版。

在这里插入图片描述

  • 唯一本地地址

在这里插入图片描述

在不与互联网进行通信时所用的地址。那么有人就要问了,那么与互联网进行通信时,要用什么地址呢?其实之前讲过,通过NAT以及代理连入公网,就可以了。

这种地址通常在企业等局域网类型中使用。

之前提过IPv4会进行分段处理,IPv6则为了避免给路由器造成额外的负担,使用路径MTU发现功能,就必不可少了。

IPv6中,最小MTU为1280字节,如果在嵌入式那种具有一定系统资源限制的设备里使用,也就不需要进行“路径MTU发现”,而是在发送IP包是直接以1280字节为单位分片送出。

第四章 4.7 IPv4首部

之前在讲述传输层加首部,IP分段,和IPv6的时候,多多少少提到过首部

首部包含了对于使用IP协议时,进行发包控制时所有的必要信息。

在这里插入图片描述

接下来就要对每一部分进行介绍了:

  • Version 版本 = 4 Bit

    表示IP首部的版本号,IPv4的版本号是4,IPv6的版本号是6,其余的不详细介绍

  • IHL(Internet Header Length) 首部长度 = 4 Bit

    对于没有可选项的IP package,首部长度设置为“5”,即4 x 5 = 20 Bytes

  • TOS Type of Service 区分服务 = 8 Bit

    用来表明服务质量,在实际中已经很少会设定这个数值了,因为如果要做trade-off,控制算法会十分复杂,也有可能产生不公平的现象。
    在这里插入图片描述

  • DSCP和ECN = 5 Bit + 2 Bit

    DSCP, Differential Services Codepoint,差分服务代码点,是TOS的一部分,现在统称DiffServ,用来进行质量控制

    ECN,Explicit Congestion Notification,显示拥塞通告,用来报告网络拥堵情况

    在这里插入图片描述

    第6位的ECN用于通告上层TCP层协议是否处理ECN,路由器转发ECN为1的包的过程中,如果出现网络拥堵的情况,就将CE位设置为1

  • Total Length 总长度 = 16 Bit

    表示IP首部与数据部分合起来的总字节数。

    IP包的最大长度为65535 = 2^16 - 1,但目前不存在能够传输最大长度为65535字节的IP包的数据链路。

  • ID identification 标识 = 16 Bit

    用于分片充足,如果属于同一个分片,那么标识值就相同。

    通常,每发送一个IP包,他的值就逐渐递增。

  • Flags 标志 = 3 Bit

    这一段在路径MTU发现的时候,提到过,当时直接设置1比特为1.

    在这里插入图片描述

  • FO Fragment Offset 片偏移 = 13 Bit

    用于标识每一个片段相对于原始数据的位置,第一个分片对应的值为0。

    最多可以表示8192(= 2^13)个相对位置。

    偏移位置的单位是8字节,那么最大的偏移量就是8x8192 = 65536字节

  • TTL Time to Live 生存时间 = 8 Bit

    最初的意思是以秒为单位,记录当前包在网络上应该生存的期限。

    现在的意思是能够中转多少个路由器。每经过一个路由器,TTL会减1,直到变成0,就丢弃该包。

    最大中转次数为256次,可以避免IP包在网络中无限传递的问题。

  • Protocal 协议 = 8 Bit

    表示IP首部的下一个首部隶属于哪个协议。目前常使用的协议可以查表,此处不赘述。

  • Header Checksum 首部校验和 = 16 Bit

    该字段只校验数据报的首部,不校验数据部分。主要用来确保IP数据报不被破坏。

    计算过程是,将校验和所有位置都设置为0,然后用16比特为间隔,划分IP首部,并用1补数计算所有16位字的和。最后将这个和的1补数赋给首部校验和字段。

    1补数的计算方法为,如果是正整数,那么其1的补数为原二进制码;如果是负整数的话,将二进制数反转(包括符号位),得到的数即为原二进制的1的补数。

  • Source Address 源地址 = 32 Bit

    表示发送端IP地址

  • Destination Address 目标地址 = 32 Bit

    表示接收端IP地址

  • Options 可选项

    通常只在实验或诊断时使用。包括安全级别、源路径、路径记录、时间戳。

  • Padding 填充

    在有可选项的情况下,如果首部长度不是32bit的整数倍,就可以填充至整数倍。换言之,如果没有可选项,那么就没必要有填充部分。

  • Data 数据

    就是数据,IP上层协议的首部也可以作为数据进行处理。

接下来就是IPv6的首部格式

相比较于IPv4,省略了首部校验和字段,提高了包的转发效率。

另外,识别码成为了可选项,为了让64位CPU的计算机处理起来更加方便,IPv6的首部及可选项都由8字节构成。

在这里插入图片描述

  • Version 版本 = 4 Bit

    版本号为6

  • Traffic Class 通信量类 = 8 Bit

    相当于IPv4的TOS字段。

  • Flow Label 流标号 = 20 Bit

    用于服务质量控制。

    不使用时,每一位都可以设置为0.

  • Payload Length 有效载荷长度

    是指包的数据部分。IPv4的TL指包括首部在内的所有长度,然而IPv6的Payload Length则不包括首部,只表示数据部分的长度。

  • Next Header 下一个首部 = 8 Bit

    相当于IPv4的协议字段。通常表示上一层的协议时TCP或者UDP。

  • Hop Limit 跳数限制 = 8 Bit

    和IPv4中的TTL意思相同。

  • Source Address 源地址 = 128 Bit

    表示发送端IP地址。

  • Destination Address 目标地址 = 128 Bit

    表示接收端IP地址。

另外一提,IPv6还有扩展首部,因为其首部长度固定,所以如果要添加可选项,那么就需要扩展首部。

扩展首部通常位于IPv6首部,和TCP/UDP首部中间。可选项长度也没有限制。

另外注意到的一点,IPv6首部中没有标识以及标志字段,在需要对IP数据包进行分片时,可以使用扩展首部。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值