IPv4

来自中文百科专业版
跳转至: 导航搜索

  IPv4英文全称:Internet Protocol version 4,中文意为“互联网协议版本4”,是互联网协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。是第一个被广泛使用,构成现今互联网技术的基石的协议。Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等。局域网中最常用的是以太网(Ether)。

  IPv4的下一个版本是IPv6。IPv6正处在不断发展和完善的过程中,在不久的将来将取代目前被广泛使用的IPv4。美国已经开始对已经与网络服务商签订IPv6协议的政府部门给与有条件的奖励政策。而欧盟希望跟随美国的步伐,促使其成员国的政府部门在这次转型过程中起到带头作用。

  IPv4与IPv6均是标准化互联网络的核心部分。IPv4依然是使用最广泛的互联网协议版本,直到2011年,IPv6仍处在部署的初期。

  IPv4在IETF于1981年9月发布的RFC 791中被描述,此RFC替换了于1980年1月发布的RFC 760

  IPv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付分组,意即它不保证任何分组均能送达目的地,也不保证所有分组均按照正确的顺序无重复地到达。这些方面是由上层的传输协议(如传输控制协议)处理的。

TCP/IP协议栈

IP地址:引用通用IP地址时使用 w.x.y.z表示法,如上图中所示

  IPv4中规定IP地址长度为32,即有232-1个地址。一般的书写法为4个用小数点分开的十进制数。也有人把4位数字化成一个十进制长整数,但这种标示法并不常见。过去IANAIP地址分为A,B,C,D 4类,把32位的地址分为两个部分:前面的部分代表网络地址,由IANA分配,后面部分代表局域网地址。如在C类网络中,前24位为网络地址,后8位为局域网地址,可提供254个设备地址(因为有两个地址不能为网络设备使用: 255为广播地址,0代表此网络本身) 。网络掩码(Netmask) 限制了网络的范围,1代表网络部分,0代表设备地址部分,例如C类地址常用的网络掩码为255.255.255.0。

特殊的IP地址段

  - 127.x.x.x给本地网地址使用。

  - 224.x.x.x为多播地址段。

  - 255.255.255.255为通用的广播地址。

  - 10.x.x.x,172.16.x.x和192.168.x.x供本地网使用,这些网络连到互连网上需要对这些本地网地址进行转换(NAT)。 但由於这种分类法会大量浪费网路上的可用空间,所以新的方法不再作这种区分,而是把用者需要用的位址空间,以2的乘幂方式来拨与。例如,某一网路只要13个ip位址,就会把一个16位址的区段给他。假设批核了 61.135.136.128/16 的话,就表示从 61.135.136.129 到 61.135.136.142 的网址他都可以使用。

地址

  IPv4使用32位(4字节)地址,因此地址空间中只有4,294,967,296(232)个地址。不过,一些地址是为特殊用途所保留的,如专用网络(约18百万个地址)和多播地址(约270百万个地址),这减少了可在互联网上路由的地址数量。随着地址不断被分配给最终用户,IPv4地址枯竭问题也在随之产生。基于分类网络无类别域间路由网络地址转换的地址结构重构显著地减少了地址枯竭的速度。但在2011年2月3日,在最后5个地址块被分配给5个区域互联网注册管理机构之后,IANA的主要地址池空了。

  这些限制刺激了仍在开发早期的IPv6的部署,这也是唯一的长期解决方案。

地址格式

  IPv4地址可被写作任何表示一个32位整数值的形式,但为了方便人类,它通常被写作点分十进制的形式,即四个字节被分开用十进制写出,中间用点分隔。

下表展示了几种不同的格式:

格式 从点分十进制转换
点分十进制 192.0.2.235 不适用
点分十六进制 0xC0.0x00.0x02.0xEB 每个字节被单独转换为十六进制
点分八进制 0300.0000.0002.0353 每个字节被单独转换为八进制
十六进制 0xC00002EB 将点分十六进制连在一起
十进制 3221226219 用十进制写出的32位整数
八进制 030000001353 用八进制写出的32位整数

  此外,在点分格式中,每个字节都可用任意的进制表达。如,192.0x00.0002.235是一种合法(但很不常用)的表示。

