计算机网络自顶向下第四章:网络层

网络层

  • 一、 网络层概述
    • a) 转发和路由选择
    • b) 网络服务模型
  • 二、虚电路和数据报网络
    • a) 虚电路网络
    • b) 数据报网络
    • c) 数据报网络与虚电路网络对比
  • 三、路由器工作原理
    • a) 输入端口:
    • b) 交换结构
    • c) 输出端口
    • d) 何处出现排队
    • e) 路由选择控制平面
  • 四、 网际协议:因特网中的转发和编址
    • a) IP数据报(分组)格式:
    • b) IPv4编址
      • 有类编址
      • 子网划分
      • 无类别域间路由选择
    • c) 主机如何获取IP地址
      • 获取一块地址
      • 获取主机地址:动态主机配置协议
      • 网络地址转换(NAT)
    • d) 因特网控制报文协议(ICMP)
    • e) IPv6
    • f) 涉足IP安全性
  • 五、路由选择算法
    • a) 链路状态路由选择算法(LS)
    • b) 距离向量路由选择算法(DV)
    • c) 层次路由选择
  • 六、 因特网中的路由选择
    • a) 因特网中自治系统内部的路由选择:RIP(路由信息协议)
    • b) 因特网中自治系统内部的路由选择:OSPF(开放最短路径协议)

一、 网络层概述

路由器的主要作用便是将数据报从入链路转发到出链路

a) 转发和路由选择

  1. 网络层的作用:将分组从一台发送主机移动到一台接收主机
  2. 转发:当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路
  3. 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。计算这些路径的算法被称为路由选择算法
  4. 辨析:转发是指将分组从一个输入链路接口转移到适当地输出链路接口的路由器本地动作;路由选择是指网络范围的过程以决定从源到目的地所采取的端到端路径。
  5. 每台路由器具有一张转发表。路由器通过检查到达分组首部字段的值来转发分组,然后使用该值在该路由器的转发表中索引查询。存储在转发表项中的该首部的值指出了该分组将被转发的路由器的输出链路接口。分组首部中的该值可能是该分组的目的地址或该分组所属连接的指示,这取决于网络层协议
  6. 分组交换机是指一台通用分组交换设备,它根据分组首部字段中的值,从输入链路接口到输出链路接口转移分组
  7. 某些分组交换机称为链路层交换机,基于链路层字段中的值做转发决定。其他分组交换机称为路由器,基于网络层字段中的值做转发决定
  8. 连接建立:某些网络层体系结构如ATM、帧中继、MPLS,要求从源到目的地沿着所选择的路径彼此握手,以便在给定源到目的地连接中的网络层数据分组能够开始流动之前建立起状态。在网络层,该过程被称为连接建立 。
  9. 网络层连接指的是两个主机之间的连接(路径上的路由器等网络设备参与其中);传输层连接指的是两个应用进程之间的连接(对中间网络设备透明)

b) 网络服务模型

网络服务模型定义了分组在发送与接收端系统之间的端到端运输特性
i. 考虑网络层能够提供的某些可能的服务。在发送主机中,当运输层向网络层传递一个分组时,能由网络层提供的特定服务包括:

  1. 确保交付
  2. 具有时延上界的确保交付
  3. 有序分组交付
  4. 确保最小带宽
  5. 确保最大时延抖动
  6. 安全性服务

ii. 因特网的网络层提供了单一的服务,称为尽力而为服务。使用该服务,分组间的定时是不能确保被保证的,分组接收的顺序也不能保证与发送的顺序一致,传送的分组也不能保证最终交付。
iii. 两个最重要的ATM服务模型是恒定比特率和可用比特率服务:

  1. 恒定比特率(CBR)ATM网络服务:这是第一个被标准化的ATM服务模型。其目标,就是使网络连接看起来就像在发送与接收主机之间存在一条专用的、固定带宽的传输链路,以使用性质相同的虚拟管道来提供分组(ATM术语称为信元)流。使用CBR服务,ATM信元流中一个信元的端到端时延、信元端到端时延中的可变性(即时延抖动)及丢失或推迟交付的信元的比率都确保在特定值一下。
  2. 可用比特率(ABR)ATM网络服务:与因特网服务模型一样,ABR服务下的信元也许会丢失;但与因特网不同的是,信元不能被重排序(虽然它们可能会丢失),对于使用ABR服务的连接来说,最小信元传输速率(MCR)是可以得到保证的。如果在给定时间内网络有足够的空闲资源,发送方也可以用比MCR更高的速率成功地发送数据。另外,ATM ABR服务能够为发送方提供反馈信息(利用一个拥塞通知比特,或一个明确的速率发送),以便控制发送方在MCR和一个允许的峰值信元速率之间调整其速率。

