计算机网络(4)-----网络层

思维导图

    这篇文章主要讨论了网络层的实现原理.网络层的核心功能有两点,一是如何运输报文,而是如何找到目的主机.所以本章的主要内容首先介绍了网络层的核心硬件-路由器.然后介绍网络层会使用到的协议.网络层协议主要有三种,也是其基本构成,IP协议用于运输报文,因特网控制报文协议主要用来沟通主机和路由器的状态信息,最后是路由选择协议,用于为找到目的主机所在地址.

                  

一.引言

这一小节讨论了网络层实现的大致原理.

1.1主要功能

    网络层的主要功能是路由选择和转发

    路由选择是当分组从发送发流向接收方时,网络层必须决定这些分组所采用的的路径.而实现路由选择的主要方法则是维护一张转发表,当输入目的地址时,根据转发表则可以知道下一个路由器的选择.转发表的构建和维护则需要专门的路由选择算法,这会在后文中讲到.此外,分组交换机若使用链路层的信息判断如何进行路由称为链路层交换机,基于网络层的值做转发决定的则称为路由器.

    转发是当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路的动作.

网络层主要有三个部分,IP协议,ICMP协议,路由选择协议

                       

1.2网络服务模型

    网络服务模型定义了分组在发送和就收端系统之间的端到端的运输特性.现有的网络服务模型主要有两种一种是虚电路,一种是数据报网络.

1.2.1 虚电路

虚电路主要用于ATM,帧中继,他可以保证实现定时,有序,恒定速率的功能.

虚电路的组成如下:

  • 源和目的主机间的路径
  • VC号,沿着该路径的每段链路的一个号码,每个路由器都有一个VC号
  • 沿着该路径中每一台路由器的转发表,其中有入VC号,和出VC号,用于路由转发路径.

    虚电路的实现原理是在需要建立虚电路的连接时,使用的路径就已经确认了.即这条连接会使用到那些路由器及物理链路.然后每当需要建立一条虚电路连接时,就会在路由器的转发表中新添加转发表项,它以VC号为标志,指明将数据从哪里传输进来,又传输到哪一个路由器去,当虚电路建立以后,数据便可以通过此连接传输,当虚电路连接需要拆除的时候,就将转发表中此链接的表项删除.

                    

1.2.2数据报网络

    数据报网络即是我们大家都在使用的网络服务模型了.,每当一个端系统需要发送分组时,它就为该分组加上目的端系统的地址,然后将其推进网络.

    数据报网络的实现原理是每台路由器中都维护了一个转发表,用于将查找适当的输出链路接口.那么如何查找呢,路由器每次都会把目的地址的前缀和转发表进行匹配.前缀可能是IP地址的一部分,比如常用的IPv4地址有32位,前缀可能只匹配21位或者24位.

                    

 

二.路由器的工作原理

作为网络层实现的核心硬件,我们来看看路由器是如何实现路由选择和转发功能的.

2.1组成

首先是路由器的组成:下图是路由器的整体组成结构:

             

 

  • 输入端口:他会将物理层信息处理为链路层信息,然后将链路层信息处理为我们所需要的网络层信息.

        

  • 交换结构:把路由器的输入接口和输出接口相连接.这是路由器的核心部位,交换结构实现了将分组从输入接口发送到输入接口的功能,交换结构有多种方式完成.内存式的处理方式是将输入分组放入内存中,然后,由路由器的路由选择处理器将这个分组赋值到输出端口中.总线式则会在输入端口中为每个分组分配一个标签,然后将此分组发送给所有的输出端口,但只有目的端口会保存此分组,其余的端口会抛弃此分组,以上两种处理方式都只能同时处理一个分组,而纵横式可以同时处理多个分组的转发,在转发一个分组是,路由选择处理器会决定每个节点是开启还是关闭,一次将分组正确的转发到目的端口上且同时可以处理两个及以上的分组,只要这两个分组不使用同一条线路即可.

     

输出端口:功能同输入端口想反,他会将报文处理为链路层报文,在处理为物理层报文.

          

路由选择处理器:由它执行路由选择协议,并维护转发表的信息.它也是就上本书中所说的处理器中的一种了.

2.2何处出现排队

    在上一篇文章中已经说到,路由器在接收到多组信息是会将分组放在缓存中.也就是说,分组会在输入端排队.这是由于路由器不能同时处理所有达到的分组所导致的.再细致一点,可能是因为两个分组需要被转发到同一个输出端口时发生的端口竞争阻塞.也有可能是因为交换结构此时只能处理一个分组而导致的线路前部阻塞(HOL).

           

    当然,在输出端也可能会出现阻塞,这是因为输出端口一次只能处理一个报文,其余到达输出端口的分组就只能等待了.而决定处理那个分组也是有方法的,一种是先来先服务,即谁先来,就先处理谁,一种是加权公平排队,即对不同的分组依照某种规则加权,加权值高的先处理.

