2025年计算机网络(自顶向下)第四章总结

计算机网络(自顶向下)第四章总结计算机网络 第四章 网络层 数据平面 在网络中的每一台主机和路由器中都有一个网络层部分 网络层能够被分解为两个相互作用的部分 即数据平面 和控制平面 软件定义网络 Software Defined Networking SDN 通过将这些控制平面功能作为一种单独服务

大家好,我是讯享网,很高兴认识大家。

计算机网络

第四章:网络层: 数据平面

在网络中的每一台主机和路由器中都有一个网络层部分。网络层能够被分解为两个相互作用的部分,即数据平面控制平面

软件定义网络(Software- Defined Networking, SDN)通过将这些控制平面功能作为一种单独服务,明确地分离数据平面和控制平面,控制平面功能通常置于一台远程“控制器”中。

4.1 网络层概述

  • 路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报。
  • 路由器的控制平面的主要作用是协调这些本地的每路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。
  • 路由器具有截断的协议栈,即没有网络层以上的部分,因为路由器不运行应用层和运输层协议
4.1.1 转发和由选择:数据平面和控制平面
  • 两种重要的网络层功能 :
    • 转发:当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路。转发是在数据平面中实现的唯一功能。分组也可能被现有的路由器阻挡,或者可能是冗余的并经过多条出链路发送。转发发生的时间尺度很短(通常为几纳秒),因此通常用硬件来实现。
    • 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。计算这些路径的算法被称为路由选择算法(routing algorithm)。是确定分组从源到目的地所采取的端到端路径的网络范围处理过程。路由选择发生的时间尺度长得多(通常为几秒),因此通常用软件来实现。
  • 每台网络路由器中有一个关键元素是它的转发表(forwarding table)。路由器检査到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引,通过这种方法来转发分组。这些值对应存储在转发表项中的值,指出了该分组将被转发的路由器的输出链路接口

    image-20210417190224892
    讯享网

  • 控制平面:传统的方法
    • 通过根据路由选择协议交换包含路由选择信息的路由选择报文,实现在一台路由器中的路由选择算法与在其他路由器中的路由选择算法通信,以计算出它的转发表的值。
  • 控制平面:SDN方法
    • 从路由器物理上分离的另一种方法,远程控制器计算和分发转发表以供每台路由器所使用。
    • 控制平面路由选择功能与物理的路由器是分离的,即路由选择设备仅执行转发,而远程控制器计算并分发转发表。远程控制器可能实现在具有高可靠性和冗余的远程数据中心中,并可能由ISP或某些第三方管理。
    • 通过交换包含转发表和其他路由选择信息的报文,路由器和远程控制器实现通信。
    • 控制平面方法是软件定义网络(Software-Defined Networking, SDN)的本质,因为计算转发表并与路由器交互的控制器是用软件实现的,故网络是“软件定义”的。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XkRPq20F-14)(计算机网络4.assets/image-.png)]

