与网际协议IPv4配套的3个协议:
- 地解析协议ARP(Address Resolution ProtocoI)
- 网际控制报文协议ICMP(Internet ControlMessage Protocol)
- 网际组管理协议IGMP(Internet GroupManagement Protocol)
4.2.1 虚拟互联网络
实现网络互连、互通时需要解决许多问题,如以下“不同":
寻址方案、最大分组长度、网络接入机制、超时控制、差错恢复方法、状态报告方法、路由选择技术、用户接入控制、服务、管理与控制方式……
如何将异构的网络互相连接起来?
1. 实现异构网络的互连互通方法,哪种好?
2.使用中间设备进行互连
3. 使用转发器或网桥不称为网络互连
转发器、网桥或交换机仅把一个网络扩大了,仍然是一个网络。
4. 网络互连使用路由器
5. 互连网络与虚拟互连网络
6. IP网的意义
- 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。
- 如果在这种覆盖全球的IP网的上层使用TCP协议,那么是现在的互联网(Internet)。
7. 分组传输路径
不需要经过任何路由器的是直接交付,反之为间接交付。
4.2.2 IP地址
- 在TCP/IP体系中,IP地址是一个最基本的概念。
- 没有IP地址,就无法和网上的其他设备进行通信。
- 本部分重点:
- IP地址及其表示方法
- 分类的IP地址
- 无分类编址CIDR
- IP地址的特点
1. IP地址及其表示方法
互联网上的每台主机(或路由器)的每个接口分配一个在全世界唯一的IP地址。 由互联网名字和数字分配机构进行分配。
点分十进制记法举例:
2. IP地址采用2级结构
两个字段:网络号和主机号。
IP地址在整个互联网范围内是唯一的。 IP地址指明了连接到某个网络上的一个主机。
3. 分类的IP地址
单播地址:一对一通信
多播地址:一对多通信
- A类地址的网络号字段net-id为1字节,主机号字段host-id为3字节。
- B类地址的网络号字段net-id为2字节,主机号字段host-id为2字节。
- C类地址的网络号字段net-id为3字节,主机号字段host-id为1字节。
- D类地址是多播地址
- E类地址保留为今后使用
各类IP地址的指派范围:
注意:指派时要扣除全0和全1的主机号。
一般不使用的特殊的IP地址:
A类地址的网络号字段占1个字节,只有7位可供使用(该字段的第一位已固定为0)。 但要注意,第一,网络号为全0的IP地址有特殊的用途,它表示“本网络";第二,网络号,为127(即01111111)保留作为本地软件环回测试本主机的进程之间的通信之用。若主机发送一个目的地址为环回地址(例如127.0.0.1)的IP数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。因此A类地址可指派的网络号是126个(即27-2)。
A类地址的主机号占3个字节。但全0和全1的主机号一般不指派。全0的主机号表示该IP地址是“本主机”所连接到的单个网络地址(例如,若主机的IP地址为5.6.7.8,则该主机所在的网络的网络号是5,而该网络的网络地址就是5.0.0.0)。全1表示“所有的”,因此全1的主机号字段表示该网络上的所有主机。因此每一个A类网络中的最大主机数是224-2,即16777214。
B类地址的网络号字段有2个字节。因此B类地址可指派的网络数为214,即16384。B类地址的每一个网络上的最大主机数是216-2,即65534。这里需要减2是因为要扣除全0全1的主机号。
C类地址有3个字节的网络号字段。因此C类地址可指派的网络总数是221,即 2097152。每一个C类地址的最大主机数是28-2,即254。
4. 分类的IP地址的优点和缺点
优点:
- 管理简单
- 使用方便
- 转发分组迅速
- 划分子网,灵活地使用
缺点:
- 设计上不合理
- 大地址块,浪费地址资源
- 即使采用划分子网的方法,也无法解决IP地址枯竭的问题
补充:划分子网的方法,即在IP地址的主机号中,插入一个子网号,把两级的IP地址变为三级的IP地址。
5. 无分类编址
- CIDR:无分类域间路由选择。
- 消除了传统的A类、B类和C类地址以及划分子网的概念,可以更加有效地分配IPv4的地址空间,但无法解决IP地址枯竭的问题。
<1>网络前缀
2级结构,两个字段:网络前缀和主机号。
网络前缀的位数n是多少?
最大的区别: 前缀的位数n不固定,可以在0~32之间选取任意值。
CIDR记法:
斜线记法:a.b.c.d/n:二进制IP地址的前n位是网络前缀。 例如:128.4.35.7/20:前20位是网络前缀。
<2>地址块
- CIDR把网络前缀都相同的所有连续的IP地址组成一个CIDR地址块。
- 一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数。
注意:
我们尝试用地址块中的最小地址和网络前缀的位数指明一个地址块。也可以用二进制代码(网络前缀加 *)简要地表示该地址块。
<3>地址掩码
- 又称为子网掩码。
- 位数:32位。
- 目的:让机器从IP地址迅速算出网络地址。
- 由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。
默认地址掩码:
网络地址=(二进制的IP地址)AND(地址掩码):
由上面的运算结果可以知道,IP地址128.14.35.7/20所在的网络地址是128.14.32.0/20。
常用的CIDR地址块:
构造超网:
- 每一个CIDR地址块中的地址数一定是2的整数次幂。
- 除最后几行外,CIDR地址块都包含了多个C类地址(是一个C类地址的2n倍,n是整数)
- 因此在文献中有时称CIDR编址为“构造超网"。
三个特殊的CIDR地址块:
路由聚合:
CIDR地址块划分举例:
这个ISP共有64个C类网络。如果不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的转发表中,需要有64行。采用地址聚合后,转发表中只需要用1行来指出到206.0.64.0/18地址块的下一跳。 在ISP内的路由器的转发表中,也仅需用206.0.68.0/22这1个顶目,就能把外部发送到这个大学各系的所有分组,发到大学的路由器。
1. IP地址的特点
-
每个IP地址都由网络前缀和主机号两部分组成。
IP地址是一种分等级的地址结构。
- 方便了IP地址的分配和管理。
- 实现路由聚合,减小了转发表所占的存储空间,以及查找转发表的时间。
-
IP地址是标志一台主机(或路由器) 和一条链路的接口。
-
当一台主机同时连接到两个网络上时, 该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。
-
一个路由器至少应当连接到两个网络, 因此一个路由器至少应当有两个不同的IP地址。
-
-
转发器或交换机连接起来的若干个局域网仍为一个网络。
- 按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合。
- 转发器或交换机连接起来的若干个局域网都具有同样的网络号,它们仍为一个网络。
- 具有不同网络号的局域网必须使用路由器进行互连。
-
在IP地址中,所有分配到网络前缀的网络都是平等的。
互联网同等对待每一个IP地址,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网。
注意:
- 同一个局域网上的主机或路由器的IP地址中的网络号必须一样。
- 路由器的每一个接口都有一个不同网络号的IP地址。
- 两个路由器直接相连的接口处,可指明也可不指明地址。 如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。这种网络仅需两个IP地址, 可以使用/31地址块。 主机号可以是0或1。
4.2.3 IP地址与MAC地址
1. IP地址与MAC地址的区别
我们以以下的过程为例:
从协议栈的层次上看IP地址和MAC地址:
在IP层抽象的互联网上只能看到IP数据报:
虽然IP数据报要经过路由器R1和R2的两次转发,但在它的首部中的源地址和目的地址始终分别是IP1和IP2。数据报中间经过的两个路由器的IP地址并不出现在IP数据报的首部中。
在局域网的链路层,只能看见MAC帧:
MAC帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化。在数据链路层,进行每次转发时,都要剥去原来的MAC帧的首部和尾部,再重新添加新的首部和尾部。这时首部中的源地址和目的地址已经发生改变,而这种变化,在上面的IP层上是看不见的。
不同层次、不同区间使用的源地址和目的地址:
- 尽管互连在一起的网络的MAC地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节。
- 只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。
那么,主机或路由器怎样知道应当在MAC帧的首部填入什么样的MAC地址?
4.2.4 地址解析协议ARP
实现IP通信时使用了两个地址:
- IP地址(网络层地址)
- MAC地址(数据链路层地址)
1. 地址解析协议ARP的作用
问题:已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的MAC地址?
<1>ARP高速缓存
- ARP高速缓存:
- 存放IP地址到MAC地址的映射表。
- 映射表动态更新(新增或超时删除)。
超过生存时间的顶目都从高速缓存中删除,以适应网络适配器变化。
<2>ARP工作
当主机A欲向本局域网上的某个主机B发送IP数据报时:
<3>ARP查找IP地址对应的MAC地址
- 本局域网上广播发送ARP请求(路由器不转发ARP请求)。
- ARP请求分组:包含发送方硬件地址/发送方地址/目标方硬件地址(未知时填0)/目标方IP地址。
- 单播ARP响应分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址/目标方IP地址。
- ARP分组封装在以太网帧中传输。
第一次更新:主机A在发送其ARP请求分组时, 将自己的IP地址到MAC地址的映射写入ARP请求分组。
第二次更新:
- 当主机A收到主机B的ARP响应分组后,就在其ARP高速缓存器中写入主机B的IP地址到MAC地址的映射中。
- 当主机B收到A的ARP请求分组时,就将主机A的IP地址及其对应的MAC地址映射写入主机B自己的ARP高速缓存中。
<4>ARP高速缓存的作用
- 存放最近获得的IP地址到MAC地址的绑定。
- 减少ARP广播的通信量。
- 为进一步减少ARP通信量,主机A在发送其ARP请求分组时, 将自己的IP地址到MAC地址的映射写入ARP请求分组。
- 当主机B收到A的ARP请求分组时,就将主机A的IP地址及其对应的MAC地址映射写入主机B自己的ARP高速缓存中。不必再发送ARP请求。
<5>两台主机不在同一个局域网上怎么办?
ARP用于解决同一个局域网上的主机或路由器的地址和MAC地址的映射问题。
<6>使用ARP的四种典型情况
- 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址。
- 发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址。
- 发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
2. 为什么要使用两种地址:IP地址和MAC地址?
-
不同网络使用不同的MAC地址。MAC地址之间的转换非常复杂。
-
对以太网MAC地址进行寻址也是极其困难的。
-
IP编址把这个复杂问题解决了。
连接到互联网的主机只需各自拥有一个唯一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用ARP来找到MAC地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。
因此,在虚拟的IP网络上用IP地址进行通信非常方便。
4.2.5 IP数据包的格式
首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。可选字段,其长度是可变的。
1. IP数据报首部的固定部分中的各字段
-
版本——占4位,即IP协议的版本。目前IP协议版本号为4(即IPv4)。
-
首部长度——占4位,可表示的最大值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。
-
区分服务——占8位,用来获得更好的服务。只有在使用区分服务时,这个字段才起作用。在一般的情况下都不使用这个字段。
-
总长度——占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元MTU。
-
标识——占16位,它是一个计数器,用来产生IP数据报的标识。
-
标志
- 标志字段的最低位是MF。MF=1表示后面还有分片,MF=0表示最后一个分片。
- 标志字段中间的一位是DF,只有当DF=0时才允许分片。
-
片偏移——占13位,指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节位偏移单位。
IP数据报分片:
-
生存时间——占8位,记为TTL,指示数据报在在网络中可通过的路由器数的最大值。
-
协议——占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给那个处理过程。
IP协议支持多种协议,IP数据报可以封装多种协议PDU。
-
首部检验和——占16位,只检验数据报的首部,不检验数据部分。这里不采用CRC检验码而采用简单的计算方法。
在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,把首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0,于是就保留这个数据,否则即认为出差错,并将此数据报丢弃。
补充:两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加 是1,1和1相加是0但要产生一个进位1,加到下一列。若最高位相加后产生进位,则最后得到的结果要在最低位加1。
-
源地址和目的地址都各占32位。
2. IP数据报首部的可变部分
- IP首部的可变部分是一个选顶字段,用来支持排错、测量以及安全等措施,内容很丰富。
- 长度可变:从1个字节到40个字节不等,取决于所选择的顶目。
- 增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的,增加了每一个路由器处理数据报的开销。
- 实际上这些选项很少被使用。
参考资料:《计算机网络(第8版)》—— 谢希仁。