网络层的学习笔记
1.虚电路服务和数据报服务
虚电路服务是面向连接的,由网络来提供可靠传输的服务。之所以叫做虚电路,就是说它并不是真正的以电路交换方式传输数据的,而是用分组交换。
数据报服务则是无连接的,不可靠的,尽最大努力交付数据的服务。可靠的传输由主机来提供,因为主机是智能的。
2.网际协议IP
与IP协议有关的协议有ARP,RARP,ICMP,IGMP.
由ARP协议将IP地址转换为MAC地址交付给数据链路层,而RARP则是用来将MAC地址转换为IP地址的,因为后来有了DHCP协议,RARP就不再使用了。
使用IP地址的目的是为了将网络上多种异构的网络互联起来。
IP地址的分类
IP地址可以分为四类:A,B,C,D
A,B,C类是单播地址,而D类是多播地址。
IP地址使用32位二进制代码,由点分十进制记法表示。
A类地址的网络号占1个字节主机号占3个字节,B类地址的网络号占2个字节主机号占2个字节,C类地址的网络号占3个字节主机号占1个字节。网络号字段最前面的类别位分别为0,10,110.
A类地址的网络号可以有126个,除去全0和全1的(不算类别位),其中全0表示“本网络”,全1为127,表示本地软件环回测试。
主机号有224-2个,其中全0表示本主机所连接到的单个网络地址,全1表示该网络上的所有主机。
B类地址的网络号有214-1个,除去全0的(不算类别位),即B类地址可指派的最小网络地址为128.1.0.0
主机号同A类地址,除去全0和全1的。
C类地址的网络号有221-1个,除去全0的(不算类别位),即C类地址可指派的最小网络地址为192.0.1.0
主机号同A类地址,除去全0和全1的。
路由器至少有2个IP地址。
地址解析协议ARP
在主机的ARP高速缓存中存放着一个从IP地址到MAC地址的映射表。
主机之间的通信就是根据这个映射表来找到对方的MAC地址进而封装成MAC帧进行发送的。
映射表的构造如下:
当主机A想要和B通信时,在映射表中未找到关于B的信息,就在局域网中广播一个ARP请求分组,内容为A的IP地址和MAC地址,以及想要知道MAC地址的主机B的IP地址。(广播)
在本局域网的所有主机都将收到这个ARP请求分组,只有B看到了自己的IP地址,便向A发送一个响应分组,内容为B的IP地址和MAC地址,并将A的地址映射写入自己的ARP高速缓存中。(单播)
主机A收到B的地址映射后也将其写入自己的ARP高速缓存中。
每一个地址映射项目都设置有生存时间的。
IP数据报的格式
首部固定长度为20字节。
首部长度字段占4位。可表示最大十进制数为15,单位是4字节,即IP数据报首部最大长度可为60字节,首部长度不是4字节的整数倍时,需用最后填充字段加以填充。
总长度字段占16位。可表示最大十进制数为216-1,单位是字节,即数据报的最大长度为65535字节。
最大传送单元MTU将在数据链路层的学习笔记中总结。
IP数据报允许的最小长度为576字节,超过1500字节的数据报将被分片。
标识字段占16位,区分不同的数据报,但并不是序号,因为IP是无连接的服务。只是用于分片时,对同样标识字段的分片进行重装。
标志字段占3位,低位MF=1时表示后面还有分片,而MF=0时则表示这是若干分片中最后一个。中间位DF=0时允许分片。
片偏移字段占13位,表示某分片在原分组中的相对位置。单位是8字节,表明分片长度都是8字节的整数倍。
生存时间TTL字段占8位,表示数据报在网络中的寿命。现在表示跳数,可经过路由器的最大数值为255.
首部检验和字段占16位,只检验首部,不包括数据部分。不采用CRC检验码,而是将首部划分为许多16位字的序列,并把检验和字段置零。用反码算数运算将其相加后,取结果的反码填入检验和字段。
3.划分子网构成超网
目的IP地址与子网掩码相与可得到目的IP的网络地址。
划分子网增加了灵活性,却减少了能够连接在网络上的主机总数。
同样的IP地址和不同的子网掩码可以得出相同的网络地址,但不同的掩码效果不同。
无分类域间路由CIDR采用斜线记法,实现了路由聚合。
最长前缀匹配。
4.网际控制报文协议ICMP
ICMP报文分为差错报告报文和询问报文。
差错报文又分为五种:
终点不可达
源点抑制(与拥塞控制有关)
时间超过
参数问题
改变路由(重定向)
询问报文分为两种:
回送请求和回答
时间戳请求和回答
将需要进行差错报告的IP数据报首部和数据字段的前8个字节提取出来,加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报文的数据部分。
5.因特网的路由选择协议
因特网采用分层次的路由选择协议,为此,将整个互联网划分为许多较小的自治系统AS。
外部网关协议EGP和内部网关协议IGP
内部网关协议RIP(路由信息协议)
是一种分布式的基于距离向量的路由选择协议,最大优点是简单。只适用于小型互联网。
不能在两个网络之间同时使用多条路由,选择一条具有最少路由器的路由。
特点:
仅和相邻路由器交换信息。
交换的信息为当前本路由器所知道的全部信息,即自己的路由表。
按固定的时间间隔交换信息。
距离向量算法:
对每一个相邻路由器发送过来的RIP报文,进行以下步骤:
对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目,把下一跳字段改为X,把所有距离字段的数值都加1.
然后对修改后的RIP报文中的每一个项目进行以下步骤:
若原来路由表中没有目的网络N,则把该项目添加到路由表中。
若原来路由表中有目的网络N,且下一跳路由器地址为X,则用收到的项目替换原路由表中的项目。
若原来路由表中有目的网络N,而下一跳路由器地址不是X,若收到的项目中的距离字段数值小于路由表中的距离,则进行更新。
否则什么也不做。
若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,把距离置为16.
返回
RIP协议的报文格式
使用运输层的用户数据报UDP进行传送。
一个RIP报文最多可包括25个路由,首部为4字节,因而RIP报文的最大长度为4+20*25=504字节。
RIP存在的问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
好消息传播得快,坏消息传播得慢。
实现简单,开销较小。
内部网关协议OSPF(开放最短路径优先)
使用分布式的链路状态协议。
与RIP的不同点:
发送对象不同:OSPF向本自治系统中所有路由器发送信息。(洪泛法)通过所有输出端口向所有相邻的路由器发送信息,RIP协议仅仅向相邻的几个路由器发送信息。
发送内容不同:OSPF发送的信息就是与本路由器相邻的所有路由器的链路状态(与哪些路由器相邻,度量:费用,距离,时延,带宽),RIP协议发送的信息是到所有网络的距离和下一跳路由器。
交换信息时间间隔不同:OSPF只有当链路状态发生变化时,才使用洪泛法发送此信息,RIP不管网络拓扑有无改变,均定期交换路由表信息。
使用的数据报类型不同:OSPF使用IP数据报,RIP使用UDP数据报。
综上,OSPF的所有路由器最终都能建立一个链路状态数据库,也就是全网的拓扑结构图。在全网范围内是一致的,因为链路状态数据库是同步的。RIP协议的每一个路由器虽然知道到所有网络的距离和下一跳路由器,但却不知道全网的拓扑结构。OSPF的更新过程收敛得快。
OSPF将一个自治系统分为若干个小的区域,为了使每一个区域能够和本区域以外的区域通信,OSPF使用层次结构的区域划分。
OSPF特点:
对于不同类型的业务可计算出不同的路由。(商用:链路带宽)
负载平衡:如果到同一个目的网络有多条相同代价的路径,可将通信量分配给这几条路径。
所有在OSPF路由器之间交换的分组都具有鉴别功能,保证了仅在可信赖的路由器之间交换链路状态信息。
OSPF支持可变长度的子网划分和无分类编址CIDR。
OSPF让每一个链路状态都带上一个32位的序号,序号越大状态就越新。
五种分组类型:
问候分组:发现和维持可达性。
数据库描述分组:向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
链路状态请求分组:向对方请求发送某些链路状态项目的详细信息。
链路状态更新分组:用洪泛法对全网更新链路状态。
链路状态确认分组:对链路更新分组确认。
每两个相邻路由器每隔10秒交换一次问候分组,40秒没有收到某个相邻路由器发的问候信息,就认为该路由器不可达,立刻修改链路状态数据库,计算路由表。
两个同步的路由器叫做完全邻接路由器。
外部网关协议BGP
采用路径向量路由选择协议。
每个AS使用BGP发言人与其他相邻的AS通信。
采用TCP连接提供可靠服务。
四种报文:
OPEN打开
UPDATE更新(核心)
KEEPALIVE保活
NOTIFICATION通知
(未完待续)