4.1.2 网络服务模型
  • 网络服务模型(network servicemodel )定义了分组在发送与接收端系统之间的端到端运输特性
  • 网络层能提供的某些可能的服务:
    • 确保交付。该服务确保分组将最终到达目的地
    • 具有时延上界的确保交付。该服务不仅确保分组的交付,而且在特定的主机到主机时延上界内(例如在100ms内)交付。
    • 有序分组交付。该服务确保分组以它们发送的顺序到达目的地。
    • 确保最小带宽。这种网络层服务模仿在发送和接收主机之间一条特定比特率 (例如1 Mbps 的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特(作为分组的组成部分),则所有分组最终会交付到目的主机。
    • 安全性。网络层能够在源加密所有数据报并在目的地解密这些分组,从而对所有运输层报文段提供机密性。
  • 因特网的网络层提供了单一的服务,称为尽力而为服务(best effort service )。使用尽力而为服务,传送的分组既不能保证以它们发送的顺序被接收,也不能保证它们最终交付;既不能保证端到端时延,也不能保证有最小的带宽。尽力而为服务看起来是根本无服务的一种委婉说法,即一个没有向目的地交付分组的网络也符合尽力而为交付服务的定义!其他的网络体系结构已定义和实现了超过因特网尽力而为服务的服务模型。

4.2 路由器工作原理

  • 台路由器的4个组件:
    • 输入端口它在路由器中执行终结入物理链路的物理层功能,这显示在输入端口部分最左侧的方框输出端口部分最右侧的方框中。它还要与位于入链路远端的数据链路层交互来执行数据链路层功能,这显示在输入与输出端口部分中间的方框中。也许更为重要的是,在输入端口还要执行查找功能,这显示在输入端口最右侧的方框中。通过查询转发表决定路由器的输出端口,到达的分组通过路由器的交换结构转发到输出端口。控制分组(如携带路由选择协议信息的分组)从输入端口转发到路由选择处理器。
    • 交换结构。交换结构将路由器的输入端口连接到它的输岀端口。这种交换结构完全包含在路由器之中,即它是一个网络路由器中的网络!
    • 输出端口输出端口存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组。当一条链路是双向的时(即承载两个方向的流量),输出端口通常与该链路的输入端口成对出现在同一线路卡上。
    • 路由选择处理器。路由选择处理器执行控制平面功能。在传统的路由器中,它执行路由选择协议,维护路由选择表与关联链路状态信息,并为该路由器计算转发表。在SDN路由器中,路由选择处理器(在其他活动中)负责与远程控制器通信,目的是接收由远程控制器计算的转发表项,并在该路由器的输入端口安装这些表项。路由选择处理器还执行网络管理功能。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kXPtZaFw-15)(计算机网络4.assets/image-.png)]

  • 路由器的输入端口、输出端口和交换结构几乎总是用硬件实现,如果N个端口结合在一块线路卡上,数据报处理流水线必须以N倍速率运行,这远快过软件实现的速率。
  • 当数据平面以纳秒时间尺度运行时,路由器的控制功能以毫秒或秒时间尺度运行,这些控制功能包括执行路由选择协议、对上线或下线的连接链路进行响应、 与远程控制器通信(在SDN场合)和执行管理功能。因而这些控制平面 (control plane)的功能通常用软件实现并在路由选择处理器(通常是一种传统的CPU)上执行。
  • 分组转发:
    • 基于目的地转发。假设汽车停在一个入口站上并指示它的最终目的地(并非在本地环状交叉路,而是其旅途的最终目的地)。入口站的一名服务人员查找最终目的地, 决定通向最后目的地的环状交叉路的出口,并告诉驾驶员要走哪个出口。
    • 通用转发。除了目的地之外,服务人员也能够基于许多其他因素确定汽车的出口匝道。例如,所选择的出口匝道可能与该汽车的起点如发行该车牌照的州有关。来自 某些州的汽车可能被引导使用某个出口匝道(经过一条慢速道路通向目的地),而来自其他州的汽车可能被引导使用一个不同的岀口匝道(经过一条高速路通向目的地)。
