IPv4 与 IPv6
下面详细说一下 IPv4 和 IPv6 之间的差异。
IPv4
IPv4 又称互联网通信协议第四版,由32位(4字节)组成,通常以10进制的方式展现出来,如192.168.0.1。
进行IP通信时,需要在数据的前面加入IP首部信息,而IPv4的首部如下图:
- 版本:4个比特组成,如0100 ... = Version :4 指的就是IPv4,而0110指的就是IPv6 。
- 首部长度:由4个比特构成,单位为4字节,所以首部最大长度为60个字节(15 * 4)
- 服务类型:8个字节组成,3个是优先权字段,4个是TOS字段(最低延迟、最大吞吐、最大可靠性、最小代价),最后1个是未定义字段,但必须置0
- 总长度:16个比特组成表示IP首部和数据加起来的总字节数。
- 标识:16个比特组成,用于区分数据报中的各个分片,同一个分片标识相同。
- 标志:3个比特组成,表示被分片的信息。
- 片位移:8个比特组成,表示每次分片传输的数据之间的偏移距离,也就是某分片的数据在原数据中的相对位置,一般偏移以8字节为单位
- 生存时间:由8比特组成,每经过一个路由器,TTL就会减1,直到为0则丢弃。
- 协议:8个比特构成,表示IP首部的下一个首部属于哪个协议。
- 首部校验和:16个比特组成,每经过一次路由器都会检验一次首部部分是否被破坏。
- 源地址:发送端的IP地址。
- 目标地址:接收端的IP地址。
- 填充:通过填充0,把首部长度调整为32比特的整数倍。
- 数据:包数据。
IPv6基础
IPv6也叫互联网协议第6版,主要是为了解决IPv4地址被耗尽而设计的。
IPv6 由128个比特组成,一般写成8个16位字节,它可以组成3.40 * 10^38 个地址,足以人们去为所有的主机和路由分配地址。
IPv6和IPv4所表示的方式不一致,如果用十六进制的方式表示的话就是8个16位比特组成,如:
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
如果二进制表示中出现连续的0,则可以写成
1080::8:800:200C:417A
IPv6结构
IPv6与IPv4类似,也是通过IP地址的前几位来标识IP种类的。
- 全局单播地址:就是指全世界唯一的地址,是互联网中通信最常用的地址。它的前64位为网络标识,后64位为主机标识。
- 链路本地单播地址:指的是在同一数据链路中通信的地址。(不通过路由器)(1111 110)
- 唯一本地地址:指的是不连接互联网而接入私有网络的地址,为了提高安全性,网络之间的通信通过NAT或网关进行。(1111 1110 10)
IPv6首部
IPv6 首部如图:
IPv6为了减少路由器的压力,取消了首部校验和字段。此外分片处理的识别码也变成了可选项。
- 版本:与IPv4基本一致。
- 通信量类: 与IPv4中的TOS字段基本一致。
- 流标号:20个比特组成,用于服务质量的控制。
- 有效载荷长度:指的是数据部分的长度。
- 下一个首部:与IPv4中的协议一致。
- 跳数限制:与IPv4中的TTL一致。
- 源地址:发送端地址。
- 目标地址:接受端地址。
IPv6的分片
IPv6的分片处理被分配在发送端主机上进行,路由器不进行分片,而进行分片的功能就是“路径MTU发现”。
路径MTU发现和传统的路由器分片不同,传统的路由器分片是路由器根据不同的数据链路中可承载的最大传输单元(MTU)来进行分片处理。而路径MTU发现则是通过发送端发送一个禁止分片表示的包,当路由器遇到需要分片的时候,会把当前的包丢掉,然后返回一个ICMP到主机。在下一次主机根据ICMP所通知的MTU的值进行分片处理,如此反复,就能得到最适合的MTU。
路由控制
如果只有IP地址的话是无法进行网络通信的,在通信的时候还需要有着下一步的路由器或者主机的信息,而记录这个信息的就是路由控制表。
路由控制表
路由控制表中记录着网络地址和下一步应该发送的路由器地址。当接受到IP包的时候,会先分析首部中的目标地址,然后从控制表中查找与改地址具有相同网络地址的记录,就可以找到下一个需要发送的路由器地址。如果有着多条相同的网络地址的记录,会选择最为吻合的(也就是相同位数最多的)。
路由地址的类型有着以下分类:
- 默认路由:指任何目标地址都与之匹配的地址,一般标记了0.0.0.0/0
- 主机地址:就是整个IP地址都是主机地址,不基于网络地址进行路由选择
- 环回地址:就是localhost或者127.0.0.1,当使用该地址时,数据包不会流向网络。
路由控制表的聚合
当连接的主机和路由器越多的时候,路由控制表所记录的网络地址就越多,所以这个时候必须进行聚合。
就如192.168.2.0/24和192.168.3.0/24就可以聚合为192.168.2.0/23为已知,这样就可以减少路由表的大小和减少查找的时间。
写在最后
加油加油~~~
图解TCP/IP
这会作为最近的一个长期目标不定期更新。