当输出端口的缓存不足是,就必须要丢弃某些分组,这称之为主动队列管理,随机早期检测AQM就是其中之一,在队列长度小于阈值min时会接收所有的分组,在高于阈值max时,会丢弃分组,在他们之间是则会依据某种概率选择丢弃还是接收分组

三. IP协议

3.1 IPv4

    IPv4协议是目前因特网所主要使用的网络层协议,它的主要功能是决定每个端系统的IP地址是如何编址的.在这一小节中,我们先讨论IPv4的报文结构,然后是因为下层协议不能传输过大的数据而导致的分片操作,最后讨论IPv4协议是如何为每一个系统编址的.

3.1.1报文结构

下图是IPv4协议的报文结构

  • 版本号:决定此报文是IPv4的报文还是IPv6的报文,IPv6协议在后文讨论
  • 首部长度:因为IPv4协议可能包含一些数量可变的选项部分,所以使用首部长度确定数据部分从哪里开始
  • 服务类型:区别需要不同服务的IPv4报文,比如低时延,高吞吐量等等
  • 数据报长度:IP数据报的总长度,首部+数据.
  • 标识,标志,片偏移:这三个字段和分片有关,在下一部分中介绍
  • 寿命:用于确保数据报不会永远在网络中循环,数据报没传输一次,寿命都会建议,当等于0是,不在传输.
  • 上层协议:在数据报到达目的主机是指定需要哪个运输层协议接收
  • 首部校验和:用于检测数据报中的比特差错.
  • 源和目的IP地址:就是源主机和目的主机的IP地址
  • 选项:允许IP的首部被扩展,很少使用,但由于此字段的长度可变,所以比较影响性能.
  • 数据:不仅保存在运输层的报文,也会储存因特网控制报文协议ICMP等其他内容

3.2数据报分片

由于不是所有的链路层协议都能承受相同长度的网络层分组,所以需要对网络层数据报进行分片操作.

    IP数据报中的数据会被分片为两个或者更多个较小的IP数据报,用单独的两路城帧封装这小较小的IP数据报,然后向输出链路上发送这些帧,这些较小的数据报也被称为片.

    为了让目的主机执行重新组装的任务,就需要在IPv4数据报中加入标识,标志,和片偏移字段.在网络层发送数据报时,每个数据报都有一个标识,其后的数据报的标识号+1,也就是说,目的主机通过源IP地址和标识号来确认这些片是否属于同一个数据报.由于,IP是不可靠的,一些片可能永远也到不了目的主机,所以为了让主机相信他已经接受到了所有的片,最后一个片的标志比特为设置为0,其余的标志比特都被设置为1,同时使用片偏移字段确定这个片应该放在初始IP数据报的那个位置.

                 

3.3编址

这个部分介绍如何确认一个主机的IP地址.

3.1.1 分配

    首先,IP地址其实不是和某一个主机绑定的,而是和主机与物理链路的边界-接口绑定的.IP协议要求每台主机和路由器的接口都拥有自己的IP地址.

    因特网的地址分配策略被称为无类别域间自由选择.它会将一个32位的IP地址分为两部分.举一个例子a.b.c.d/x,在这个IP地址中国,x表示32位地址的前x位,也被称为前缀.一个组织通常会被分配一块连续的地址,即这些地址都拥有相同的前缀.在后文中讲到路由选择协议是,就是前缀和转发表的表项相匹配以确定下一跳路由器的.

    假如有一个IP地址223.0.0.1/24,这是一个路由器接口的IP,前缀为24位,即和路由器此接口相连的主机的端口的IP地址的前24位相同,后八位不同,这些主机的接口同这个路由器结构也就构成了一个子网,而/24这种标记方法被称为子网掩码.当然,并不是只有主机和路由器所构成的网络岛被称之为子网,路由器和路由器所构成的网络岛也可以被称为子网,如图

                

3.1.2 获取

路由器或者主机是如何获取IP地址的呢?

  • 上级地址