4.2.1 输入端口处理和基于目的地转发
  • 输入端口处理:
    • 输入端口的线路端接功能链路层处理实现了用于各个输入链路的物理层和链路层。在输入端口中执行的查找对于路由器运行是至关重要的。正是在这个地方,路由器使用转发表来查找输出端口,使得到达的分组能经过交换结构转发到该输出端口
    • 转发表是由路由选择处理器计算和更新的(使用路由选择协议与其他网络路由器中的路由选择处理器进行交互),或者转发表接收来自远程SDN控制器的内容。转发表从路由选择处理器经过独立总线复制到线路卡,使用在每个输入端口的影子副本转发决策能在每个输入端口本地做出,无须基于每个分组调用集中式路由选择处理器,因此避免了集中式处理的瓶颈。

    image-20210418083702800

    • 查找转发表:
      • 一个入分组基于该分组的目的地址交换到输岀端口。在32比特IP地址的情况下,转发表的蛮力实现将针对每个目的地址有一个表项。因为有超过40亿个可能的地址,选择这种方法总体上是不可行的。
      • 于是路由器用分组目的地址的前缀(prefix)与该表中的表项进行匹配;如果存在一个匹配项,则路由器向与该匹配项相关联的链路转发分组。一个目的地址可能与不止一个表项相匹配,当有多个匹配时,该路由器使用最长前缀匹配规则(longest prefix matching rule);即在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组。

        image-20210418085041857

      • 一旦通过查找确定了某分组的输出端口,则该分组就能够发送进入交换结构。在某些设计中,如果来自其他输入端口的分组当前正在使用该交换结构,一个分组可能会在进入交换结构时被暂时阻塞。一个被阻塞的分组必须要在输入端口处排队,并等待稍后被及时调度以通过交换结构。
    • 尽管“查找”在输入端口处理中可认为是最为重要的动作,但必须采取许多其他动作:
      • 必须出现物理层和链路层处理。
      • 必须检查分组的版本号、检验和以及寿命字段,并且重写后两个字段。
      • 必须更新用于网络管理的计数器(如接收到的IP数据报的数目)。
    • 注意到输入端口查找目的IP地址(“匹配”),然后发送该分组进入交换结构(“动作”)的步骤是一种更为一般的“匹配加动作”抽象的特定情况,这种抽象在许多网络设备中执行,而不仅在路由器中。
4.2.2 交换

交换结构位于一台路由器的核心部位, 因为正是通过这种交换结构, 分组才能实际地从一个输入端口交换(即转发)到一个输出端口中。

  • 交换的方式:
    • 经内存交换。最简单、最早的路由器是传统的计算机,在输入端口与输出端口之间的交换是在CPU (路由选择处理器)的直接控制下完成的。一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发出信号。于是,该分组从输入端口处 被复制到处理器内存中。路由选择处理器则从其首部中提取目的地址,在转发表中找出适当的输出端口,并将该分组复制到输出端口的缓存中。在这种情况下,如果内存带宽为每秒可写进内存或从内存读出最多B个分组,则总的转发吞吐量(分组从输入端口被传送到输出端口的总速率)必然小于B/2。也要注意到不能同时转发两个分组,即使它们有不同的目的端口,因为经过共享系统总线一次仅能执行一个内存读/写
    • 经总线交换。输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。让输入端口为分组预先计划一个交换机内部标签(首部),指示本地输出端口,使分组在总线上传送和传输到输出端口。该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组。然后标签在输出端口被去除,因为其仅用于交换机内部来跨越总线。如果多个分组同时到达路由器,每个位于不同的输出端口,除了一个分组外所有其他分组必须等待,因为一次只有一个分组能够跨越总线
    • 经互联网络交换。与前面两种交换方法不同,纵横式网络能够并行转发多个分组。纵横式交换机是非阻塞的(nonblocking) ,即只要没有其他分组当前被转发到该输出端口,转发到输出端口的分组将不会被到达输出端口的分组阻塞。然而,如果来自两个不同输入端口的两个分组其目的地为相同的输出端口,则一个分组必须在输入端等待,因为在某个时刻经给定总线仅能够发送一个分组。

    image-20210418091838838

4.2.3 输出端口处理

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

image-20210418091936566

4.2.4 何处出现排队

在输入端口和输出端口处都可以形成分组队列,排队的位置和程度(或者在输入端口排队,或者在输岀端口排队)将取决于流量负载、交换结构的相对速率和线路速率。随着这些队列的增长,路由器的缓存空间最终将会耗尽,并且当无内存可用于存储到达的分组时将会出现丢包(packet loss) 。

  • 输入排队
    • 线路前部(Head-Of-the-Line, HOL)阻塞:在一个输入队列中排队的分组必须等待通过交换结构发送(即使输出端口是空闲的),因为它被位于线路前部的另一个分组所阻塞。

      image-20210418093508168

  • 输出排队
    • 当没有足够的内存来缓存一个入分组时,就必须做出决定 要么丢弃到达的分组(采用一种称为弃尾(drop tail)的策略),要么删除一个或多个已排队的分组为新来的分组腾出空间。
    • 输出端口的分组调度(packet scheduler) 在这些排队分组中选择一个分组来传输。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kCiiu9jG-29)(计算机网络4.assets/image-.png)]