分配

  最初,一个IP地址被分成两部分:網路識別碼在地址的高位字节中,主機識別碼在剩下的部分中。这使得创建最多256个网络成为可能,但很快人们发现这样是不够的。

  为了克服这个限制,在随后出现的分类网络中,地址的高位字节被重定义为网络的(Class)。这个系统定义了五个类別:A、B、C、D和E。A、B和C类有不同的网络类別长度,剩余的部分被用来识别网络内的主机,这就意味着每个网络类別有着不同的给主机编址的能力。D类被用于多播地址,E类被留作将来使用。

  在1993年左右,无类别域间路由(CIDR)正式地取代了分类网络,后者也因此被称为“有类别”的。

  CIDR被设计为可以重新划分地址空间,因此小的或大的地址块均可以分配给用户。CIDR创建的分层架构由互联网号码分配局(IANA)和区域互联网注册管理机构(RIR)进行管理,每个RIR均维护着一个公共的WHOIS数据库,以此提供IP地址分配的详情。

特殊用途的地址

保留的地址块
CIDR地址块 描述 参考资料
0.0.0.0/8 本网络(仅作为源地址时合法) RFC 5735
10.0.0.0/8 专用网络 RFC 1918
127.0.0.0/8 环回 RFC 5735
169.254.0.0/16 链路本地 RFC 3927
172.16.0.0/12 专用网络 RFC 1918
192.0.0.0/24 保留(IANA) RFC 5735
192.0.2.0/24 TEST-NET-1,文档和示例 RFC 5735
192.88.99.0/24 6to4中继 RFC 3068
192.168.0.0/16 专用网络 RFC 1918
198.18.0.0/15 网络基准测试 RFC 2544
198.51.100.0/24 TEST-NET-2,文档和示例 RFC 5737
203.0.113.0/24 TEST-NET-3,文档和示例 RFC 5737
224.0.0.0/4 多播(之前的D类网络) RFC 3171
240.0.0.0/4 保留(之前的E类网络) RFC 1700
255.255.255.255 广播 RFC 919

专用网络

  在IPv4所允许的大约四十亿地址中,三个地址块被保留作专用网络。这些地址块在专用网络之外不可路由,专用网络之内的主机也不能直接与公共网络通信。但通过网络地址转换,他们即能做到后者。

  下表展示了三个被保留作专用网络的地址块(RFC 1918):

名字 地址范围 地址数量 有类别的描述 最大的CIDR地址块
24位块 10.0.0.0–10.255.255.255 16,777,216 一个A类 10.0.0.0/8
20位块 172.16.0.0–172.31.255.255 1,048,576 连续的16个B类 172.16.0.0/12
16位块 192.168.0.0–192.168.255.255 65,536 连续的256个C类 192.168.0.0/16

虚拟专用网络

  以专用网络地址作目的地址的报文会被所有公共路由器忽略,因此在两个专用网络之间直接通信(如两个分支办公室间)是不可能的。这需要使用IP隧道虚拟专用网络(VPN)。

  VPN在公共网络上创建连接两个专用网络的隧道。在这种功能中,隧道一端的主机将报文封装在一个公共网路上可以接受的协议层中,然后这些报文就可以被送达隧道的另一端,在那里,附加的协议层被去掉,报文也被送达其原定的目的地。

  此外,封装过的报文也可能被加密以保证其在公共网络上传输时的安全性。

链路本地地址

  RFC 5735中将地址块169.254.0.0/16保留为特殊用于链路本地地址,这些地址仅在链路上有效(如一段本地网络或一个端到端连接)。这些地址与专用网络地址一样不可路由,也不可作为公共网络上报文的源或目的地址。链路本地地址主要被用于地址自动配置:当主机不能从DHCP服务器处获得IP地址时,它会用这种方法生成一个。

  当这个地址块最初被保留时,地址自动配置尚没有一个标准。为了填补这个空白,微软创建了一种叫自动专用IP寻址(APIPA)的实现。因微软的市场影响力,APIPA已经被部署到了几百万机器上,也因此成为了事实上的工业标准。许多年后,IETF为此定义了一份正式的标准:RFC 3927,命名为“IPv4链路本地地址的动态配置”。

环回地址(Loopback Address)

  地址块127.0.0.0/8被保留作环回通信用。此范围中的地址绝不应出现在主机之外,发送至此地址的报文被作为同一虚拟网络设备上的入站报文(环回),主要用于检查TCP/IP协议栈是否正确运行和本机对本机的链接。