iv. 其实,网络层服务模型可以分为两大类:

  1. 无连接服务:不事先为系列分组的传输确定传输路径;每个分组独立确定传输路径;不同分组可能传输路径不同;多用于数据报网络
  2. 连接服务:首先为系列分组的传输确定从源到目的经过的路径(建立连接);然后沿该路径(连接)传输系列分组;系列分组传输路径相同;传输结束后拆除连接;多用于虚电路网络

二、虚电路和数据报网络

网络层连接和无连接服务与运输层面向连接和无连接服务有类似之处,但也存在不同:

  1. 在网络层中,这些服务是由网络层向运输层提供的主机到主机的服务。在运输层中,这些服务则是运输层向应用层提供的进程到进程的服务
  2. 在至今为止的所有主要的计算机网络体系结构中,网络层并不同时提供主机到主机的连接服务或者主机到主机的无连接服务。在网络层提供连接服务的计算机网络称为虚电路网络在网络层提供无连接服务的计算机网络称为数据报网络
  3. 在运输层实现面向连接的服务与网络层实现连接服务是根本不同的。运输层面向连接服务是在位于网络边缘的端系统中实现的;网络层连接服务除了在端系统中,也在位于网络核心的路由器中实现。

a) 虚电路网络

仅在网络层提供连接服务的计算机网络称为虚电路网络
i. 一条虚电路的组成如下:

  1. 源和目的主机之间的路径(即一系列链路和路由器)
  2. VC号,沿着该路径的每段链路的一个号码
  3. 沿着该路径的每台路由器中的转发表表项
    ii. 一个分组沿着其路由在每条链路上不简单地保持相同的VC号的原因:
  4. 逐链路代替该号码减少了在分组首部中VC字段的长度
  5. 通过允许沿着该虚电路路径每条链路有一个不同的VC号,大大简化了虚电路的建立。特别是,在具有多个VC号的路径,其上的每条链路能够独立于沿着该路径的其他链路所选的号码选择一个VC号。
    iii. 在虚电路网络中,该网络的路由器必须为进行中的连接维持连接状态信息。每当跨越一台路由器创建一个新连接,必须在该路由器的转发表中增加一个新的连接项;每当释放一个连接,必须从该表中删除该项。值得注意的是,即使没有VC号转换,仍有必要维持连接状态信息。该信息将VC号与输出接口号联系起来。

iv. 虚电路中的3个明显不同的阶段:

  1. 虚电路建立:在建立阶段,发送运输层与网络层联系,指定接收方地址,等待网络建立虚电路。网络层决定发送方与接收方之间的路径,即该虚电路的所有分组要通过的一系列链路与路由器。网络层也为沿着该路径的每条链路决定一个VC号。最后,网络层在沿着路径的每台路由器的转发表中增加一个表项。在虚电路建立期间,网络层还可以预留该虚电路路径上的资源
  2. 数据传送:一旦创建了虚电路,分组就可以开始沿该虚电路流动了。
  3. 虚电路拆除:当发送方(或接收方)通知网络层它希望终止该虚电路时,就启动这个阶段。然后网络层通常将通知网络另一侧的端系统结束呼叫,并更新路径上每台分组路由器中的转发表以表明该虚电路已经不存在了。

v. 运输层的连接建立仅涉及两个端系统,在连接建立期间,两个端系统独自决定运输层连接的参数;而对于一个虚电路网络层,沿两个端系统之间路径上的路由器都要参与虚电路的建立,且每台路由器都完全知道经过它的所有虚电路。
vi. 端系统向网络发送指示虚电路启动与终止的报文,以及路由器之间传递的用于建立虚电路(即修改路由器表中的连接状态)的报文,它们被称为信令报文,用来交换这些报文的协议常称为信令协议

b) 数据报网络

仅在网络层提供无连接服务的计算机网络称为数据报网络

  1. 在数据报网络中,每当一个端系统要发送分组,它就为该分组加上目的端系统的地址,然后将分组推进网络中。
  2. 当分组从源到目的地传输,它通过一系列路由器传递。这些路由器中的每台都使用分组的目的地址来转发分组。特别是,每台路由器有一个将目的地址映射到链路接口的转发表;当分组到达路由器时,路由器使用该分组的目的地址在转发表中查找适当的输出链路接口,然后路由器有意将分组向该输出链路接口转发。
  3. 通过聚合转发表入口可以减少路由器的转发表中的表项,使用这种风格的转发表,路由器用分组的目的地址的前缀与该表中的表项进行匹配;如果存在一个匹配项,则路由器向该匹配项相联系的链路转发分组。当有多个匹配时,该路由器使用最长前缀匹配规则——即在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组。