4.2.5 分组调度
  • 先进先出
    • 如果链路当前正忙于传输另一个分组,到达链路输出队列的分组要排队等待传输。如果没有足够的缓存空间来容纳到达的分组,队列的分组丢弃策略则确定该分组是否将被丢弃(丢失)或者从队列中去除其他分组以便为到达的分组腾出空间。
    • FIFO (也称为先来先服务,FCFS)调度规则按照分组到达输出链路队列的相同次序来选择分组在链路上传输。
  • 优先权排队
    • 在优先权排队(priority queuing)规则下,到达输出链路的分组被分类放入输出队列中的优先权类。每个优先权类通常都有自己的队列。当选择一个分组传输时,优先权排队规则将从队列为非空(也就是有分组 等待传输)的最高优先权类中传输一个分组。在同一优先权类的分组之间的选择通常以FIFO方式完成
    • 非抢占式优先权排队(non-preemptive priority queuing)规则下,一旦分组开始传输,就不能打断。
  • 循环和加权公平排队
    • 循环排队规则(nnmcl robin queuing discipline)下,分组像使用优先权排队那样被分类。然而,在类之间不存在严格的服务优先权,循环调度器在这些类之间轮流提供服务保持工作排队(work .conserving queuing)规则在有(任何类的)分组排队等待传输时,不允许链路保持空闲。当寻找给定类的分组但是没有找到时,保持工作的循环规则将立即检查循环序列中的下一个类。
    • 加权公平排队 (Weighted Fair Queuing, WFQ )规则,到达的分组被分类并在合适的每个类的等待区域排队。

4.3 网际协议:IPv4、寻址、IPv6及其他

4.3.1 IPv4数据报格式
  • IPv4数据报中的关键字段如下:
    • 版本号。这4比特规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分。不同的IP 本使用不同的数据报格式。
    • 首部长度。因为一个IPv4数据报可包含一些可变数量的选项(这些选项包括在IPv4数据报首部中),故需要用这4比特来确定IP数据报中载荷实际开始的地方。
    • 服务类型。服务类型(TOS)比特包含在IPv4首部中,以便使不同类型的IP数据报(例如,一些特别要求低时延、高吞吐量或可靠性的数据报)能相互区别开来。
    • 数据报长度。这是IP数据报的总长度(首部加上数据),以字节计。
    • 标识、标志、片偏移。这三个字段与所谓IP分片有关,这是一个我们将很快要考虑的主题。有趣的是,新 本的IP (即IPv6)不允许在路由器上对分组分片。
    • 寿命。寿命(Time To Live, TTL)字段用来确保数据报不会永远在网络中循环。每当一台路由器处理数据报时,该字段的值减1。若TTL字段减为0,则该数据报必须丢弃。
    • 协议。该字段通常仅当一个IP数据报到达其最终目的地时才会有用。该字段值指示了 IP数据报的数据部分应交给哪个特定的运输层协议。
    • 首部检验和。首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。
    • 源和目的IP地址。当某源生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址字段中插入其最终目的地的地址。
    • 选项。选项字段允许IP首部被扩展。首部选项意味着很少使用,因此决定对每个数据报首部不包括选项字段中的信息,这样能够节约开销。
    • 数据(有效载荷)。我们来看看最后也是最重要的字段.这是数据报存在的首要理由!
  • 注意到一个IP数据报有总长为20字节的首部(假设无选项)。如果数据报承载一个TCP报文段,则每个(无分片的)数据报共承载了总长40字节的首部(20字节的IP首部加上20字节的TCP首部)以及应用层报文。
