IP配套三个协议:ARP(地址解析协议),ICMP(网际控制报文协议),IGMP(网际组管理协议)
A类地址的网络号字段占1个字节,只有7位可供使用(该字段的第一位已固定为0),但可指派的网络号是126个(即128-2)。减2的原因是:
若主机发送一个目的地址为环回地址(例如127.0.0.1)的IP数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。
每一个IP地址都由网络号和主机号两部分组成。从这个意义上说,IP地址是一种分等级的地址结构。分两个等级的好处是:
IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。这样就方便了IP地址的管理;
路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间。
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址
在网络层和网络层以上使用的是IP地址,而数据链路层及以下使用的是MAC地址。在IP层抽象的互联网上只能看到IP数据报,在局域网的链路层,只能看见MAC帧。
IP数据报中首末地址一直不变,MAC帧中会随着路由器的变换而变化。
ARP协议:通过IP地址找到MAC地址。
每一台主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。
当主机A要向本局域网上的某台主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。如果没有就自动运行ARP,找到B的硬件地址。
注意:
对于不在同一网络的ip地址,不能通过一次ARP进行解析地址;当然其实也不需要直接知道目标ip的MAC地址,只要知道下一个路由器的地址,接下来的工作就交给下一个路由器继续转发就好了。
总长度: 首部+数据部分
标识: 每产生一个数据报,标识+1,分片后的子数据报拥有相同的标识,标识的意义就是方便分片后的数据报重新组合
标志: 最低位MF=1时表示还有分片;中间位DF=1时表示不能分片
片偏移:在分片前的相对位置,单位是8个字节,也用于分片重组
生存时间(TTL): 单位是跳数,跳一个路由器->TTL-1
首部校验和:只检验数据报的首部,不检验数据部分
数据链路层协议规定了最大传送单元MTU,总长度大于MTU时,IP数据报会分片
如果每一个网络有1万台主机,四个网络就有4万台主机,因而每一个路由表就有4万个项目,即4万行。每一行对应于一台主机。但若路由表指出到某个网络应如何转发,则每个路由器中的路由表就只包含4个项目,即只有4行,每一行对应于一个网络。
在路由表中,对每一条路由最主要的是以下两个信息
特定主机路由: 虽然互联网所有的分组转发都是基于目的主机所在的网络,但也有这样的特例:对特定的目的主机指明一个特定主机路由。
默认路由:只要目的网络是其他网络(不是N1或N2),就一律选择默认路由,把数据报先间接交付路由器R1,让R1再转发给互联网中的下一个路由器,一直转发到目的网络上的路由器。
### 分组转发算法
路由表的建立和更新之后会提
32位的IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息。因此必须另外想办法,这就是使用子网掩码
不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的“与”运算(AND),就立即得出网络地址来。
路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码。
我们以一个B类地址为例,说明可以有多少种子网划分的方法。在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的(见表4-6)
表中的“子网号的位数”中没有0,1,15和16这四种情况,因为这没有意义。
划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
使用子网划分后,路由表必须包含以下三项内容:目的网络地址、子网掩码和下一跳地址。
128.14.35.7/20 = 10000000 00001110 00100011 00000111
20也可以理解为地址掩码(就是子网掩码)中1的个数。
由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合或者构成超网,它使得路由表中的一个项目可以表示原来传统分类地址的很多个路由。
把四个系的路由聚合为大学的一个路由(即构成超网),是将网络前缀缩短。网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
路由表匹配下一跳地址如果有多个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由。
这是因为网络前缀越长,其地址块就越小,因而路由就越具体最长前缀匹配又称为最长匹配或最佳匹配。
为了更有效地转发IP数据报和提高成功交付的机会,在网际层使用了网际控制报文协议ICMP。
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
倘若从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类。
所谓“最佳路由选择”只能是相对于某一种特定要求下得出的较为合理的选择而已。
整个互联网划分为许多较小的自治系统,一般都记为AS。自治系统AS是在单一技术管理下的一组路由器,而这些路由器使用一种自治系统内
部的路由选择协议和共同的度量。
在目前的互联网中,一个大的ISP就是一个自治系统。这样,互联网就把路由选择协议划分为两大类,即:
内部网关协议IGP,即在一个自治系统内部使用的路由选择协议,而这与在互联网中的其他自治系统选用什么路由选择协议无关。
外部网关协议EGP,若源主机和目的主机处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。
自治系统之间的路由选择也叫做域间路由选择,而在自治系统内部的路由选择叫做域内路由选择
RIP是一种分布式的基于距离向量的路由选择协议(距离就是跳数),是互联网的标准协议。
if null -> 添加
else {
if 下一跳==R -> 更新
else 下一跳 = min(curr,prep)
}
当网络出现故障时要经过比较长的时间才能将此信息传送到所有的路由器。
R1知道不可达网1,但R2不知道;R2使R1误以为R2可以到,互相传递错误信息,直至跳数超过16
RIP实现简单,开销较小,但坏消息传得慢,距离限制为16,只适合小型网络
开放最短路径优先OSPF最主要的特征使使用了分布式的链路状态协议,与RIP相比有三个要点不同:
采用OSPF能用于规模庞大的网络,OSPF通常会把一个大的自治区域化成多个小的区域,在上层的区域叫做主干区域,从其他区域来的信息由区域边界路由器进行概括。每个区域至少有一个边界路由器,主干区域内的路由器称为主干路由器,与其他自治系统相连的叫做自治系统边界路由器(R6)
由于上述情况,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP采用了路径向量路由选择协议,它与距离向量协议(如RIP)和链路状态协议(如OSPF)都有很大的区别。
在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的BGP发言人一般说来,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。
在图中画出了三个自治系统中的5个BGP发言人。每一个BGP发言人除了必须运行BGP协议外,还必须运行该自治系统所使用的内部网关协议,如OSPF或RIP
如果是路由器,那么它的不同接口上,分别配置了IPv4地址和IPv6地址。
如果是计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
IP多播(以前曾译为组播)是由一个源点发送到许多个终点,即一对多的通信。
与单播相比,在一对多的通信中,多播可大大节约网络资源。
其实多播组的标识符就是IP地址中的D类地址。显然,多播地址只能用于目的地址,而不能用于源地址。此外,对多播数据报不产生ICMP差错报文。
路由器又怎样知道多播组的成员信息呢?这就要利用一个协议,叫做网际组管理协议IGMP
IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。
显然只有IGMP协议是不够的(本地局域网),还需要多播路由选择协议协同工作(互联网)。
加入新成员:该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给互联网上的其他多播路由器。
动态调整:组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要有一台主机对某个组响应,那么多播路由器就认为这个组是活跃的。
多播路由器的选择实际时创建了以源主机为根节点的多播转发树。同一个多播组,不同的转发源会有不同的多播转发树。