c) 数据报网络与虚电路网络对比

  1. Internet(数据报网络)
    i. 计算机之间的数据交换(“弹性”服务,没有严格事件需求)
    ii. 链路类型众多:特点、性能各异;统一服务困难
    iii. “智能”端系统(计算机):可以自适应、性能控制、差错恢复
    iv. 简化网络,复杂“边缘”
  2. ATM(VC网络)
    i. 电话网演化而来
    ii. 核心业务是实时对话:有严格的时间、可靠性需求;需要有保障的服务
    iii. “哑”端系统(非智能):电话机、传真机
    iv. 简化“边缘”,复杂网络

三、路由器工作原理

一个通用路由器体系结构的组成:输入端口、交换结构、输出端口、路由选择处理器

a) 输入端口:

  1. 输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层
  2. 在输入端口,路由器使用转发表来查找输出端口,使得到达的分组将能经过交换结构转发到该输出端口。转发表是由路由选择处理器计算和更新的,但转发表的一份影子副本通常会被存放在每个输入端口。转发表从路由选择处理器经过独立总线(例如一个PCI总线)复制到线路卡。有了影子副本,转发决策能在每个输入端口本地做出,无须调用中央路由选择处理器,因此避免了集中式处理的瓶颈
  3. 三态内容可寻址存储器(TCAM) 也经常被用于查找,使用一个TCAM,一个32比特IP地址被放入内存,TCAM在基本常数时间内返回对该地址的转发表项的内容。
  4. 除了查找之外,输出端口处的处理还有:
    i. 必须出现物理层和链路层处理
    ii. 必须检查分组的版本号、检验和以及寿命字段并重写后两个字段
    iii. 必须更新用于网络管理的计数器

b) 交换结构

交换结构位于一台路由器的核心部位,有如下三种交换技术:

  1. 经内存交换:一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发出信号。于是,该分组从输入端口处被复制到处理器内存中。路由选择处理器则从其首部中提取目的地址,在转发表中找到适当的输出端口,并将该分组复制到输出端口的缓存中。这种情况下,不能同时转发两个分组(即使它们有不同的端口号,因为经过共享系统总线一次仅能执行一个内存读/写)。
    许多现代路由器通过内存进行交换,然而,与早期路由器的一个主要差别是,目的地址的查找和将分组存储(交换)进适当的内存存储位置是由输入线路卡来处理的。

  2. 经总线交换:输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。工作方式如下;
    让输入端口为分组预先计划一个交换机内部标签(首部),指示本地输出端口,使分组在总线上传送和传输到输出端口。然后标签在输出端口被去除,因为其仅用于交换机内部来跨越总线。如果多个分组同时到达路由器,每个位于不同的输出端口,除了一个分组外所有其他分组必须等待,因为一次只有一个分组能够跨越总线。因为每个分组必须跨过单一总线,故路由器的交换带宽受总线速率的限制。

  3. 经互联网络交换:与前两种交换方法不同,纵横式网络能够并行转发多个分组。然而如果来自两个不同输入端口的两个分组其目的地为相同的输出端口,则一个分组必须在输入端等待,因为在某个时刻经给定总线仅有一个分组能够发送。

c) 输出端口

  1. 输出端口处理取出存放在输出端口内存中的分组并将其发送到输出链路上。这包括选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能

d) 何处出现排队

e) 路由选择控制平面

四、 网际协议:因特网中的转发和编址

因特网的网络层有三个主要组件。第一个组件是IP协议,它是本节的主题。第二个主要组件是路由选择部分,它决定了数据报从源到目的地所流经的路径。最后一个组件是报告数据报中的差错和对某些网络层信息请求进行响应的设施。

a) IP数据报(分组)格式:

计算机网络自顶向下第四章:网络层_第1张图片
i. IPv4数据报中的关键字段如下:

  1. 版本号:这4个比特规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分。不同的IP版本使用不同的数据报格式。IPv4的版本号字段为4,IPv6的版本号字段为6。
  2. 首部长度:IP分组首部长度,以4字节为单位
  3. 服务类型:指示期望获得哪种类型的服务,1998年这个字段改名为区分服务,只有在网络提供区分服务时使用,一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H
  4. 数据报长度:这是IP数据报的总长度(首部加上数据),以字节
  5. 标识、标志、片偏移:这三个字段与所谓的IP分片有关。新版本的IP(即IPv6)不允许在路由器上对分组分片。
  6. 寿命:寿命字段(TTL)字段用来确保数据报不会永远(由于长时间的路由选择环路)在网络中循环。每当数据报由一台路由器处理时,该字段的值减1。若TTL字段减为0,则该数据报必须丢弃
  7. 协议:该字段仅在一个IP数据报到达其最终目的地才会有用。该字段指示了IP数据报的数据部分应交给哪个特定的运输层协议。例如,值为6表明数据部分要交给TCP,而值为17表明数据要交给UDP。协议号是将网络层与运输层绑定到一起的粘合剂,而端口号是将运输层和应用层绑定到一起的粘合剂。
  8. 首部检验和:首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。
  9. 源和目的IP地址:当某源生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址字段中插入其最终目的地的地址。通常源主机通过DNS查找来决定目的地址。
  10. 选项:选项字段允许IP首部被扩展。首部选项意味着很少使用,因此决定对每个数据报首部不包括选项字段中的信息,这样能够节约开销。
  11. 数据(有效载荷):这是数据报存在的首要理由!在大多数情况下,IP数据报中的数据字段包含要交付给目的地的运输层报文段(TCP或UDP)。然而,该数据字段也可承载其他类型的数据,如ICMP报文。

ii. IP数据报分片

  1. 并不是所有链路层协议都能城在相同长度的网络层分组
  2. 一个链路层帧能承载的最大数据量叫做最大传送单元(MTU)。
  3. 如何将过大的IP分组压缩进链路层帧的有效载荷字段呢?解决这一问题的方法是将IP数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的IP数据报;然后向输出链路上发送这些帧。每个这些较小的数据报都称为片
  4. 片在其到达目的地运输层以前需要重新组装
  5. 为了让目的主机执行这些重新组装任务,IPv4的设计者将标识、标志和片偏移字段放在IP数据报首部中。当生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时再贴上标识号。当目的地从同一发送主机收到一系列数据报时,它能够检查数据报的标识号以确定哪些数据报实际上是同一较大数据报的片。由于IP是一种不可靠的服务,一个或多个片可能永远到达不了目的地。因为这种原因,为了让目的主机绝对地相信它已收到了初始数据报的最后一个片,最后一个片的标志比特被设为0,而所有其他片的标志比特被设为1。另外,为了让目的主机确定是否丢失了一个片(且能按正确的顺序重新组装片),使用便宜字段指定该片应放在初始IP数据报的哪个位置。
  6. 在目的地,数据报的有效载荷仅当在IP层以完全重构为初始IP数据报时,才会被传递给目的地运输层。
  7. 分片也是有开销的。首先,它使路由器和端系统更为复杂。其次,分片能够被用于生成知名的DoS攻击,由此攻击者发送了一系列古怪的、无法预期的片。

b) IPv4编址

  1. 一台主机通常只有一条链路连接到网络;当主机中的IP想发送一个数据报时,它就在该链路上发送。主机与物理链路之间的边界叫做接口。路由器与它的任一一条链路之间的边界也叫做接口。
  2. 因为每台主机与路由器都能发送和接收IP数据报,IP要求每台主机和路由器接口拥有自己的IP地址。因此,一个IP地址技术上是与一个接口相关联的,而不是与包括该接口的主机或路由器相关联的
  3. IP地址一般按所谓点份十进制记法书写,即地址中的每一个字节用它的十进制形式书写,各字节间用句号(点)隔开,即193.32.216.9
  4. 在全球因特网中的每台主机和路由器上的每个接口,必须有一个全球唯一的IP地址。然而,这些地址不能随意地自由选择。一个接口地IP地址的一部分需要由其连接的子网决定。
  5. IP子网:IP地址具有相同网络号的设备接口;不跨越路由器(第三及以上网络设备)可以彼此物理联通的接口。如:223.1.1.0/24,其中的/24的记法,有时称为子网掩码,指示了32比特的最左侧24比特定义了子网地址。
  6. 一个子网的IP定义并不局限于连接多台到一个路由器接口的以太网段。
  7. 对于一个路由器和主机的通用互联系统,我们能够使用下列有效方法定义系统中的子网:为了确定子网,分开子网和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点。这些隔离的网络中的每一个都叫做一个子网

