IPv4和IPv6介绍及区别

互联网服务的三个概念层
IPv4和IPv6介绍及区别
最基本的互联网服务包括一个分组交付系统。IPv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包,意即它不保证任何数据包均能送达目的地,也不保证所有数据包均按照正确的顺序无重复地到达。这些方面是由上层的传输协议(如传输控制协议)处理的。
IPv4数据报
互联网把基本传输单元称为IP数据报,划分为首部和数据区。
IP规定了数据报首部的格式,包括源IP地址和目的IP地址。IP不规定数据区的格式,可用来运输任意数据。
IPv4和IPv6介绍及区别
版本(Version) : 4 bits,显示当前正在运行的IP版本信息。当前为4
首部长度(IHL) : 4 bits,标明了以32比特为单位的消息中数据报报头的长度,这是所有报头的总长度。注意:它的最小值为5
服务类型(Type of Service ): 8 bits,标明了一个特定的上层协议所分配的重要等级。
总长度(Total Length:): 16 bits,标明整个分组的长度,以字节为单位。理论上最大长度可以为65535,但报文经过数据链路层时很可能被分片。
标识符(Identification): 16 bits,包含一个整数,用来标识当前的数据报。标志(Flag)Flag: 3 bits,实现不同的控制功能。
数据报片偏移量(Fragment Offset): 13 bits。指示分段在数据包中的位置,用于重组数据分段。这个字段允许标记字段终止在16 Bit的边界。
生存时间(TTL) : 8 bits,指示分组在网络传输中的允许保持的时间,以秒为单位。当该计时器为0时,数据报将被丢弃。
协议(Protocol) : 8 bits,指明了在IP处理过程结束后,哪一个上层协议将接收这些数据。
首部校验和(Header Checksum) : 16 bits,用于确保IP头的完整性。
源站IP地址(Source Address) : 32 bits,指明了发送节点的IP地址。
目的站IP地址(Destination Address ): 32 bits,指明了接收节点的IP地址。
选项(Options ):长度可变的字段,让IP支持不同的功能特性。
填充(Padding):这个字段以额外的0来填充IP报头,以确保其长度为32 bit的倍数。
其后就是数据字段。
IPv4的点分十进制表示方法
IPv4的地址长度为32位,点分十进制表示通常采用 x. x. x. x的格式,每个x为8位。
IPv4地址类型
IPv4和IPv6介绍及区别
A类地址
(1)A类地址网络号第一位固定为0,其它7位可以分配,主机号长度为24位
(2)网络号分配的数量为2^7 = 128,地址范围为:1.0.0.0—127.255.255.255
(3)10.0.0.0-10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址,路由器接收到私有地址,不会向Internet转发该分组,私有地址与NAT相关)
(4) 0.0.0.0-0.255.255.255保留用作特殊用途
(5)127.0.0.0-127.255.255.255是保留地址,用做循环测试用的
(6)因此网络号可分配的只有125个,每个网络段的主机号可以分配的只有 2^24-2=16777214个(主机号全0和主机号全1保留)

B类地址
(1)B类地址网络号第1,2位固定为10,其它14位可以分配,主机号长度为16位
(2)地址范围为:128.0.0.0—191.255.255.255
(3)172.16.0.0—172.31.255.255是私有地址
(4)169.254.0.0—169.254.255.255是保留地址
(5)每个网络段可分配的主机号为2^16 - 2 = 65534(主机号全0和主机号全1保留)

C类地址
(1)C类地址网络号前3位固定为110,其它21位可以分配,主机号长度为8位
(2)C类地址范围:192.0.0.0—223.255.255.255
(3)192.168.0.0—192.168.255.255是私有地址
(4)网络号可分配的块数为2^21 = 2097152,可分配的主机号数为2∧8-2 = 254(主机号全0和主机号全1保留)

D类地址不标志网络,前4位固定为1110,地址范围为:224.0.0.0—239.255.255.255,用作特殊用途,如多播地址

E类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1111。240.0.0.0—255.255.255.255,用于某些实验和将来使用

以上所讲的为网际协议静态的一面,下面来讲操作的一面。

转发IP数据报
不严格的讲,可以将转发分成两种形式:直接交付间接交付
直接交付是指把数据报从一台机器通过物理网络直接传输到另一台机器。间接交付发生在目的站不在一个直接相连的网络,从而强迫发送方把数据报传递给一个路由器进行交付。
IP转发算法使用每台机器上的一个数据结构来存贮有关可能的目的站以及达到目的站的信息。该数据结构的正式名称称为路由表。

如下图,路由器R直接连接到网络20.0.0.0和30.0.0.0,它可以用直接交付把数据报发送到这两个网络上的任意一台主机。假定有一个数据报的目的站在网络40.0.0.0上,R为它选择的路由为地址30.0.0.7的路由S。然后,S将直接交付给数据报。R可以达到地址30.0.0.7,因为R和S都直接连到网络30.0.0.0。
IPv4和IPv6介绍及区别
IPv4小结:IPv4是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6。IPv4使用32位(4字节)地址,因此地址空间中只有2^32个地址,它划分为5类地址。不过,一些地址是为特殊用途所保留的。为了实现IP数据包能够使用不同的链路层技术,需要将IP数据包变成适合链路层的数据格式。
IPv6的产生
*IPv4地址地址枯竭。*全球所有43亿个IPv4地址已分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商。所以产生了IPv4的下一代IPv6。
IPv6的特点
尽管许多概念相似,但是IPv6还是改变了协议的许多细节。
1.更大地址空间。这是最显著的特征。IPv6增大到128位。地址空间中有2^128个地址,需要10∧20年时间才能将可能的地址分配。

2.扩展的地址层次。

3.灵活的首部格式。使用了一种全新的不兼容数据报格式,并包括一组可选的首部。

4.增强的选项

5.对协议扩展的保障

6.支持自动配置和重新编号本地链路地址嵌入式接口标识符使自动配置的实现成为可能。
本地链路地址的生成是将本地链路前缀1111 1110 10和54个0以及它的64位接口标识符连接起来。一旦计算机验证本地链路地址是唯一的,就用该地址发送一个路由器恳求。如果有路由器就会发送一个路由器通告进行回答,告诉计算机课用于全球地址的前缀。最后,通告中有一个标志告诉计算机是一考自动配置还是使用常规的管理配置(即DHCP)
支持重新编号的思想很简单:通告一个新的前缀,等待一段不长的时间,然后废弃久前缀的使用。在实际角度来说,这很难实现。

7.支持资源分配
IPv6首部数据报
IPv4和IPv6介绍及区别
版本号: 表示协议版本,值为6
通信量类别: 主要用于QoS
流标号 :用来标识同一个流里面的报文
有效载荷长度: 表明该IPv6包头部后包含的字节数,包含扩展头部
下一报头: 该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是IPv6各种功能的核心实现方法
跳限制:该字段类似于IPv4中的TTL,每次转发跳数减一,该字段达到0时包将会被丢弃
IPv6的3种表示方法
1.冒分十六进制表示法
  格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:
  ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
  这种表示法中,每个X的前导0是可以省略的,例如:
  2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
2.0位压缩表示法
  在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
  FF01:0:0:0:0:0:0:1101 → FF01::1101
  0:0:0:0:0:0:0:1 → ::1
  0:0:0:0:0:0:0:0 → ::
3.内嵌IPv4地址表示法
  为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用 。
IPv6的3种地址类型
IPv6协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来在IPv4地址相比,新增了“任播地址”类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的。

单播地址:用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。

组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。

任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。