4.3.2 IPv4数据报分片
  • 并不是所有链路层协议都能承载相同长度的网络层分组。有的协议能承载大数据报,而有的协议只能承载小分组。一个链路层帧能承载的最大数据量叫作最大传送单元(Maximum Transmission Unit, MTU)。MTU严格地限制着IP数据报的长度。发送方与目的地路径上的每段链路可能使用不同的链路层协议,且每种协议可能具有不同的 MTU
  • 当链路的MTU比IP数据报的长度要小,将IP数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的IP数据报,然后通过输出链路发送这些帧。每个这些较小的数据报都称为 (fragment) 。
  • 片在其到达目的地运输层以前需要重新组装。TCP与UDP的确都希望从网络层收到完整的、未分片的报文。为坚持网络内核保持简单的原则IPv4的设计者决定将数据报的重新组装工作放到端系统中,而不是放到网络路由器中。
  • 当一台目的主机从相同源收到一系列数据报时,它需要确定这些数据报中的某些是否是一些原来较大的数据报的片。如果是片的话,则它必须进一步确定何时收到了最后一片,并且将这些接收到的片拼接到一起以形成初始的数据报。为了让目的主机执行这些重新组装任务,IPv4将标识、标志和片偏移字段放在IP数据报首部中。当生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时贴上标识号。发送主机通常将它发送的每个数据报的标识号加1。当某路由器需要对一个数据报分片时,形成的每个片具有初始数据报的源地址、目的地址与标识号
  • 由于IP是一种不可靠的服务,一个或多个片可能永远到达不了目的地。因为这种原因,为了让目的主机绝对地相信它已收到了初始数据报的最后一个片,最后一个片的标志比特被设为0,而所有其他片的标志比特被设为1。为了让目的主机确定是否丢失了一个片(且能按正确的顺序重新组装片),使用偏移字段指定该片应放在初始IP数据报的哪个位置。