以0或255结尾的地址

  一个常见的误解是以0或255结尾的地址永远不能分配给主机:这仅在子網路遮罩至少24位元长度时(旧的C类地址,或CIDR中的/24到/32)才成立。

  在有类别的编址中,只有三种可能的子網路遮罩:A类:255.0.0.0,B类:255.255.0.0,C类:255.255.255.0。如,在子網路192.168.5.0/255.255.255.0(即192.168.5.0/24)中,網路識別碼192.168.5.0用来表示整个子網路,所以它不能用来标识子網路上的某个特定主机。

  广播地址允许封包发往子網路上的所有设备。一般情況下,廣播位址是藉由子網路遮罩的位元補數並和網路識別碼執行 OR 的位元運算就能獲得,这也就是说,广播地址是子網路中的最后一个地址。在上述例子中,广播地址是192.168.5.255,所以为了避免歧义,这个地址也不能被分配给主机。在A、B和C类网络中,广播地址总是以255结尾。

  但是,这并不意味着每个以255结尾的地址都不能用做主机地址。比如,在B类子网192.168.0.0/255.255.0.0(即192.168.0.0/16)中,广播地址是192.168.255.255。在这种情况下,尽管可能带来误解,但192.168.1.255、192.168.2.255等地址可以被分配给主机。同理,192.168.0.0作为網路識別碼不能被分配,但192.168.1.0、192.168.2.0等都是可以的。

  随着CIDR的到来,广播地址不一定总是以255结尾。比如,子網路203.0.113.16/28的广播地址是203.0.113.31。

  一般情況下,子網路的第一个和最后一个地址分别被作为網路識別碼和广播地址,任何其它地址都可以被分配给其上的主机。

地址解析

  互联网上的主机通常被其名字(如zh.wikipedia.org、www.berkeley.edu等)而不是IP地址识别,但IP报文的路由是由IP地址而不是这些名字决定的。这就需要将名字翻译(解析)成地址。

  域名系统(DNS)提供了这样一个将名字转换为地址和将地址转换为名字的系统。与CIDR相像,DNS也有一个层级的结构,使不同的名字空间可被再委托给其它DNS服务器。

  域名系统经常被描述为电话系统中的黄页:在那里人们可以把名字和电话号码对应起来。

IPv4 寻址

  对于 IP 第 4 版,每台 TCP/IP 主机通过逻辑 IP 地址进行标识。IP 地址是网络层地址,不依赖于数据链路层地址(例如网络适配器的 MAC 地址)。使用 TCP/IP 进行通信的每台主机和每个网络组件都要求 IP 地址是唯一的,该地址可以手动分配,也可以使用动态主机配置协议 (DHCP) 分配。

  IP 地址标识系统在网络中位置的方式,与街道地址标识房屋在城市街区中位置的方式相同。就像街道地址必定标识唯一的住宅一样,IP 地址对于网络来说必须是全局唯一的,并且采用统一的格式。

  每个 IP 地址包括网络 ID 和主机 ID。

  • 网络 ID(也称为网络地址)标识位于同一个物理网络上、通过 IP 路由器连接在一起的系统。同一个物理网络上的所有系统必须具有相同的网络 ID。网络 ID 对于网络必须是唯一的。
  • 主机 ID(也称为主机地址)标识网络内的工作站、服务器、路由器或其他 TCP/IP 主机。主机地址对于网络 ID 来说必须是唯一的。

IPv4 地址语法

  IP 地址由 32 位组成。与使用二进制表示法 (Base2) 一次性表示 IPv4 地址的 32 位不同,IP 地址的标准做法是将 IPv4 地址的 32 位分成四个 8 位的字段(称为八位字节)。每个八位字节转换为 0–255 之间的某个十位数 (base 10),并使用句点分隔。此格式称为点分十进制表示法。下表提供二进制格式和点分十进制格式的 IP 地址的示例。

  二进制格式和点分十进制格式的 IP 地址:

  二进制格式                 点分十进制格式

  11000000 10101000 00000011 00011000    192.168.3.24


  例如,11000000101010000000001100011000 的 IPv4 地址是:

  • 分成 8 位的块:11000000 10101000 00000011 00011000。
  • 每个块转换为十进制:192 168 3 24
  • 相邻的八位字节使用句点分隔:192.168.3.24。

IPv4 地址的类型

  Internet 标准定义了下列类型的 IPv4 地址:

  单播 分配给位于网络的特定子网上的单个网络接口并用于一对一的通信。

  多播 分配给位于网络的各个子网上的一个或多个网络接口并用于一对多的通信。

  广播 分配给位于网络的某个子网上的所有网络接口并用于一对全部(子网上)的通信。

