概述
- 通信是现代人类社会的基本需求,比如计算机网络(Computer Network)将世界上各种类型的计算机以及其他终端设备连接在了一起,让这些设备能够协同工作,能够相互通信。
- IP网络,也称为TCP/IP网络,接入网络的设备也已经不仅仅局限于计算机。所谓的IP网络,就是以TCP/IP协议簇为基础的通信网络。
- 通信实际上就是信息(Information)或数据(Data )的收发过程,因此IP网络的基本功能便是将数据从一个地方传输到另一个地方。
- 在IP网络中,数据遵循IP协议所定义的格式,设备对其进行相应的处理,使得它能够在网络中进行传输。所谓的数据可以简单地理解,是描述一段文字、一张图片、一个网页,或者一个文档等的一些信息。
数据通信过程简述
- 在数据通信模型中,通信双方所交互的实际数据被称为有效载荷(Payload )。
- 在IP网络中,A主机要将一份Payload发送给在同一个IP网络中的、位于另一个角落的B主机,但是A主机显然不可能将Payload直接“扔”给B主机,该Payload需要经过一定的处理,最终变成能够在诸如网线等介质上传递的信号。
- 为了确保Payload能够被IP网络中的网络设备顺利地从源转发到目的地,该Payload需要被“放置”在一个“信封”当中,并且在“信封”上标明该Payload的源地址及目的地址。这个“信封”就是IP头部,我们将这个包裹着Payload的“信封”称为IP报文(Packet)、IP数据包或者IP包。
- 在报文的IP头部中,包含着多个字段,其中“源IP地址”及“目的IP地址”字段便包含报文寻址的关键信息。源IP地址标识了报文的发送源,目的IP地址则标识了报文所要到达的目的地。
- 在IP网络中,IP地址用于标识一个设备或者设备的某个网络接口卡(Network Interface Card NIC )。
- 一个IP报文从源进入到IP网络后,网络中的设备(比如路由器、三层交换机及防火墙等)负责将其转发到目的地。
- 在报文的转发过程中,沿途的网络设备收到该报文后,会根据其所携带的目的IP地址来判断如何转发这个报文,最终将报文从恰当的接口发送出去,这个过程被称为路由(Routing。
路由
- 当一台路由器收到一个IP报文时,它会在自己的路由表(Routing Table)中执行路由查询,寻找匹配该报文的目的IP地址的路由条目(或者说路由表项):
- 如果找到匹配的路由条目,路由器便按照该条目所指示的出接口及下一跳IP地址转发该报文;
- 如果没有任何路由条目匹配该目的IP地址,则意味着路由器没有相关路由信息可用于指导报文转发,因此该报文将会被丢弃,上述行为就是路由。
- 路由是一种逐跳(Hop-By-Hop)的行为。数据从源被发出直至其到达目的地的过程中,沿途的每一台路由器都会执行独立的路由查询及报文转发动作,因此处于传输路径上的路由器都需要拥有到达目的网段的路由,否则该报文将在中途被丢弃。
- 数据通信往往是一个双向的过程,大多数的应用需要在通信双方之间相互发送数据,因此为了保证应用及业务的正常运行,网络工程师在建设网络时需充分考虑数据的双向可达性,也就是在往返方向考虑路由信息的完整性和准确性。
- 在下图所示的拓扑中,假设PCI及PC2使用R1-R2-R3-R4这条路径传输数据,若要求PC1发往PC2的数据能够正确到达PC2,则需确保R1, R2, R3及R4都拥有到达192.168.20.0/24的路由信息。同理,若要求PC2能够正常地向PC1发送数据并且沿着相同的路径传输数据,则R4, R3, R2及R1都需拥有到达192.168.10.0/24的路由信息。
示例
如下图所示的网络拓扑中:
- 当路由器R1收到一个IP报文时,路由器会解析出报文的IP头部中的目的IP地址,
- 然后在自己的路由表中查询该目的地址,它发现数据包的目的地址是192.168.20.1,而路由表中存在到达192.168.20.0/24的路由,因此R1根据路由条目所指示的出接口及下一跳IP地址将报文转发出去。
路由表
- 每一台具备路由功能的设备都会维护路由表,路由表相当于路由器的地图,基于这张地图,路由器才能够正确地转发IP报文。
- 路由表中装载着路由器通过各种途径获知的路由条目,每一个路由条目包含目的网络地址/网络掩码、路由协议(路由的来源)、出接口、下一跳IP地址、路由优先级及度量值等信息。
- 路由表是每台支持路由功能的设备进行数据转发的依据和基础,是一个非常重要的概念。
- 在拥有三层路由功能的设备上查看路由表的命令是display ip routing-table(HW)。
- 如下图所示,展示了一个路由表的示例,路由表中的每一行就是一个路由条目(或者路由表项)。每个路由条目都采用目的网络地址( Destination Network Address)及网络掩码(Netmask)进行标识。
路由表元素
(1)目的网络地址/网络掩码(Destination Network Address/Netmask):
- 路由表相当于路由器的地图,而每一条路由都指向网络中的某个目的网络(或者说目的网段)。
- 目的网络的网络地址(目的网络地址)及网络掩码(路由表中的“Destination/Mask”列)用于标识一条路由。
- 以上图所示的路由表为例,2.2.2.0/24就标识了一个目的网络,其中目的网络地址为2.2.2.0,掩码长度为24(或者说网络掩码为255.255.255.0 ),这就意味着路由器拥有到达2.2.2.0/24的路由信息。
- 掩码长度指的是网络掩码中连续的二进制“1”的个数,比如某条路由的掩码长度为30,那么该路由的网络掩码是255.255.255.252,两者表达的意思是一致的,因此192.168.0.0与255.255.255.252等同于192.168.0.0/30。
(2)路由协议(Protocol):
- 表示该路由的协议类型,或者该路由是通过什么途径学习到的。路由表中的“Proto”列显示了该信息。
- 比如2.2.2.0/24这条路由,"Proto”列显示的是Static,这意味着这条路由是通过手工的方式配置的静态路由。
- 比如22.22.22.22/32这条路由,这是一条主机路由(网络掩码为255.255.255.255 ),而这条路由的“Proto"列显示的是OSPF,则表明该条路由是通过OSPF这个路由协议学习到的。
- "Proto”列如果显示Direct则表明该条路由为直连路由,也就是这条路由所指向的网段是设备的直连接口所在的网段。
(3)优先级(Preference):
- 路由表中路由条目的获取来源有多种,每种类型的路由对应不同的优先级,路由优先级的值越小则该路由的优先级越高。路由表中“Pre”列显示了该条路由的优先级。
- 当一台路由器同时从多种不同的来源学习到去往同一个目的网段的路由时,它将选择优先级值最小的那条路由。
- 假如路由器A配置了到达1.1.1.0/ 24的静态路由,该条静态路由的下一跳为B,同时A又运行了RIP,并且通过RIP也发现了到达1.1.1.0/24的路由,而该条RIP路由的下一跳为C,此时A分别通过静态路由及RIP路由协议获知了到达同一个目的地—1.1.1.0/24网段的路由,A会比较静态路由与RIP路由的优先级,由于缺省时静态路由的优先级为60,而RIP路由的优先级为100,显然静态路由的优先级值更小,因此最终到达1.1.1.0/24的静态路由被加载到路由表中(静态路由在路由选择中胜出),当A收到去往该网段的数据包时,它将数据包转发给下一跳B。
(4)开销(Cost):
- Cost指示了本路由器到达目的网段的代价值,在许多场合它也被称为度量值(Metric ),度量值的大小会影响到路由的优选。
- 路由表中"COSt”列显示的就是该条路由的度量值。
- 直连路由及静态路由缺省的度量值为0,此外每一种动态路由协议都定义了其路由的度量值计算方法,不同的路由协议,对于路由度
量值的定义和计算均有所不同。
(5)下一跳(Next Hop):
- 该项描述的是路由器转发到达目的网段的数据包所使用的下一跳地址。
- 在上图显示的路由表中,2.2.2.0/24路由的‘`NextHop”列显示10.1.12.2,这意味着如果该路由器收到一个数据包,经过路由查询后发现数据包的目的地址匹配2.2.2.0/24这条路由,则该路由器会将数据包转发给10.1.12.2这个下一跳。
(6)出接口(Interface ):
- 指示的是数据包被路由后离开本路由器的接口。
- 以2.2.2.0/24路由举例,这条路由的“Interface”列显示的是GE0/0/0,这意味着如果该路由器收到一个数据包且经过路由查询后发现数据包的目的地址匹配该路由,则该路由器会将数据包转发给10.1.12.2这个下一跳地址,并从GE0/0/0接口送出。