有类编址

  1. A类地址,网络号8位,主机号24位(50%),高1位为0:0.0.0.0~127.255.255.255

  2. B类地址,网络号16位,主机号16位(25%),高2位为10:128.0.0.0~191.255.255.255

  3. C类地址,网络号24位,主机号8位(12.5%),高3位为110:192.0.0.0~233.255.255.255

  4. D类地址(多播地址):不再划分网络号和主机号,用于命名或标识因特网中的一组主机(这组主机理论上可以分布在互联网中的每个地方),这类地址只能作为IP分组中的目的主机地址,而不可以用作源主机地址,如果向多播地址发送一个IP分组,那么只要是多播地址中的成员都会接收这个副本。高4位为1110,地址范围:224.0.0.0~239.255.255.255

  5. E类地址:不再划分网络号和主机号,保留做研究使用,高4位为1111,地址范围:240.0.0.0~255.255.255.255

  6. 特殊的IP地址:
     网络号全0,主机号全0的IP地址可以作为IP分组的源地址,但不可以作为IP分组的目的地址,用于在本网范围内表示主机;在路由表中用于表示默认路由(相当于表示整个Internet网络)
     网络号全0,主机号为特定值的IP地址不可以作为IP分组的源地址,但可以作为IP分组的目的地址,表示本网内某个特定主机
     网络号全1,主机号全1的IP地址不可以作为IP分组的源地址,但可以作为IP分组的目的地址,用于本网广播地址(路由器不转发)
     网络号为特定值,主机号为全0的IP地址不可以作为IP分组的源地址,不可以作为IP分组的目的地址,用于网络地址,表示一个网络
     网络号为特定值,主机号为全1的IP地址不可以作为IP分组的源地址,可以作为IP分组的目的地址,用于直接广播地址,对特定网络上的所有主机进行广播
     网络号为127,主机号为非全0或非全1的任何数的IP地址可以作为IP分组的源地址和IP分组的目的地址,用于本地软件环回测试,称为环回地址

  7. A类地址中网络号为10地址、B类地址中网络号为172.16~171.31、C类地址中网络号为192.168.0 ~ 192.168.245范围内为私有IP地址

子网划分

  1. 通过借用原网络主机号高位的部分比特来表示子网号;通过子网掩码来确定是否划分了子网,并且可以知道利用了多少位来划分子网。
  2. 子网掩码表示方法形如IP地址,仍然是32位,点分十进制形式表示,取值是网络号、子网号中的位为全1,主机号中的位为全0
  3. 在默认掩码中不会有子网的概念,即不会划分子网号
  4. A网的默认子网掩码为:255.0.0.0;B网的默认子网掩码为255.255.0.0;C网的默认子网掩码为:255.255.255.0;借用3比特划分子网的B网的子网掩码为:255.255.224.0
  5. 通过将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址

无类别域间路由选择

  1. 因特网的地址分配策略被称为无类别域间路由选择(CIDR)。CIDR将子网寻址的概念一般化了。因为对于子网寻址,32比特的IP地址被划分为两部分,并且也具有点分十进制形式a.b.c.d/x,其中x指示了地址的第一部分中的比特数。
    i. 消除了传统的A类、B类和C类地址界限,前缀可以为任何数
    ii. 融合子网地址与子网掩码,方便子网划分。
    iii. 提高IPv4地址空间分配效率
    iv. 提高路由效率:将多个子网聚合成为一个较大的子网;构造超网;路由聚合;层级编址使得路由信息通告更高效

  2. 形式为a.b.c.d/x的地址的x最高比特构成了IP地址的网络部分,并且经常被称为该地址的前缀(网络前缀),一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。在这种情况下,该组织内部的设备的IP地址将共享共同的前缀。仅考虑前面的前缀比特x。这相当大地减少了在这些路由器中转发表的长度,因为形式为a.b.c.d/x单一表项足以将数据报转发到该组织内的任何目的地。

  3. 一个地址剩余的32-x比特可认为是用于区分该组织内部设备的,其中的所有设备具有相同的网络前缀。

c) 主机如何获取IP地址

本节讲述一个组织是如何为其设备得到一个地址块的,然后再看一个设备(如一台主机)是如何从某组织的地址块中分配到一个地址的。

获取一块地址

  1. 为了获取一块IP地址用于一个组织的子网,某网络管理员也许首先会与他的ISP联系,该ISP可能会从已分给它的更大地址块中提供一些地址。
  2. 显然,必须还有一种方法提供ISP本身得到一块地址。即存在一个全球性的权威机构,它具有管理IP地址空间并向各ISP和其他组织分配地址块的最终责任。
  3. IP地址由因特网名字和编号分配机构(ICANN)管理。该组织为非盈利组织,其作用不仅是分配IP地址,还管理DNS根服务器。