4.3.3 IPv4 编址
  • 主机与物理链路之间的边界叫作接口(inlerfkce)。路由器与它的任意一条链路之间的边界也叫作接口。一台路由器因此有多个接口,每个接口有其链路。IP要求每台主机和路由器接口拥有自己的IP地址。一个IP地址与一个接口相关联,而不是与包括该接口的主机或路由器相关联
  • 地址通常按点分十进制记法(dotled decimal notation)书写,即地址中的每个字节用它的十进制形式书写,各字节间以句点隔开。
  • 在全球因特网中的每台主机和路由器上的每个接口,都必须有一个全球唯一的IP地址。一个接口的IP地址的一部分需要由其连接的子网来决定。
  • 为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点。这些隔离的网络中的每一个都叫作一个子网 (subnet)。
  • 地址223.1.1.0/24,其中的/24记法,称为子网掩码(network mask),指示32比特中的最左侧24比特定义了子网地址
  • 因特网的地址分配策略被称为无类别域间路由选择(Classless Inlerdomain Routing,CIDR) 。当使用子网寻址时,32比特的IP地址被划分为两部分,并且也具有点分十进制数形式a. h. c. d/x,
    • x指示了地址的第一部分中的比特数。形式为a.b. c. d/x的地址的x最高比特构成了 IP地址的网络部分,并且经常被称为该地址的前缀(prefix)(或网络前缀)。一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址
    • 一个地址的剩余32-x比特可认为是用于区分该组织内部设备的。当该组织内部的路由器转发分组时,才会考虑这些比特。这些较低阶比特可能具有另外的子网结构。
  • IP广播地址255. 255. 255. 255:当一台主机发出一个目的地址为255. 255. 255. 255的数据报时,该报文会交付给同一个网络中的所有主机。路由器也会有选择地向邻近的子网转发该报文。
  • 设备获得与分配地址:

    • 获取一块地址:
      • ISP可能会从已分给它的更大地址块中提供一些地址,例如:

        image-20210418104414865

    • 获取主机地址:动态主机配置协议
      • 某组织一旦获得了一块地址,它就可为本组织内的主机与路由器接口逐个分配IP地址。主机地址也能手动配置,但是这项任务目前更多的是使用动态主机配置协议(Dynamic Host Configuration, DHCP)来完成。
      • DHCP可以使某给定主机每次与网络连接时能得到一个相同的IP地址,或者某主机将被分配一个临时的IP地址(tempomry IP address ),每次与网络连接时该地址也许是不同的。
      • 由于DHCP具有将主机连接进一个网络的网络相关方面的自动能力,故它又常被称为即插即用协议(plug and-play protocol)或零配置(zeroconf)协议。
      • DHCP是一个客户-服务器协议。客户通常是新到达的主机,它要获得包括自身使用的IP地址在内的网络配置信息。
      • 每个子网将具有一台DHCP服务器或需要一个DHCP中继代理(通常是一台路由器),这个代理知道用于该网络的DHCP服务器的地址。
      • DHCP协议是一个4个步骤的过程:
        1. DHCP服务器发现。通过使用DHCP发现报文(DHCP discover message),客户在UDP分组中向端口67发送该发现报文。该UDP分组封装在一个IP数据报中。DHCP客户生成包含DHCP发现报文的IP数据报,其中使用广播目的地址255.255.255.255并且使用主机源IP地址0.0. 0.0。DHCP客户将该IP数据报传递给链路层,链路层然后将该帧广播到所有与该子网连接的节点。

          image-20210418105449187

        2. DHCP服务器提供。DHCP服务器收到一个DHCP发现报文时,用DHCP提供报文(DHCP offer message)向客户做出响应,因为在子网中可能存在几个DHCP服务器,该报文向该子网的所有节点广播,仍然使用IP广播地址255. 255. 255. 255。
        3. DHCP请求。新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供用DHCP请求报文(DHCP request mess昭e)进行响应,回显配置的参数。
        4. DHCP ACK。月艮务器用 DHCP ACK 报文(DHCP ACK message)对DHCP请求报文进行响应,证实所要求的参数。
      • 从移动性角度看,DHCP确实有非常严重的缺陷。因为每当节点连到一个新子网,要从DHCP得到一个新的IP地址,当一个移动节点在子网之间移动时,就不能维持与远程应用之间的TCP连接。