IPv4 单播地址

  与街道地址标识房屋在城市街区中的位置一样,IPv4 单播地址标识接口在网络上的位置。就像街道地址必须标识唯一的住宅一样,IPv4 单播地址对于网络必须是全局唯一的,并且采用统一的格式。

  每个 IPv4 单播地址包括网络 ID 和主机 ID。

  网络 ID(也称为网络地址)是 IPv4 单播地址的固定部分,标识位于同一个物理网段或逻辑网段上、通过 IPv4 路由器连接在一起的接口集。TCP/IP 网络上的网段也称为子网。同一个物理子网或逻辑子网上的所有系统必须使用同一个网络 ID,并且网络 ID 对于整个 TCP/IP 网络必须是唯一的。

  主机 ID(也称为主机地址)是 IPv4 单播地址的可变部分,用于标识子网上的网络节点接口。主机 ID 对于网络 ID 必须是唯一的。

  如果网络 ID 对于 TCP/IP 网络是唯一的,并且主机 ID 对于网络 ID 是唯一的,则由网络 ID 和主机 ID 组成的整个 IPv4 单播地址对于整个 TCP/IP 网络是唯一的。

IPv4 多播地址

  IPv4 多播地址用于单个数据包的一对多传输。在启用了 IPv4 多播的 Intranet 上,发往 IPv4 多播地址的 IPv4 数据包将通过路由器转发到存在正在侦听发往 IPv4 多播地址的通信的主机的子网上。IPv4 多播为许多类型的通信提供有效的一对多的传输服务。

  IPv4 多播地址由类 D Internet 地址类定义:224.0.0.0/4。IPv4 多播地址的范围介于 224.0.0.0 到 239.255.255.255 之间。224.0.0.0/24 地址前缀的 IPv4 多播地址(224.0.0.0 到 224.0.0.255)保留供本地子网的多播通信使用。

IPv4 广播地址

  IPv4 使用一组广播地址来提供一对全部(子网上)的传输服务。发往 IPv4 广播地址的数据包由子网上的所有接口进行处理。不同类型的 IPv4 广播地址如下所述:

  网络广播 通过将有类地址前缀的所有主机位设置为 1 来组成该地址。131.107.255.255 就是有类网络 ID 131.107.0.0/16 的网络广播地址的示例。网络广播用于将数据包发送到有类网络的所有接口。IPv4 路由器不转发网络广播数据包。

  子网广播 通过将无类地址前缀的所有主机位设置为 1 来组成该地址。131.107.26.255 就是无类网络 ID 131.107.26.0/24 的网络广播地址的示例。子网广播用于将数据包发送到无类网络的所有主机。IPv4 路由器不转发子网广播数据包。对于有类地址前缀,没有子网广播地址,只有网络广播地址。对于无类地址前缀,没有网络广播地址,只有子网广播地址。

  定向到所有子网的广播 通过将无类地址前缀的所有原始有类网络 ID 主机位设置为 1 来组成该地址。发往定向到所有子网的广播的数据包定义为到达子网有类网络 ID 的所有子网上的所有主机。131.107.255.255 就是子网网络 ID 131.107.26.0/24 的定向到所有子网的广播地址的示例。定向到所有子网的广播是原始有类网络 ID 的网络广播地址。IPv4 路由器可以转发定向到所有子网的广播数据包,但是,RFC 1812 中已弃用定向到所有子网的广播地址。

  有限广播 通过将 IPv4 地址的全部 32 位设置为 1 (255.255.255.255) 来组成该地址。有限广播地址用于本地网络 ID 未知时在本地子网上进行的一对全部的传输。IPv4 节点通常只在自动配置过程中(例如启动协议 (BOOTP) 或 DHCP)使用有限广播地址。例如,对于 DHCP,DHCP 客户端必须对 DHCP 服务器确认使用提供的 IPv4 地址配置之前发送的所有通信使用有限广播地址。IPv4 路由器不转发有限广播数据包。

IP包长

  IP包由首部(header)和实际的数据部分组成。数据部分一般用来传送其它的协议,如TCP,UDP,ICMP等。数据部分最长可为65515字节(Byte)(=2xx16 - 1 - 最短首部长度20字节) 。一般而言,低层(链路层) 的特性会限制能支持的IP包长。例如以太网(Ethernet)协议,有一个协议参数,即所谓的最大传输单元(Maximum Transfer Unit, MTU) ,为1518字节,以太网的帧首部使用18字节,剩给整个IP包(首部+数据部分)的只有1500字节。 还有一些底层网络只能支持更短的包长。这种情况下,IP协议提供一个分割(fragment)的可选功能。长的IP包会被分割成许多短的IP包,每一个包中携带一个标志(Fragmentid)。发送方(比如一个路由器) 将长IP包分割,一个一个发送,接送方(如另一个路由器)按照相应的IP地址和分割标志将这些短IP包再组装还原成原来的长IP包。