当需要获取一块连续的IP地址时,即可能是为了某一个组织获取一块IP地址时,可能就需要同当地的ISP公司联系,让他为你分配一块IP地址如200.23.16.0/20.这样,就有后12位的IP地址是可变得了.

  • 主机地址

    显然,当一个主机需要获取IP地址是不可能像ISP公司请求,而是使用动态主机配置协议DHCP来为主机配置IP地址.每当一台主句需要上网是,就向服务器请求一个IP地址,所以,同一主机不同的两次请求可能会别分配不同的IP地址,当然,管理员也可以特别配置,使这台主机每次都获取同一IP地址.其获取IP地址的过程如下

                  

  • 网络地址转换NAT

    有这样一种情况,我们只有一个IP地址,但是却有许多台设备需要上网,而每台设备又都需要一个IP地址,怎么办?解决办法则是使用网络地址转换NAT.它使用一个网络地址转换路由器,其IP地址就是我们唯一拥有的IP地址,然后,为每个与此路由器连接的主机分配一个专用地址的地域,例如10.0.0.0/24.这些连接了此NAT路由器的主机间可以直接进行通讯.当主机需要同外部网络通讯时,会使用一张NAT转换表,它会将外部网络的IP地址同内部的专用地址的地域进行转换,以进行通讯.如下图:

            

  • UPnP协议

    NAT导致了一个问题,即P2P应用不可用了,因为P2P应用需要两台主机之间直接相连,而NAT不能实现这点,由此,UPnP协议可以绕过这一点,它允许主机发现并配置临近NAT.

3.4 IPv6协议

    由于IPv4协议不够完美,特别是IP地址太少,32位比特的IP地址即将用完,所以就有了IPv6协议,他将扩展了IP地址的长度,以后很长一段时间内都不需要位没有IP地址担心了

3.4.1 IPv6报文结构

                 

  • 版本:同IPv4的版本
  • 流量类型:同IPv4的服务类型
  • 流标签:用于给特殊的流加上标签
  • 有效载荷长度:在定长的40字节的首部后的数据的长度
  • 下一个首部:同IPv4的上层协议
  • 跳限制:同IPv4的寿命
  • 源地址和目的地址:不同于IPv4,其长度为扩展为128位
  • 数据:运输层的分组

通过报文格式可以看出IPv6和IPv4有几点不同

  1. IPv6没有分片,因为在IPv6中,如果数据报太大,则会丢弃此报文并发送一个分组太大的ICMP差错报文.
  2. IPv6没有选项,正是由于删除了这一字段,所以才是IPv6报文的首部变为定长的40字节
  3. 更长的IP地址,32位的IP地址即将被用完,128位的IP地址则可以让我们再用很久了

3.4.2 从IPv4到IPv6的迁移

由于目前所使用的主要的IP协议是IPv4,所以当需要使用IPv6协议时需要做一些特殊的处理,一般的,引入IPv6节点的最直接的方式是双栈,即此路由器/主机节点可以发送IPv4/IPv6两种报文.而在双栈中,只有两者都是IPv6时才可以发送IPv6报文,否则只能发送IPv4报文,另外,当两个IPv6节点之间有IPv4节点是,我们可以使用建隧道的方法处理此问题,即把之间的IPv4节点抽象为一个隧道,发送的IPv6报文被IPv4节点转发时其IPv6报文被储存在IPv4的数据中,在通过隧道后再进行处理.

             

    

3.5因特网控制报文协议ICMP

    IPCM协议其实适合IP协议平级的协议,这两者同路由选择协议共同组成了网络层,之所以将其放在IP协议这一节中是因为ICMP报文被储存在IP报文之中.

ICMP协议的主要功能是被主机和路由器用来沟通彼此网络层之间的信息,如下:

                 

 

四.路由选择协议

    在这一小节中,我们想描述路由选择协议常用算法的原理,然后,在分别讨论单播,广播,多播所使用的路由选择算法,当然,只做了最简单的功能性描述.

4.1原理

    路由选择协议的功能是确定从发送方到接收方所通过的路由器网络的最好路径.

    路由选择协议所使用的算法大概可以分为两种类型,即全局式路由选择算法分散式路由选择算法.全局式路由选择算法是中心式的,即通过维护一个中心的信息来实现选择最好的路径,而分散式路由选择算法则是分布式的,只根据此路由器的邻居的信息来找到最好的路径

4.1.1链路状态路由选择算法

    链路状态路由选择算法LS是全局式路由选择算法的一种,它通过让每个节点向网络中所有其他节点广播链路状态分组来完成.其中每个两路状态分组包含它所连接的链路的状态和特征.

              

    其原理是:因为每一个节点都有其他节点的链路状态的信息,它通过每一次迭代计算出从源节点到目的节点v的最低费用的路径,维护到一个集合N中,最后,当迭代完以后,就得了最优的路径.

4.1.2距离向量算法

    距离向量算法DV是分散式路由选择算法的一种.它向他的临邻居通知其受到的链路状态信息的变化,从而找到最好的路径.

                  

    其原理是维护一个表,其中记录了从一节点到另一节点的费用信息,当某一节点收到某个节点传过来的某条链路的费用发生变化时,变将此信息发送给他所有的邻居,此路由器及其邻居路由器则更新此表中的信息.如下图:

                     

    因为在更新此表时,若某一条链路的费用增加,当次信息通知一个路由器时,由于以前的信息所花费的费用少导致算法不会更新此信息,但实际上这条路径已经不是最优路径了,所以有了毒性逆转这一技术,其思想是如果z通过y路由选择到达目的地,x,则z将通告yz到x举例无限大.

              