4.3.4 网络地址转换
  • ISP分配一组地址以供该SOHO(Small Office, Home Office, SOHO的所有IP设备(包括电话、平板电脑、游戏设备、IPTV、打印机等)使用。如果该子网变大了,则需要分配一块较大的地址。但如果ISP已经为SOHO网络的当前地址范围分配过一块连续地址就需要用到网络地址转换(Network Address Translation ,NAT) 。
  • 地址10.0.0.0/8是保留的3个IP地址空间之一,这些地址用于家庭网络等专用网络具有专用地址的地域。具有专用地址的地域是指其地址仅对还网络中的设备有意义的网络。
  • NAT使能路由器对于外部世界来说甚至不像一台路由器。相反NAT路由器对外界的行为就如同一个具有单一 IP地址的单一设备。NAT使能路由器对外界隐藏了家庭网络的细节。
  • 路由器是从哪儿得到它的单一 IP地址的:
    • DHCP。路由器从ISP的DHCP服务 器得到它的地址,并且路由器运行一个DHCP服务器,为位于NAT-DHCP路由器控制的家庭网络地址空间中的计算机提供地址。

    image-20210418121944941

  • 如果从广域网到达NAT路由器的所有数据报都有相同的目的IP地址,那么该路由器怎样知道它应将某个分组转发给哪个内部主机呢?技巧就是使用NAT路由器上的一张NAT转换表(NAT translation t血e),并且在表项中包含了端口号及其IP地址
  • NAT重要问题:
  • 端口号是用于进程寻址的,而不是用于主机寻址的。
  • 妨碍P2P应用程序,包括P2P共享和语音。一个对等方在NAT后面,不能充当服务器并接受TCP连接,其解决办法是连接反转
    连接反转:A通过C与B联系,C不位于NAT之后并与B建立了TCP连接,已经被很多P2P应用用于NAT穿越若对等方A和B都在NAT之后,使用应用程序进行中继处理,如Skype中继。
  • NAT已成为因特网的一个重要组件,成为所谓中间盒,它运行在网络层并具有与路由器十分不同的功能。中间盒并不执行传统的数据报转发,而是执行诸如NAT、流量流的负载均衡、流量防火墙(参见下面的插入框内容)等功能。
4.3.5 IPv6

32比特的IP地址空间即将用尽。为了应对这种对大IP地址空间的需求,开发了一种新的IP协议,即IPv6。IPv6的设计者还利用这次机会,在IPv4积累的运行经验基础上加进和强化了 IPv4的其他方面。

  • IPv6数据报格式
    • 扩大的地址容量。IPv6将IP地址长度从32比特增加到128比特。除了单播与多播地址以外,IPv6还引入了一种称为任播地址(anycast address)的新型地址,这种地址可以使数据报交付给一组主机中的任意一个。
    • 简化高效的40字节首部。许多IPv4字段已被舍弃或作为选项。
    • 流标签。IPv6有一个难以捉摸的流(flow)定义。
    • 版本。该4比特字段用于标识IP 本号。IPv6将该字段值设为6。意到将该字段值置为4并不能创建一个合法的IPv4数据报。
    • 流量类型。该8比特字段与我们在IPv4中看到的TOS字段的含义相似。
    • 流标签。该20比特的字段用于标识一条数据报的流,能够对一条流中的某些数据报给出优先权。
    • 有效载荷长度。该16比特值作为一个无符号整数,给出了 IPv6数据报中跟在定长的40字节数据报首部后面的字节数量。
    • 下一个首部。该字段标识数据报中的内容(数据字段)需要交付给哪个协议(如TCP或UDP)。
    • 跳限制。转发数据报的每台路由器将对该字段的内容减1。如果跳限制计数达到0,则该数据报将被丢弃。
    • 源地址和目的地址。
    • 数据。
    • 分片/重新组装。IPv6不允许在中间路由器上进行分片与重新组装。
    • 首部检验和。因为因特网层中的运输层(如TCP与UDP)和数据链路层(如以太网)协议执行了检验操作,IP设计者大概觉得在网络层中具有该项功能实属多余,所以将其去除。
    • 选项。选项字段不再是标准IP首部的一部分了。
  • 从IPv4到IPv6的迁移
    • 虽然新型IPv6使能系统可做成向后兼容,即能发送、路由和接收IPv4数据报,但已部署的具有IPv4能力的系统却不能够处理IPv6数据报。
    • 方法:
      • 宣布一个标志日,即指定某个日期和时间,届时因特网的所有机器都关机并从IPv4升级到IPv6。(不可行)
      • 建隧道。假定两个IPv6节点要使用IPv6数据报进行交互,但它们是经由中间IPv4路由器互联的。我们将两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道(tunnel)。借助于隧道,在隧道发送端的IPv6节点可将整个IPv6数据报放到一个IPv4数据报的数据字段中。该IPv4数据报的地址设为指向隧道接收端的IPv6节点,再发送给隧道中的第一个节点。

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2bTSQysb-32)(计算机网络4.assets/image-.png)]

