一、学习内容
a) 两种用于构造网络层分组交付的方法,即数据报模式和虚电路模式,并且理解编址在传递分组到目的主机所起的重要作用
b) 对网路层的转发功能和路由功能做重要区别,转发涉及分组在单一的路由器中从一条入链路到一条出链路的传送,路由选择涉及一个网络的所有路由器,它们经路由选择协议共同交互,以决定分组从源
目的结点所采用的路径。
c) 为了深入分组转发,我们将学习IP、NAT、IPV4、ICMP、IPV6
d) 为了深入学习路由选择功能,学习链路状态和距离矢量算法
二、转发和路由选择
转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作,路由选择是指网络范围的过程,以决定分组从源到目的地所采取的端到端路径。
每个路由器有一张转发表,路由器通过检查到达分组首部字段的值来转发分组,然后使用该值在该路与其的转发表中索引查询。存储在转发表项中的该首部的值指出了该分组将被分发的路由器的输出链路接口。
转发表是如何得到的呢?(问题揭示了路由选择和转发之间的关系)
答:路由选择算法决定了插入路由器的转发表的值,路由器接收路由选择协议报文,该信息被用于配置其转发表。如下图:
我们说过网络层有两个重要的功能,转发和路由选择,实际上还有第三种重要的网络功能,即连接建立,回想我们学习TCP时,当数据从发送方流向接收方之前,需要进行三次握手,这允许双方建立所需的状态信息,以类似的方式,某些网络体系结构如:ATM,帧中继,MPLS,要求从源到目的地沿着选择的路径彼此握手,以便在给定源到目的地连接中的网络层数据分组能够开始流动之前建立起状态。
三、虚电路和数据报网络
运输层能够为应用程序提供无连接服务或面向连接服务,UDP:一种无连接的服务,TCP:面向连接的服务,以类似的方式,网络层也能够在两台主机之间提供无连接服务或连接服务,网络层的连接和无连接服务在很多方面与运输层的面向连接和无连接服务类似,如,网络层连接服务以源和目的主机间的握手开始,网络层无连接服务则没有任何握手预备步骤。但也存在重大差异)))
1.网络层提供的是主机到主机的服务,运输层提供的是进程到进程的服务
2.在至今的所有网络体系结构(ATM,因特网,帧中继),都不能同时提供两种服务,仅在网络层提供连接服务的计算机网络称为虚电路网络,仅在网络层提供无连接服务的计算机网络称为数据报网络。
3.运输层面向连接服务是在网络边缘的端系统中实现的,网络层连接服务除了在端系统中,也在路由器中实现。
(一)虚电路网络
虽然因特网是一个数据报网络,但很多其他网络体系结构(ATM、帧中继、)却是虚电路网络,因此在网络层使用连接,这些网络层连接被称为虚电路。
主机A请求网络与主机B建立一条虚电路,假设虚电路选择路径A-R1-R2-B,并为这三条链路分配VC号12、22、32,这这种情况下,当这条虚电路中的分组离开主机A,VC值12,离开R1,VC值22,离开R2,值32
R1的转发表:
入接口 | 入VC号 | 出接口 | 出VC号 |
1 | 12 | 2 | 22 |
.. | .. | .. | .. |
虚电路与运输层的连接建立之间有一个细微但很重要的区别:
运输层的连接建立仅涉及两个端系统,对于一个虚电路网络层,沿两个端系统之间路径上的路由器都要参与虚电路的建立,且每台路由器都完全知道经过它的所有虚电路。
(一)数据报网络
在数据报网络中,每当一个端系统要发送分组,就为该分组加上目的端系统的地址,然后将分组推进网络中,无需建立任何虚电路,路由器不维护任何虚电路的状态信息。
当分组从源到目的地传输,每台路由器都使用分组的目的地址来在转发表中查找适当的输出链路接口。
转发表:
前缀匹配 | 链路接口 |
10101001010 | 0 |
101010010101010 | 2 |
使用最长前缀匹配规则。
因特网作为一种数据报网络,是有将计算机连接在一起的需求发展而来的,由于端系统设备复杂的多,因特网架构师们选择使网络层服务模型尽可能简单,另外的功能(如:按序传送、可靠数据传输)在端系统中
的更高层实现,这正好与电话网模型相反。
三、路由器工作原理
前面简单的了解了一下转发,现在详细了解一下!
路由体系结构:
1.输入端口,它要执行将一条输入的物理链路和路由器相连的物理层功能,更重要的是,在输入端口要完成查找功能,即红框内,在这里通过查询转发表决定路由器的输出端口,然后通过交换结构转发到
输出端口。转发表是由路由选择处理器计算和更新的,但转发表的一份影子副本通常会被存放在每个输入端口,有了影子副本,转发决策能在每个输入端口本地作出,无须调用中央路由选择处理器,因此避免了集中式处理的瓶颈。
2.交换结构,完成数据的交换,是一台路由器的核心,正是通过这种交换结构,分组才能实际地从一个输入端口交换到一个输出端口中。
3.路由选择处理器,执行路由选择协议,维护路由选择表以及连接的链路状态信息,并为路由器计算转发表。
在讨论了上述的转发机制,但是我们并没有提及任何特定的计算机网络,在此,我们应该了解一下,我们最常见的网络-因特网。
因特网的网络层有三个主要组件:
1.IP协议
2.路由选择部分(计算和维护转发表)
3.ICMP(报告数据报中的差错和对默写网络层信息请求进行相应的设施)
四、数据报
网络层分组被称为数据报(segment),以IPV4为例
IPV4数据报格式:
IP数据报分片
在不同的链路上,能承载不同的数据,即MTU的值不同,因此数据报的传送,需要发生分片。下面是分片的举例:
片 | 字节 | ID | 偏移 | 标志 |
第1片 | 1480字节 | 777 | 0(表示插入的数据开始于字节0) | Flag=1(表示后面还有) |
第2片 | 1480字节 | 777 | 185(表示插入的数据开始于字节1480.185*8 = 1480) | Flag=1(表示后面还有) |
第3片 | 1020字节 | 777 | 370(表示插入的数据开始于字节370*8=2960) | Flag=0(表示这是最后一片) |
注意:为坚持网络内核保持简单的原则,IPV4的设计者决定数据报的重新组装工作放到端系统中,而不是在网络路由器中。在目的地,数据报的有效载荷仅当能在IP能够完全重构为初始IP数据报是,才能床底给目的运输层,即如果一个或多个片没有到达目的地,则该不完整的数据报被丢弃且不会交给运输层。
DHCP(动态主机配置协议)
DHCP发现:一台新到的主机在UDP分组中向端口67发送该发现报文,但是该发给谁呢?在这种情况下,DHCP客户生成包含DHCP发现报文的IP数据报,使用广播目的地址,源地址0.0.0.0,将数据传递给链路层,然后将该帧广播到该子网连接的子网。
DHCP提供:DHCP服务器收到一个DHCP发现报文时,用DHCP提供报文向客户做出响应,包含推荐的IP地址、网络掩码、租用期等
DHCP请求:从一个或多个服务器提供中选择一个,并向选中的服务器提供一个DHCP请求报文进行响应。
DHCP ACK:服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数。
NAT(网络地址转换)
如果从广域网到达NAT路由器的所有数据都有相同的目的IP地址(特别是对NAT路由器广域网一侧的接口),那么该路由器怎样知道它应将某个分组转发给哪个内部主机呢?
答:使用NAT路由器上的一张NAT转换表,并且在表项中包含了端口号及其IP地址。
举例:
主机A(IP:10.0.1.1)请求WEB服务器B(IP:123.10.1.4),主机A为其指定了源端口号3345并将其数据报发送到LAN中,NAT路由器收到该数据报为该数据报生成一个新的源端口号5001,(IP地址+源端口号---》新的源端口号,同一个局域网不存在IP地址+源端口都相同的主机存在,满足一对一的映射关系),将源IP替代了广域网一侧接口的IP地址123.10.1.4,端口号5001,WEB服务器这时返回一个HTTP请求数据报,目的地址是路由器的IP地址,目的端口是5001,当报文到达NAT路由器时,路由器使用目的IP地址和目的端口号从NAT表中检索出主机A。(注意:在运输层中,端口号都是用来区分进程的,这里却用来区分主机,很多人对此反对..)
ICMP(因特网控制报文协议)
ICMP由定义,被主机和路由器用来彼此沟通网络层的信息,ICMP最典型的用途是差错报告,如:”目的网络不可达”,ICMP通常被认为是IP的一部分,但是从体系结构上讲它是位于IP之上的,因为ICMP报文是承载在IP分组中的。就是说,ICMP报文是作为IP有效载荷承载的,就像TCP与UDP报文段作为IP有效载荷被承载一样。类似的,当一台主机收到一个指明上层协议为ICMP的IP数据报时,它分解出该数据报的内容给ICMP,就像分解出一个数据报的内容给TCP或UDP一样。
Ping和Traceroute都是用ICMP报文来实现的。
IPV6
报文格式:
对比IPv4的变化
1.扩大的地址容量,由32bits增加到128bits
2.简化高效的40字节首部,IPV4是20字节
在IPV4中出现的几个字段在IPV6不复存在
1.分片/重组,如IPV6报文太大,路由器只需要丢掉数据报,并发回一个“分组太大”的ICMP报文
2.首部检验和,太耗时了
如何从IPV4迁移到IPV6?
1.双栈
2.建隧道
五、路由选择算法
复习Cisco的时候,再看