获取主机地址:动态主机配置协议

  1. 系统管理员可以手工配置路由器中的IP地址(常常在远程通过网络管理工具进行配置)。主机地址也能手动配置(即静态配置、“硬编码”)
  2. 目前通常更多的是使用动态主机配置协议(DHCP)来获取主机IP地址。它能够从服务器端动态获取IP地址、子网掩码、默认网关地址、DNS服务器名称与IP地址。
  3. 由于DHCP具有能将主机连接进一个网络的网络相关方面的自动能力,故它又常被称为即插即用协议
  4. DHCP协议允许地址重用
  5. DHCP允许在用地址续租;
  6. DHCP支持移动用户加入网络
  7. DHCP是一个客户——服务器协议
  8. DHCP协议是一个4个步骤的过程(详情请见书本!):
     主机广播DHCP“发现报文”。客户在UDP分组中向端口67发送该报文
     DHCP服务器利用“提供报文”进行响应
     主机请求IP地址“请求报文”
     DHCP服务器分配IP地址:“确认报文”
  9. DHCP协议在应用层实现:请求报文封装在UDP数据报中;IP广播;链路层广播
  10. DHCP服务器构造ACK报文:包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址

网络地址转换(NAT)

  1. 所有离开本地网络去往Internet的数据报的源IP地址需替换为相同的NAT IP地址以及不同的端口号
  2. 动机:一个网络只能/需从ISP申请一个IP地址(IPv4地址耗尽);本地网络设备IP地址的变更,无需通告外界网络;变更ISP时,无需修改内部网络设备IP地址;内部网络设备对外界网络不可见,即不可直接寻址(安全)
  3. 实现:
    a) 替换:利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
    b) 记录:将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转换表中
    c) 替换:根据NAT转换表,利用(源IP地址,源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号)即(NAT IP地址,新端口号)
  4. 16比特端口号字段:可以同时支持60000多并行连接
  5. NAT主要争议:
    a) 路由器应该只处理第3层功能;
    b) 违背端到端通信原则,应用开发者必须考虑到NAT的存在,如P2P应用
    c) 地址短缺问题应该由IPv6来解决
  6. NAT穿透问题
    a) 解决方案1:静态配置NAT,将特定端口的连接请求转发给服务器
    b) 解决方案2:利用UPnP(通用即插即用)协议自动配置——学习到NAT公共IP地址;在NAT转换表中,增删端口映射
    c) 解决方案3:中继(如Skype)——NAT内部的客户与中继服务器建立连接;外部客户也与中继服务器建立连接;中继服务器桥接两个连接的分组

d) 因特网控制报文协议(ICMP)

i. 互联网控制报文协议ICMP支持主机或路由器:差错(或异常)报告;网络探询
ii. 两类ICMP报文:

  1. 差错报告报文(5种):目的不可达、源抑制、超时/超期、参数问题、重定向
  2. 网络探询报文(2组):回声请求与应答报文、时间戳请求与应答报文

iii. ICMP通常被认为是IP的一部分(即ICMP报文封装到IP数据报中传输),但从体系结构上讲它是位于IP之上的,因为ICMP 报文是承载在IP分组中的。

iv. ICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8字节内容(以便发送方能确定引发该差错的数据报)。
计算机网络自顶向下第四章:网络层_第2张图片
计算机网络自顶向下第四章:网络层_第3张图片

v. 几种不发送ICMP差错报告报文的特殊情况:

  1. 对ICMP差错报告报文不再发送ICMP差错报告报文
  2. 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
  3. 对所有多播IP数据报均不发送ICMP差错报告报文
  4. 对具有特殊地址(如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文

vi. 几种ICMP报文已不再使用

  1. 信息请求与应答报文
  2. 子网掩码请求和应答报文
  3. 路由器询问和通告报文

vii. ICMP的应用举例:Traceroute

e) IPv6

i. 最初动机:32位IPv4地址空间已分配殆尽
ii. 其他动机:改进首部格式——快速处理/转发数据报;支持QoS
iii. IPv6数据报格式:

  1. 固定长度的40字节基本首部
  2. 不允许分片
    计算机网络自顶向下第四章:网络层_第4张图片
    iv. 在IPv4数据报中出现的几个字段在IPv6数据报中已不复存在:
  3. 校验和:彻底溢出,以减少每跳处理事件
  4. 选项:允许,但是从基本首部移出,定义多个选项首部,通过“下一个首部”字段指示
  5. ICMPv6:新版ICMP——附加报文类型;多播组管理功能
    v. IPv6地址表示形式:
  6. 一般是八组十六进制数,用:分隔;
  7. 压缩形式:连续多个0也可以用两个::来表示
  8. IPv4-嵌入形式:0:0:0:0:0:FFFF:13.1.68.3或::FFFF:13.1.68.3
  9. 地址前缀:2002:43c:476b::/48(IPv6不再使用掩码!)
  10. URLs:http://[3FFE::1:800:200C:417A]:8000