4.4 通用转发和SDN

  • 将基于目的地转发的特征总结为两个步骤:
    • 查找目的IP地址(“匹配”)。
    • 后将分组发送到有特定输出端口的交换结构(“动作”)。
  • 现在考虑一种更有意义的通用“匹配加动作”范式,其中能够对协议栈的多个首部字段进行“匹配”,这些首部字段是与不同层次的不同协议相关联的。“动作”能够包括 将分组转发到一个或多个输出端口(就像在基于目的地转发中一样),跨越多个通向服务的离开接口进行负载均衡分组(就像在负载均衡中一样),重写首部值(就像在NAT中一样),有意识地阻挡/丢弃某个分组(就像在防火墙中一样),为进一步处理和动作而向某个特定的服务器发送一个分组(就像在DPI —样),等等。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dXEmlYib-33)(计算机网络4.assets/image-.png)]

  • 每台分组交换机中的一张匹配加动作表,该表由远程控制器计算、 安装和更新。我们注意到虽然在各台分组交换机中的控制组件可以相互作用,但实践中通用匹配加动作能力是通过计算、安装和更新这些表的远程控制器实现的。
  • OpenFlow是一个得到高度认可和成功的标准,它已经成为匹配加动作转发抽象、控制器以及更为一般的SDN革命等概念的先驱。
  • 匹配加动作转发表在OpenFlow中称为流表( flow table),它的每个表项包括:
    • 首部字段值的集合,入分组将与之匹配。与基于目的地转发的情况一样,基于硬件匹配在TCAM内存中执行得最为迅速
    • 计数器集合(当分组与流表项匹配时更新计数器)。这些计数器可以包括已经与该表项匹配的分组数量,以及自从该表项上次更新以来的时间。
    • 当分组匹配流表项时所采取的动作集合。这些动作可能将分组转发到给定的输出端口,丢弃该分组、复制该分组和将它们发送到多个输岀端口,和/或重写所选的首部字段。
4.4.1 匹配
  • 到达一台分组交换机的一个链路层(第二层)帧将包含一个网络层(第三层)数据报作为其有效载荷,该载荷通常依次将包含一个运输层 (第四层)报文段。OpenFlow的匹配抽象允许对来自三个层次的协议首部所选择的字段进行匹配。
  • 源和目的MAC地址是与帧的发送和接收接口相关联的链路层地址;以太网类型字段对应于较高层协议(例如IP),利用该字段分解该帧的载荷,并且VLAN字段与所谓虚拟局域网相关联。入端口是指分组交换机上接收分组的输入端口。

    image-20210418134752328

  • 流表项也可以有通配符。例如,在一个流表中IP地址128. 119. * . *将匹配其地址的前16比特为128. 119的任何数据报所对应的地址字段。每个流表项也具有相应的优先权。如果一个分组匹配多个流表项,选定的匹配和对应的动作将是其中有最高优先权的那个。
4.4.2 动作
  • 每个流表项都有零个或多个动作列表,这些动作决定了应用于与流表项匹配的分组的处理。如果有多个动作,它们以在表中规定的次序执行。
  • 其中最为重要的动作可能是 :
    • 转发。一个入分组可以转发到一个特定的物理输岀端口,广播到所有端口(分组到达的端口除外),或通过所选的端口集合进行多播。
    • 丢弃。没有动作的流表项表明某个匹配的分组应当被丢弃。
    • 修改字段。在分组被转发到所选的输出端口之前,分组首部10个字段中的值可以重写。

。每个流表项也具有相应的优先权。如果一个分组匹配多个流表项,选定的匹配和对应的动作将是其中有最高优先权的那个。

4.4.2 动作
  • 每个流表项都有零个或多个动作列表,这些动作决定了应用于与流表项匹配的分组的处理。如果有多个动作,它们以在表中规定的次序执行。
  • 其中最为重要的动作可能是 :
    • 转发。一个入分组可以转发到一个特定的物理输岀端口,广播到所有端口(分组到达的端口除外),或通过所选的端口集合进行多播。
    • 丢弃。没有动作的流表项表明某个匹配的分组应当被丢弃。
    • 修改字段。在分组被转发到所选的输出端口之前,分组首部10个字段中的值可以重写。
小讯
上一篇 2025-03-23 07:48
下一篇 2025-04-05 14:36

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/52614.html