基本介绍
网际协议IP是TCP/IP体系中两个重要的协议之一。IPv4虽有最终被IPv6取代的趋势,但它仍是当前使用的最重要的因特网协议。 与IP配套使用的还有3个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 因特网控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
网际协议 IP 及其配套协议
分类的 IP 地址
IPv4协议的主要特点
- IPv4协议提供一种无连接的分组传送服务,它不承诺服务质量的保证(即不保证传送的分组可能出现的差错、丢失、重复和失序等现象)。
- IPv4协议是点–点的网络层通信协议。
- Pv4协议对传输层屏蔽了物理网络的差异。网络层借助IP协议向传输层提供统一的IP分组,这有助于各种异构网络的互连。
IP地址及其指派
- 把整个因特网可看成为一个单一的、抽象的网络。IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符(长度为32bit ) 。
- P地址由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配的。
IP 地址的编址方法
IP地址的编址经历两个阶段:
- 分类IP地址。这是最基本的编址方法,1981年通过了相应的标准协议。基于分类IP地址存在的问题,又于1985年提出子网划分、变长子网划分的概念。这是对最基本的分类编址方法的改进。
- 无分类IP地址。1993年又提出新的分类编址方法,且得到了推广应用。
所谓“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号net-id,它标志某主机(或路由器)所连接的网络编号;另一个字段则是主机号host-id,它标志该主机(或路由器)在该类网络中的编号。n这种两级结构的 IP 地址可以记为:IP 地址 ::= { <网络号>, <主机号>}
其中,::= 代表“定义为”
IPv4 地址的格式
IP地址的表示——点分十进制记法
辨别IP地址类别
如果给出了二进制记法表示的地址,用它的前几位表示地址的类别。
- A、00000001 00001011 00001011 11101111 A类
- B、11000001 10000011 00011011 11111111 C类
- C、10100111 11011011 10001011 01101111 B类
- D、11110011 10011011 11111011 00001111 E类
如果用点分十进制记法表示的地址,则按第1 字节表示的十进制数来判定地址类别:A类为0~127,B类为128~191,C类为192~223,D类为224~239,E类为240~255。
- A、227.12.14.87 D类
- B、193.14.56.22 C类
- C、14.23.120.8 A类
- D、252.5.15.111 E类
- E、134.11.78.56 B类
特殊的IP地址
- 网络号为全0是指本网络。
- 网络号和主机号均为全1是对本网络进行广播(路由器不转发)。
- A类网络地址127是一个保留地址,用于本地软件环回测试之用。
- 主机号为全1是指对本网络号的所有主机进行广播。
地址 类别 | 可指派的 最多网络数 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每个网络中可拥有的最多主机数 | 约占整个地址空间的比例 |
A | 125(27-3) | 1 | 126 | 16777214(224-2) | 50% |
B | 16367(216-17) | 128.1 | 191.255 | 65534(216-2) | 25% |
C | 2096895(221-257) | 192.0.1 | 223.255.255 | 254(28-2) | 12.5% |
IP 地址的一些重要特点
- IP地址是一种分级式地址结构。它不反映主机(或路由器)所在地理位置的任何信息。每一个IP地址都由网络号和主机号两部分组成。这种地址结构的好处是:P地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。这样就方便了IP 地址的管理。路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
- IP地址指明了一台主机(或路由器)和一条链路的接口。 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号 net-id必须是不同的。这种主机称为多归属主机(multihomed host)。由于一个路由器至少应当连接到两个网络,因此一个路由器至少也应当有两个不同的 IP 地址
- 凡是分配到网络号net-id的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,其地位都是平等的。
- 按照因特网的观点,一个网络是指具有相同网络号的主机的集合。用转发器或网桥连接起来的若干个局域网仍为一个网络,因为这些局域网都具有相同的网络号 net-id。
划分子网
三级IP地址的构成
当初的IP地址设计不够合理,主要体现在:
- IP地址使用存在很大的浪费,地址空间的利用率很低。如10BASE-T允许加接的主机数是1024,但必须申请一个B类地址,则浪费了64510个地址,地址空间利用率仅为1.56%。
- 两级IP地址不够灵活。某单位对本单位的网络都有按部门划分的要求,但两级IP地址结构中并没有作出这方面的规定。
- 按物理网络分配一个网络号的方法,将导致路由表的表项越来越多,这不易改善网络性能
1985年起,IP地址格式中增加了一个“子网号字段”,使IP地址由两级结构变为三级结构。这种做法叫作划分子网。
划分子网的基本思路
- 划分子网纯属单位内部的事情,对本单位以外的网络是完全透明的。
- 划分子网的方法是把主机号字段的前若干个比特作为子网号字段,则 IP地址∷={<网络号>,<子网号>,<主机号>}
- 凡从其他网络传送到本单位网络某主机的IP数据报,仍然按IP数据报的目的网络号传送到连接在本单位网络上的路由器。此路由器收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。最后将 IP 数据报直接交付给目的主机。
举例:一个未划分子网的 B 类网络145.13.0.0
划分为三个子网后,对外仍是一个网络
子网掩码
- 由于IP地址本身以及数据报的首部都没有包含任何关于划分子网的信息,所以从一个IP数据报的首部无法判断源主机或目的主机所连接的网络是否进行了子网的划分。
- 如何知道子网的划分呢?划分子网要用到子网掩码(subnet mask)的概念。使用子网掩码(subnet mask)可以很方便地找出 IP 地址中的子网部分。
TCP/IP体系规定:子网掩码是一个32位二进制数,由一串连续的“1”后随一串连续的“0”组成。其中“1”对应于IP地址的网络号和子网号字段,而“0”对应于IP地址的主机号字段。
子网掩码采用点分十进制表示法(255.255.0.0),也可用网络前缀(或斜线)标记法(135.41.0.0/16)
IP 地址的各字段和子网掩码的关系
(IP地址) AND (子网掩码) =网络地址
子网掩码是一个网络或一个子网的重要属性。因特网标准规定:所有的网络都必须有一个子网掩码,它包含在路由表中。
划分子网的概念也适用于未划分子网的情况。未划分子网的网络可使用默认子网掩码。使用子网掩码可简化路由器的路由选择算法。
A、B和C类IP地址的默认子网掩码
划分子网的利弊
- 利——增加了灵活性。
- 弊——减少了能够连接在网络上的主机总数。例如,一个B类地址最多可连接65534台主机,但当划分成4个子网后,实际连接的主机为32764台,这是因为[RFC950]规定:子网号不能为全0或全1
变长子网
子网划分的最初目的是把基于类的网络划分为几个规模相同的子网。其实,创建不同规模的子网可避免IP地址的浪费。对于不同规模子网的划分,称为变长子网划分。
变长子网划分是一种用不同长度的子网掩码来分配子网号字段的技术。它是对已划分好的子网使用不同的子网掩码做进一步划分形成不同规模的网络,从而提高IP地址资源的利用率。
变长子网划分举例
一个B类IP地址为136.48.0.0的网络,需配置为1个能容纳32000台主机的子网,15个能容纳2000台主机的子网和8个能容纳254台主机的子网。
无分类编址
划分子网的概念缓解了当初IP地址设计不够合理所引起的矛盾,而变长子网的概念也符合用户对IP地址实际使用的需要。但这些措施并未从根本上缓解因特网在发展过程中所遇到的困难。
在1992年,因特网面临着三个急需解决的问题:①B类地址在1992年已分配过半。②因特网主干网上的路由表中的项目数急剧增长。③2011年2月,IANA宣布IPv4地址已经耗尽。
IETF在VLSM的基础上,又研究出采用无分类编址方法来解决上述问题。无分类编址方法的正式名字无分类域间路由选择CIDR(Classless Inter-Domain Routing),其新文档是RFC 4632
CIDR的主要设计思想
CIDR取消了以往对IP地址进行分类以及划分子网的概念,利用各种长度的“网络前缀 (network-pfefix) ”来代替分类地址中的网络号和子网号。
IP地址∷={<网络前缀>,<主机号>}
CIDR把网络前缀相同的连续的IP地址块组成“CIDR地址块”。一个CIDR地址块可用它的起始地址和块中地址数来表示。如136.48.32.8/20表示某CIDR地址块中的一个地址。
无分类编址的表示
CDIR使用网络前缀标记法(或斜线记法),即在IP地址后面加一斜线“/”再加一数字,此数字是网络前缀的位数,如136.48.52.36,表示该IP地址的前20位是网络前缀。
CIDR还使用其他几种表示形式。一种是把点分十进制中的低位连续的“0”省去,如20.0.0.0/10,可表示为20/10。另一种是在网络前缀后面加一个星号“*”,如00010100 00*,其中星号前是网络前缀,星号表示IP地址中的主机号
CIDR地址块举例
- 136.48.32.8/20表示在这个32位的IP地址中,前20位为网络前缀,后12位为主机号。每个地址块共有212个地址,其起始地址是136.48.32.0。
- 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20地址块”。
- 136.48.32.0/20地址块的最小地址:136.48.32.0,最大地址:136.48.47.255。
- 全 0 和全 1 的主机号地址一般不使用。
136.48.32.8/20地址块含有212个地址
路由聚合(route aggregation)
一个CIDR地址块可以包含很多地址,路由表的表项也可改用地址块来表示。这种地址聚合称为路由聚合。路由聚合既利于缩短路由表,又可减少查找路由表的时间,从而提高了因特网的性能。路由聚合也称为构建超网(supernetting)。
CIDR 虽然不使用子网概念,但仍然使用“掩码”这一名词(只是不叫子网掩码而已)。如对 /20 地址块,它的掩码是20个连续的1。斜线记法中的数字就是掩码中 1 的个数。
构建超网
在“包含的地址数中”,包含了全0和全1地址。表中K表示210(即1024)。网络前缀小于13或大于27的地址较少使用。 CIDR地址块中的地址数一定是2的整数次幂。
- 前缀长度不超过23位的CIDR地址块都包含了相当于多个C类地址。这些C类地址合起来就构成了超网。
- 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
- 使用CIDR构建超网,必须得到相关路由器及其协议的支持。
使用CIDR地址块的最大好处
- 可以更有效地分配IPv4的地址空间。如某单位需用900个IP地址。未使用CIDR时,ISP可以分配给该单位一个B类地址或者4个C类地址。但使用了CIDR,ISP可分配给该单位一个地址块208.18.128.0/22,它包含1024个IP地址,相当于4个连续的/24地址块。
- 可以按网络所在的地理位置来分配地址块,这可以大大缩小路由表所占的空间,即减少路由表的表项数。
地址解释和地址转换
IP 地址与硬件地址的区别
举例:用两个路由器互连三个局域网
通信的路径是:H1→经过 R1 转发→再经过 R2 转发→ H2
从协议栈的层次上看数据的流动
从虚拟的 IP 层上看 IP 数据报的流动
在链路上看 MAC 帧的流动
在IP层抽象的互联网上只能看到IP数据报。图中的IP1→IP2表示从源地址IP1到目的地址IP2,两个路由器的IP地址并不出现在IP数据报的首部中
- 虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择
- 在具体的物理网络的链路层,只能看见MAC帧,而看不见IP数据报(它被封装在MAC帧中) 。MAC帧在传送过程中,首部中填写的硬件地址HAx是不同的。
- 尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网屏蔽了下层很复杂的细节。在抽象的网络层上讨论问题,就能够使用统一的、抽象的 IP 地址来研究主机与主机或主机与路由器之间的通信。
地址解析协议ARP
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终使用的是硬件地址。
IP地址(32位)和硬件地址(48位)之间不存在简单的映射关系。ARP协议解决IP地址与物理地址的映射,而RARP协议解决物理地址与IP地址的映射。
每一个主机都设有一个ARP高速缓存(cache),里面存放有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。
当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,即得到其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该 MAC帧发往此硬件地址。否则该主机运行ARP协议。
ARP 高速缓存
- 高速缓存的作用就在于可以减少网络上的通信量。如果不用高速缓存,因为网络上的任一台主机要进行通信都需用广播方式发送ARP请求分组,这将导致网络上的通信量大大增加。用了高速缓存就可将得到的地址映射存入待用。
- ARP对存放在高速缓存中的“IP地址-硬件地址”映射表设置生存时间(如10min)。凡超过生存时间的表项即删除。被删除的表项无原则重新建立,也要经过前面所述的查找目的主机硬件地址的过程。
ARP是解决同一个局域网上的主机(或路由器)的IP地址和硬件地址的映射问题。只要主机或路由器与本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该 IP地址解析为链路层所需要的硬件地址。
如果所要找的目的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
从IP地址到硬件地址的解析是自动进行的,这种地址解析过程对用户对透明的。
使用 ARP 的四种典型情况
- 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
为什么不直接使用硬件地址进行通信?
- 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,这几乎是不可能的事。
- IP编址解决了这个复杂问题。凡连接到因特网的主机都拥有统一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用ARP来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
虚拟专用网VPN
由于IP地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
考虑到因特网安全性并不很好,一个机构内也并不需要把所有的主机都接入到外部的因特网。
因而就有一个设想:假定一个机构内部的计算机通信也采用TCP/IP协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址
两种地址
- 本地地址--仅在本机构内部使用的IP地址,可由本机构自行分配,不必向因特网的管理机构申请。
- 全球地址--全球唯一的IP地址,必须向因特网的管理机构申请。
存在的问题:在内部使用的本地地址有可能与因特网中某个IP地址重合,从而出现地址的二义性问题
解决的办法:RFC1918指明了一些专用地址。专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。三个专用地址块,即ICANN预留的部分A、B和C类专用地址块。
- A类:10.0.0.0~10.255.255.255;
- B类:172.16.0.0~172.31.255.255;
- C类:192.168.0.0~192.168.255.255
采用这种专用IP地址的专用网称为拟专用网VPN。虚拟专用网VPN是建立在基础网络之上的一种功能性网络。它向使用者提供一般专用网所具有的功能,但本身却不是一个独立的物理网络,而是通过隧道技术,架构在公共网络服务商所提供的网络平台(如Internet、ATM和FR等)之上的逻辑网络。
虚拟专用网的两个含义:一是“虚拟”,因为整个VPN网上的任意两个结点之间的连接并没有传统专用网所需的端到端的物理链路,而是将它建立在分布广泛的公用网络的平台上;二是一个“专用网”,每个VPN用户都可以从临时的“专用网”上获得所需的资源。
构建虚拟专用网的注意事项
- 在不同网点的专用网之间进行通信,而需要通过公用的因特网,又有保密要求的,那么所有通过因特网的数据都必须加密。
- 一个机构要构建自己的VPN就必须为它的每一个场所购买专用的硬件和软件,并进行配置,使每一个场所的VPN系统都知道其他场所的地址。
虚拟专用网的特点
- 成本低廉,只需支付日常的上网费用。
- 得到最常用的网络协议的广泛支持。
- 具有身份验证、数据加密等安全可靠功能。
- 易于扩充和管理。
虚拟专用网的不足
- 安全性。由于因特网不是一个可信赖的安全网络,为确保数据传输的安全,应对入网传输的数据进行加密处理。
- 可管理性。VPN的管理要能够应对电信单位需求的快速变化,以避免额外的远行开支。
- 性能。由于ISP是“尽力交付”传输的IP分组,而跨因特网的传输性能又无法得到保证,且时有变化,所以附加的安全措施也会显著地降低性能。
利用隧道技术实现虚拟专用网
隧道的建立有两种方式:一种是自愿隧道,指服务器计算机或路由器可以通过发送VPN请求配置和创建的隧道;另一种是强制隧道,指由VPN服务提供商配置和创建的隧道。
隧道有两种类型:①点-点隧道。隧道由远程用户计算机延伸到企业服务器,由两边的设备负责隧道的建立,以及两点之间数据的加密和解密。②端-端隧道。隧道中止于防火墙等网络边缘设备,它的主要功能是连接两端的局域网。
IP 数据报的格式
IP数据报由首部和数据两部分组成。
IP数据报的首部
- 首部的前一部分为固定长度(20字节),这是所有IP数据报必须具有的。
- 首部固定部分的后面是选项和填充字段(长度可变) 。
- 数据部分的长度也是可变的
版本——4位,指IP协议的版本。目前广泛使用的协议版本号为4 (即IPv4)。通信双方的协议版本必须一致。
首部长度——4位,表示数据报首部的长度。因首部长度可表示的最大数值是15个单位(每单位为4 字节),所以IP的首部长度的最大值为60字节。当首部长度不足4字节的整数倍时,可利用填充字段加以填充补齐
区分服务——8位,表示对数据报的服务要求。前三位表示优先级(0~7,0最低),D、T、R和C分别表示对时延、吞吐量、可靠性和路由服务费用有选择的要求。最后一位未用。该字段只有当使用区分服务时才使用。
总长度——16位,指整个数据报(包括首部和数据)的长度,单位为字节。数据报的最大长度为65535字节(64KB)。总长度必须不超过数据链路层的最大传送单元MTU。当数据报长度超过MTU时,需对其分片,此时的总长度是指分片后的每一分片(包括首部与数据) 的长度
标识(identification) ——16位,它用于数据报各分片最终被重装成来原来的数据报。它是一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。目的主机将相同标识字段值的各分片数据报最后进行正确地重装(合片)。
标志(flag) ——3位,目前只有后两位有意义。最低位记作 MF (More Fragment)。MF=1表示后面“还有分片”。MF=0表示已是最后一个分片。次低位是DF(Don‘t Fragment) 用来控制是否允许数据报分片。只有DF=0才允许分片。
片偏移——13位,指较长的分组在分片后某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始,以便目的主机重装数据报。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
IP数据报分片举例:
- 一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
- 因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。
- 于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。
- 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。
总长度 | 标识 | MF | DF | 片偏移 | |
原始数据报 | 3820 | 12345 | 0 | 0 | 0 |
数据报片1 | 1420 | 12345 | 1 | 0 | 0 |
数据报片2 | 1420 | 12345 | 1 | 0 | 175 |
数据报片3 | 1020 | 12345 | 0 | 0 | 350 |
生存时间——8位,记为TTL(Time To Live),表示该数据所在网络中的寿命。其单位最初是秒,但为了方便,现在都用“跳数”作为TTL的单位。数据报每经过一个路由器,其TTL值就减 1,当TTL值减为零时,就丢弃这个数据报。