vi. IPv6基本地址类型:

  1. 单播:一对一通信
  2. 多播:一对多通信
  3. 任意播:一对一组之一(最近一个)通信

vii. IPv4向IPv6过渡

  1. 不可能在某个时刻所有路由器同时被更新为IPv6:不会有“标志性的日期”,即IPv4和IPv6会需要同时运行
  2. “隧道”:IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络

f) 涉足IP安全性

五、路由选择算法

  1. 当分组到达一台路由器时,该路由器索引其转发表并决定该分组被指向的链路接口。路由选择算法在网络路由器中运行、交换和计算信息,用这些信息配置这些转发表。
  2. 路由选择的工作是:确定从发送方到接收方通过路由器网络的好路径(等价为路由)
  3. 主机通常直接与一台路由器相连接,该路由器即为该主机的默认路由器,又称为该主机的第一跳路由器。每当主机发送一个分组时,该分组被传送给它的默认路由器。我们将源主机的默认路由器称作源路由器,把目的主机的默认路由器称作目的路由器。一个份组从源主机到目的主机的路由选择问题显然可归结为从源路由器到目的路由器的路由选择问题
  4. 根据路由选择算法时全局式的还是分散式的可以分为全局式路由选择算法和分散式路由选择算法(全局信息:所有路由器掌握完整的网络拓扑和链路费用信息,如链路状态LS路由算法;分散信息:路由器只掌握物理相连的邻居以及链路费用;邻居间信息交换、运算的迭代过程,如距离向量DV路由算法);
  5. 根据算法式静态的还是动态的可以分为静态路由选择算法和动态路由选择算法(静态路由:手工配置、路由更新慢、优先级高;动态路由:路由更新快、定期更新、及时响应链路费用或网络拓扑变化);
  6. 根据该算法是负载敏感的还是负载迟钝的进行划分可以分之为负载敏感算法和负载迟钝算法。

a) 链路状态路由选择算法(LS)

  1. 在链路状态算法中,网络拓扑和所有的链路费用都是已知的,也就是说可用作LS算法的输入。实践中这是通过让每个结点向网络中所有其他结点广播链路状态分组来完成的。
  2. 链路状态路由选择算法可由Dijkstra算法来实现,用于计算从某节点(源结点,我们称之为u)到网络中所有其他结点的最低费用路径。
  3. Dijkstra算法是迭代算法,其性质是经算法的第k次迭代后,可知道k个目的结点的最低费用路径,在到所有目的结点的最低费用路径之中,这k条路径具有k个最低费用。
  4. 算法的思路以及详细内容请参考书本!
  5. 可能会出现振荡,一种可能的解决方案就是确保并非所有的路由器都同时运行LS算法。

b) 距离向量路由选择算法(DV)

i. 距离向量算法是一种迭代的、异步的和分布式的算法

ii. 令dx(y)是从结点x到结点y的最低费用路径的费用。则最低费用与著名的Bellman-Ford方程相关,即 d x ( y ) = m i n v { C ( x , v ) + d v ( y ) } d_x (y)=min_v \{C(x,v)+d_v (y)\} dx(y)=minv{C(x,v)+dv(y)},其中的minv是对于x的所有邻居的。

iii. DV算法的基本思想:每个结点x以Dx(y)开始,对在N中的所有结点,估计从它自己到结点y的最低费用路径的费用。令 D x = [ D x ( y ) : y ∈ N ] D_x=[D_x (y):y∈N] Dx=[Dx(y):yN],是结点x的距离向量,该向量是从x到在N中的所有其他结点y的费用估计的向量。使用DV算法,每个结点x维护下列路由选择信息:

  1. 对于每个邻居v,从x到直接相连邻居v的费用为c(x,y)
  2. 结点x的距离向量,即 D x = [ D x ( y ) : y ∈ N ] D_x=[D_x (y):y∈N] Dx=[Dx(y):yN],包含了x到N中所有目的地y的费用的估计值
  3. 它的每个邻居的距离向量,即对x的每个邻居v,有 D v = [ D v ( y ) : y ∈ N ] D_v=[D_v (y):y∈N] Dv=[Dv(y):yN]

在该分布式、异步算法中,每个结点不时地向它地每个邻居发送它地距离向量副本。当结点x从它地任何一个邻居v接收到一个新距离向量,它保存v地距离向量,然后使用Bellman-Ford方程更新它自己地距离向量如下: D x ( y ) = m i n v { C ( x , v ) + D v ( y ) } D_x (y)=min_v \{C(x,v)+D_v (y)\} Dx(y)=minv{C(x,v)+Dv(y)},对N中的每个结点。如果结点x的距离向量因这个更新步骤而改变,结点x接下来将向它的每个邻居发送其更新后的距离向量。只要所有的结点继续以异步方式交换它们的距离向量,每个费用估计 D x ( y ) D_x (y) Dx(y)收敛到 d x ( y ) d_x (y) dx(y) d x ( y ) d_x (y) dx(y)为从结点x到结点y的实际最低费用路径的费用。