IP路由

  Ipv4并不区分作为网络终端的主机(host) 和网络中的中间设备如路由器中间的差别。每台电脑可以即做主机又做路由器。路由器用来联结不同的网络。所有用路由器联系起来的这些网络的总和就是互联网。 IPv4技术即适用于局域网(LAN) 也适用于广域网。一个IP包从发送方出发,到接送方收到,往往要穿过通过路由器连接的许许多多不同的网络。每个路由器都拥有如何传递IP包的知识,这些知识记录在路由表中。路由表中记录了到不同网络的路径,在这儿每个网络都被看成一个目标网络。路由表中记录由路由协议管理,可能是静态的记录比如由网络管理员写入的,也有可能是由路由协议动态的获取的。有的路由协议可以直接在IP协议上运行。

  常用的路由协议有:

  - 路由信息协议(Routing Information Protocol, RIP),

  - 开放式最短路径优先协议,Open Shortest Path Fast, OSPF) ,

  - 中介系统对中介系统协议(Intermediate System – Intermediate System, IS-IS) ,

  - 边界网关协议(Border Gateway Protocol, BGP) . 在网络负荷很重或者出错的情况下,路由器可以将收到的IP包丢弃。在网络负荷重的时候,同样一个IP包有可能由路由器决定走了不同的路径。路由器对每一个IP包都是单独选择路由的。这也提高了IP通信的可靠性。但单是IP层上的包传输,并不能保证完全可靠。IP包可能会丢失; 可能会有重复的IP包被接受方收到; IP包可能会走不同的路径,不能保证先发的先到; 接受方收到的可能是被分割了的IP包。在IP之上再运行TCP协议则解决这些缺点提供了一个可靠的数据通路。

IP包首部格式

  IPv4首部一般是20字节长。在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016。 IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到60字节(总是4个字节4个字节的扩展) 。

IP包头字段说明

  版本:4位,指定IP协议的版本号。 包头长度(IHL):4位,IP协议包头的长度,指明IPv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数量的可选项,所以这个字段可以用来确定IPv4数据报中数据部分的偏移位置。IPv4包头的最小长度是20个字节,因此IHL这个字段的最小值用十进制表示就是5 (5x4 = 20字节)。就是说,它表示的是包头的总字节数是4字节的倍数。 服务类型:定义IP协议包的处理方法,它包含如下子字段 ::过程字段:3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~ 7(网络控制) ::延迟字段:1位,取值:0(正常)、1(期待低的延迟) ::流量字段:1位,取值:0(正常)、1(期待高的流量) ::可靠性字段:1位,取值:0(正常)、1(期待高的可靠性) ::成本字段:1位,取值:0(正常)、1(期待最小成本) ::未使用:1位 长度:IP包的总长 标识:唯一地标识主机所发送的一个数据段,通常每发送一个数据段后加一。但IP包被分割后,分割得到的IP包拥有相同的标识 标志:是一个3位的控制字段,包含: ::保留位:1位 ::不分段位:1位,取值:0(允许数据报分段)、1(数据报不能分段) ::更多段位:1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包) 段偏移量:当数据段被分割时,它和更多段位(MF, More fragments)进行连接,帮助目的主机将分段的包组合。 TTL:表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。 协议:8位,这个字段定义了IP数据报的数据部分使用的协议类型。常用的协议及其十进制数值包括ICMP(1)、TCP(6)、UDP(17)。 校验和:16位,是IPv4数据报包头的校验和。

IPv6与IPv4

  IPv4从出生到如今几乎没什么改变的生存了下来。1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6 的开发 。

  IPv6与IPv4相比有以下特点和优点:

  1. 更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。夸张点说就是,如果IPV6被广泛应用以后,全世界的每一粒沙子都会有相对应的一个IP地址。
  2. 更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
  3. 增强的组播(Multicast)支持以及对流的支持(Flow-control)。这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台。
  4. 加入了对自动配置(Auto-configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
  5. 更高的安全性。在使用IPv6网络中,用户可以对网络层的数据进行加密并对IP报文进行校验,这极大地增强了网络安全。

相关协议

  IPv6、TCP、UDP、ICMP、SNMP、FTP、TELNET、SMTP、ARP、RARP、RPC、XDR、NFS