4.2单播路由选择算法

这一节中介绍了单播所使用的路由选择算法及其对应的协议

    首先,由于世界上的路由器如此之多,所以直接使用DV或者LS是不现实的,况且还有某一组织需要管理一组路由器的需求,所以产生了自治系统AS,每个自治系统AS由一组通常处在相同管理控制下的路由器组成.一个AS中的所有路由器运行相同的路由选择算法.

    所以现在需要两种算法,一种是AS内部使用的算法,一种是AS间使用的算法

4.2.1 自治系统内部路由选择协议

在一个自治系统内部运行的路由选择协议被称为自治系统内部路由选择协议.主要有两种流行的协议

  • 路由选择信息协议RIP

    RIP的运行原理很类似与上文介绍的理想化的DV算法,常用语下层ISP和企业网中,它通过大约每30秒(如果一台路由器一旦超过180秒没有从邻居收到报文,则认为该邻居是不可达的)一次的RIP通告报文的互相交互以维护路由选择表.其中记录了源主机到目的主机所需要的跳数和下一跳路由器,如下图:

               

         

  • 开放最短路优先协议OSPF

OSPF也是自治系统内部路由选择协议的一种,常用语上层ISP中,不同于RIP协议的是,它通过一台路由器构建了一副关于整个自治系统的完整的拓扑图,通过管理员配置各条链路的费用以找到最优路径

4.2.2自治系统间路由选择协议

    加入现在有多个AS需要通讯,那么他们就必须使用自治系统间路由选择协议以找到最优路径,负责与其他AS连接的路由器称为网关路由器,而边界网关协议BGP是自治系统间路由选择协议的一种.

  • 边界网关协议BGP

在AS之间的会话被称为eBGP会话,在AS内的会话被称为iBGP会话.

          

    它的实现原理是每个AS都有一个唯一的标识号被称为ASN,当AS间互相通讯时,目的AS会接收到源AS的ASN及其可以通讯的AS  的ASN,此属性别称为AS-PATH,NEXT-HOP属性正确的配置转发表.

    同时,网关路由器通过使用输入策略来决定是否过滤某些AS或者设置某种属性,比如偏好值可以决定优先选取那个AS进行路由.

4.3广播路由选择算法

    上节中的单播是点对点的路由选择,在这一节中则是点对多的路由选择算法.即某个主机需要报信息传输给所有的其他主机所使用的算法协议

  • 洪泛广播

无控制洪泛广播的实现方法是把报文转发给他的所有邻居,而邻居也转发给邻居的邻居.但是这样会导致报文被无休止的循环转发,改良的受控洪泛则有两种以解决这个问题.1,序号控制洪泛,即每一个分组都有一个广播序号,每个节点收到广播是就检查是否已经转发过这个分组,如果没有则转发然后几记录,如果已经转发过了,就丢弃此分组.第二种是反向路径转发RPF,它的基本思想是仅当接收的广播分组到达的链路正好是位于他自己的返回其源的最短单播路径上才向所有的邻居转发这一分组.如下图:

                                                   

  • 生成树广播

    生成树广播的原理维护一张,在这张图中如果广播某一分组,每个路由器将只接受到一次分组.生成树是逐步构造的,首先会选择一个中心节点,每当需要向此树加入一个节点是,就找到加入节点到中心节点的最优路径,然后将此路径上的所有路由器加入此树.

                

4.4多播路由选择算法

    现在有一种需求是将某一分组转发给一组主机,这一组主机可能比较集中,也可能比较分散,这就需要使用多播路由选择算法和因特网组管理协议了.

我们使用间接地址来标志一组多播主机的IP地址,也即是说,当需要向这一组主机转发报文时,直接将报文转发给这个间接地址,然后简介地址的路由器会将报文转发给这一组多播主机

                          

  • 因特网组管理协议IGMP

IGMP协议可以让主机和路由器通过发送报文来确定此主机是否还在这个组中

          

  • 多播路由选择算法

    多播路由选择算法的目标是发现一颗链路的数,这些链路连接了所有属于该多播组的相连主机的路由器,在实践中,有两种方法来确定多播路由选择树

  1. 使用一颗共享数的多播路由选择:通过类似于广播情况下发送加入报文以构建一颗共享数
  2. 使用一颗基于源的树的多播路由选择:他为多播组中的每个源构建一颗多播路由选择树,在实践中使用RPF算法来构造转一颗多播路由发树.

 

注:本篇文章由《计算机网络:自顶向下方法》第四章:运输层 网络层 总结而来,由于本人非计算机专业出身,许多知识实在是理解不能,总结有相当多的遗漏,乃是我看不懂所致,更别说其中内容肯定有大量的理解错误,万望大家提出批评,我好改正。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值