iv. DV算法可能会出现路由选择环路,增加毒性逆转并不能解决一般的无穷计数问题

v. LS与DV路由选择算法的比较:两者采用互补的方法来解决路由选择计算问题。在DV算法中,每个结点仅与它直接相连的邻居交谈,但它为其邻居提供了它自己到网络中(它所知道的)所有其他结点的最低费用估计。在LS算法中,每个结点(经广播)与所有其他结点交谈,但它仅告诉它们与它直接相连链路的费用。令N为结点(路由器)的集合,而E是边(链路)的集合

  1. 报文复杂性:LS算法要求每个结点都知道网络中每条链路的费用,这就要求发送O(|N||E|)个报文,且无论何时一条链路的费用改变时,必须向所有结点发送新的链路费用。DV算法要求在每次迭代时,在两个直接相连邻居之间交换报文。当链路费用改变时,DV算法仅当在新的链路费用导致与该链路相连结点的最低费用路径发生改变时,才传播已改变的链路费用。
  2. 收敛速度:LS收敛速度为O(|N|^2)。DV算法收敛较慢,且在收敛时会遇到路由选择环路,DV算法还会遭遇无穷计数问题
  3. 健壮性:在LS算法下,路由计算在某种程度上是分离的,提供了一定程度上的健壮性。在DV算法中,一个不正确的结点计算值会扩散到整个网络。

c) 层次路由选择

i. 将任意规模网络抽象为一个图计算路由-过于理想化(标识所有路由器、“扁平”网络),在实际网络(尤其是大规模网络)中,不可行!
ii. 在实践中,将网络只看作一个互联路由器的集合这种模型和这种一组执行同样路由选择算法的同质路由器集合的观点有点简单化了,至少有以下两个原因:

  1. 规模:随着路由器数目变得很大,路由表几乎无法存储,路由计算过程的信息交换量巨大,会淹没链路
  2. 管理自治:每个网络的管理可能都期望自主控制其网内的路由

iii. 层次路由:聚合路由器为一个区域——自治系统AS
iv. 同一AS内的路由器运行相同的路由协议(算法)

  1. 自治系统内部路由协议
  2. 不同自治系统内的路由器可以运行不同的AS内部路由协议
    v. 网关路由器
  3. 位于AS边缘
  4. 通过链路连接其他AS的网关路由器

vi. 详情请参考书本!

六、 因特网中的路由选择

Internet采用层次路由;AS内部路由协议也称为内部网络协议IGP,最常见的AS内部路由协议有以下几个:

a) 因特网中自治系统内部的路由选择:RIP(路由信息协议)

i. 早于1982年随BSD-UNIX操作系统发布
ii. RIP是一种距离向量协议

  1. 使用跳步数(最大为15),每条链路1个跳步
  2. 在RIP中,路由选择更新信息在邻居之间通过使用一种RIP响应报文来交换,大约每30秒相互交换一次
  3. 由一台路由器或主机发出的响应报文包含了一个该AS内的多达25个目的子网的列表,以及发送方到其中每个子网的距离

iii. RIP路由表是利用一个称作routed的应用层进程进行管理的;通告报文周期性地通过UDP数据报发送

b) 因特网中自治系统内部的路由选择:OSPF(开放最短路径协议)

i. OSPF中的开放一词是指路由选择协议规范是公众可用的
ii. 采用链路状态路由算法

  1. LS分组扩散(通告)
  2. 每个路由器构造完整的网络(AS)拓扑图
  3. 利用Dijkstra算法计算路由

iii. OSPF通告中每个入口对应一个邻居
iv. OSPF通告在整个AS范围泛洪:OSPF报文直接封装到IP数据报中
v. 与OSPF及其相似的一个路由协议:IS-IS路由协议
vi. OSPF优点(RIP不具备)

  1. 安全:所有OSPF报文可以被认证(预防恶意入侵)
  2. 允许使用多条相同费用的路径(RIP只能选一条)
  3. 对于每条链路可以针对不同的TOS设置多个不同的费用度量
  4. 集成单播路由与多播路由:多播OSPF协议(MOSPF)与OSPF利用相同的网络拓扑数据
  5. OSPF支持对大规模AS分层

vii. 分层的OSPF:详情请见书本!

你可能感兴趣的:(计算机网络课程笔记)