网络层 I(网络层的功能)【★★★★★★】

2024-08-24 13:20
文章标签 功能 网络层

本文主要是介绍网络层 I(网络层的功能)【★★★★★★】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(★★)代表非常重要的知识点,(★)代表重要的知识点。

一、 路由与转发(★★)

路由器主要完成两个功能:

1. 路由选择

【(确定哪一条路径)根据路由选择协议构造并维护路由表】

根据路由协议构造路由表,同时经常或定期地与相邻路由器交换信息,获取网络最新拓扑,动态更新维护路由表,以决定分组到达目的地结点的最优路径。

2. 分组转发

【(当一个分组到达时所采取的动作)处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。】

分组转发指路由器根据转发表将分组从合适的端口转发出去。

路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要最优化网络拓扑变化的计算。在讨论路由选择的原理时,往往不区分转发表和路由表,而笼统地使用路由表一词。

二、数据报与虚电路(网络层提供的两种服务)

分组交换网根据其通信子网向端点系统提供的服务,还可进一步分为面向连接的虚电路服务和无连接的数据报服务。这两种服务方式都是由网络层提供的。

1. 虚电路

1)虚电路网络的特性

在虚电路方式中,当两台计算机进行通信时,应当先建立网络层的连接,也就是建立一条逻辑上的虚电路(Virtual Circuit, VC),连接一旦建立,就固定了虚电路对应的物理路径。与电路交换类似,整个通信过程分为三个阶段,分别为:虚电路建立、数据传输与虚电路释放。

每次建立虚电路时,将一个未用过的虚电路号(VCID)分配给该虚电路,以区别于本系统中的其他虚电路,然后双方就沿着已建立的虚电路传送分组。分组的首部仅在连接建立时使用完整的目的地址,之后每个分组的首部只需携带这条虚电路的编号即可。在虚电路网络中的每个结点上都维持一张虚电路表,表中每项记录一个打开的虚电路的信息,包括在接收链路和发送链路上的虚电路号、前一结点和下一结点的标识,它是在虚电路建立过程中确定的。

2)虚电路方式的工作原理

虚电路方式的工作原理如下图所示。

  • 数据传输前,主机 A 与主机 B 先建立连接,主机 A 发出“呼叫请求”分组,该分组通过中间结点送往主机 B ,若主机 B 同意连接,则发送“呼叫应答”分组予以确认。
  • 虚电路建立后,主机 A 和主机 B 就可相互传送数据分组。
  • 传送结束后,主机 A 通过发送“释放请求”分组来拆除虚电路,逐段断开整个连接。

虚电路之所以是虚,是因为这条电路不是专用的,每个结点到其他结点之间的链路可能同时有若干条虚电路通过,也可能同时在多个结点之间建立虚电路。

注意,上图所示的数据传输过程是有确认的传输(由高层实现),B 收到分组后要发回相应分组的确认。网络中的传输是否有确认与网络层提供的两种服务没有任何关系。

3)虚电路服务的特点

  • 虚电路通信链路的建立和拆除需要时间开销,对交互式应用和少量的短分组情况显得很浪费,但对长时间、频繁的数据交换效率较高。
  • 虚电路的路由选择体现在连接建立阶段,连接建立后,就确定了传输路径。
  • 虚电路提供了可靠的通信功能,能保证每个分组正确且有序到达。此外,还可对两个端点的流量进行控制,当接收方来不及接收数据时,可以通知发送方暂缓发送。
  • 虚电路有一个致命的弱点,即当网络中的某个结点或某条链路出现故障而彻底失效时,所有经过该结点或该链路的虚电路将遭到破坏。
  • 分组首部不包含目的地址,包含的是虚电路号,相对于数据报方式,其开销小。

2. 数据报

1)数据报网络的特性

网络在发送分组前不需要先建立连接。源主机的高层协议将报文拆成若干较小的数据段,并加上地址等控制信息后构成分组。每一个分组(也就是 IP 数据报)独立发送,与其前后的分组无关(即不进行编号)。中间结点存储分组很短一段时间,找到最佳的路由后,尽快转发每个分组。

网络层不提供服务质量的承诺。也就是说,所传送的分组可能出错、丢失、重复和失序(即不按序到达终点),当然也不保证分组交付的时限。因为网络不提供端到端的可靠传输服务,所以这就使得网络中的路由器比较简单,且造价低廉(与电话网络相比)。如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。

2)数据报方式的工作原理

用下图所示的例子来说明数据报服务的原理。假定主机 A 向主机 B 发送分组。

  • 主机 A 先将分组逐个发往与它直接相连的交换结点 A ,交换结点 A 缓存收到的分组。
  • 然后查找自己的转发表。因为不同时刻的网络状态不同,所以转发表的内容可能不完全相同,所以有的分组转发给交换结点 C ,有的分组转发给交换结点 D 。
  • 网络中的其他结点收到分组后,类似地转发分组,直到分组最终到达主机 B 。

当分组正在某一链路上传送时,分组并不占用网络其他部分的资源。因为采用存储转发技术,资源是共享的,所以主机 A 在发送分组时,主机 B 也可同时向其他主机发送分组。

3)数据报服务的特点

  • 发送分组前不需要建立连接。发送方可随时发送分组,网络中的结点可随时接收分组。
  • 网络尽最大努力交付,传输不保证可靠性,所以分组可能出错或丢失;网络为每个分组独立地选择路由,转发的路径可能不同,因此分组不一定按序到达目的结点。
  • 发送的分组中要包括发送方和接收方的完整地址,以便可以独立传输。
  • 当分组在交换结点存储转发时,需要排队等候处理,这会带来一定的时延。当网络发生拥塞时,这种时延会大大增加,交换结点还可根据情况丢弃部分分组。
  • 网络具有冗余路径,当某个交换结点或一条链路出现故障时,可相应地更新转发表,寻找另一条路径转发分组,对故障的适应能力强。
  • 收发双方不独占某条链路,资源利用率较高。

3. 虚电路服务和数据报服务的对比

下图归纳了虚电路服务与数据报服务的主要区别。

三、SDN 基本概念

1. SDN 结构

网络层的主要任务是转发和路由选择。可以将网络层抽象地划分为数据平面(也称转发层面)和控制平面。转发是数据平面实现的功能,而路由选择是控制平面实现的功能。

软件定义网络(Software DefinedNetwork, SDN)是近年流行的一种创新网络架构,它采用集中式的控制平面和分布式的数据平面,两个平面相互分离。控制平面利用控制 - 数据接口对数据平面上的路由器进行集中式控制,方便软件来控制网络。

传统网络中的路由器既有转发表又有路由选择软件,即既有数据平面又有控制平面。但是在下图所示的 SDN 结构中,路由器都变得简单了,它的路由选择软件都不需要了,因此路由器之间不再相互交换路由信息。在网络的控制平面有一个逻辑上的远程控制器(可由多个服务器组成)。远程控制器掌握各主机和整个网络的状态,为每个分组计算出最佳路由,通过 Openflow 协议(或其他途径)将转发表(在 SDN 中称为流表)下发给路由器。路由器的工作很单纯,即收到分组、查找转发表、转发分组。

这样,网络又变成集中控制的,而本来互联网是分布式的。SDN 并非要把整个互联网都改造成如上图所示的集中控制模式,这是不现实的。然而,在某些具体条件下,特别是像一些大型的数据中心之间的广域网,使用 SDN 模式来建造,就可使网络的运行效率更高。

2. 南向接口、北向接口和东西向接口

SDN 的可编程性通过为开发者提供强大的编程接口,使得网络具有很好的编程性。对上层应用的开发者,SDN 提供的编程接口称为北向接口,北向接口提供了一系列丰富的 API ,开发者可以在此基础上设计自己的应用,而不必关心底层的硬件细节。

SDN 控制器和转发设备建立双向会话的接口称为南向接口,通过不同的南向接口协议(如 Openflow),SDN 控制器就可兼容不同的硬件设备,同时可在设备中实现上层应用的逻辑。

SDN 控制器集群内部控制器之间的通信接口称为东西向接口,用于增强整个控制平面的可靠性和可拓展性。

3. SDN 的优点和缺点

SDN 的优点:

  • 全局集中式控制和分布式高速转发,既利于控制平面的全局优化,又利于高性能的网络转发。
  • 灵活可编程与性能的平衡,控制和转发功能分离后,使得网络可以由专有的自动化工具以编程方式配置。
  • 降低成本,控制和数据平面分离后,尤其是在使用开放的接口协议后,就实现了网络设备的制造与功能软件的开发相分离,从而有效降低了成本。

SDN 的缺点:

  • 安全风险,集中管理容易受攻击,若崩溃,则整个网络会受到影响。
  • 瓶颈问题,原本分布式的控制平面集中化后,随着网络规模扩大,控制器可能成为网络性能的瓶颈。

四、其他知识点(了解即可)

1. 网络层的功能

网络层提供主机到主机的通信服务,主要任务是将分组从源主机经过多个网络和多段链路传输到目的主机。该任务可划分为分组转发路由选择两种重要功能。

思考:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?

OSI 参考模型曾主张在网络层使用面向连接的虚电路(Virtual Circuit, VC)服务,认为应由网络自身来保证通信的可靠性。而 TCP/IP 体系的网络层提供的是无连接的数据报服务,其核心思想是应由用户主机来保证通信的可靠性。

在互联网采用的 TCP/IP 体系结构中,网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报(datagram)服务。也就是说,所传送的分组可能出错、丢失、重复、失序或超时,这就使得网络中的路由器可以做得比较简单,而且价格低廉。通信的可靠性可以由更高层的传输层来负责。

采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种设计思想的正确性。

2. 异构网络互连

互联网是由全球范围内数以百万计的异构网络互连起来的。这些网络的拓扑结构、寻址方案、差错处理方法、路由选择机制等都不尽相同。网络层所要完成的任务之一就是使这些异构的网络实现互连。

异构网络是指由不同类型的网络设备、技术和协议组成的网络系统。这些设备可能包括无线网络、移动网络、有线网络以及不同品牌或类型的路由器、交换机和终端设备等。异构网络的特点是各部分之间的互联和互操作性,这样可以实现多种技术的协同工作,以满足不同的应用需求。

网络互连是指将两个以上的计算机网络,通过一定的方法,用一些中继系统相互连接起来,以构成更大的网络系统。根据中间设备所在的层次,中继系统分为以下4种:

  • 物理层中继系统:转发器(repeater)、集线器(Hub)。
  • 数据链路层中继系统:网桥或桥接器(bridge)、交换机 。
  • 网络层中继系统:路由器(router)。
  • 在网络层以上使用的中间设备叫做网关(gateway),用网关连接两个不兼容的系统需要在高层进行协议的转换。

由于历史原因,许多有关 TCP/IP 的文献也将网络层使用的路由器称为网关。

当使用物理层或数据链路层的中继系统时(转发器或网桥),只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互连。网关由于比较复杂,目前使用得较少。因此,网络互连通常是指用路由器进行网络互连和路由选择。路由器其实就是一台专用计算机,用来在互联网中进行路由选择。

下图(a)表示有许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的网际协议 IP(Internet Protocol),因此可以把互连以后的计算机网络看成如下图(b)所示的一个虚拟互连网络(internet)。下图是 IP 网络的概念示意图。

所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是通过 IP 协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用 IP 协议的虚拟互连网络可简称为 IP 网络(IP 网是虚拟的,但平常不必每次都强调“虚拟”二字)。

使用 IP 网络的好处是:当 IP 网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议,等等)。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网(Internet)。

【拓展】:

当很多异构网络通过路由器互连起来时,如果所有的网络都使用相同的 IP 协议,那么在网络层讨论问题就显得很方便。现在用一个例子来说明。下图所示是分组在互联网中的传送过程。

上图所示的互联网中的源主机 H1 要把一个 IP 数据报发送给目的主机 H2 。分为以下几个步骤:

  • 根据分组交换的存储转发概念,主机 H1 先要查找自己的路由表,看目的主机是否就在本网络上。如是,则不需要经过任何路由器而是直接交付,任务就完成了。如不是,则必须把 IP 数据报发送给某个路由器(即图中的 R1 ) 。
  • H1 在查找了自己的路由表后,知道应当把数据报转发给 R2 进行间接交付。
  • 这样一直转发下去,最后由路由器 R5 知道自己是和 H2 连接在同一个网络上,不需要再使用别的路由器转发了,于是就把数据报直接交付目的主机 H2

① 图中画出了源主机、目的主机以及各路由器的协议栈。我们注意到,主机的协议栈共有五层,但路由器的协议栈只有下三层。
② 图中还画出了数据在各协议栈中流动的方向(用黑色粗线表示)。我们还可注意到,在 R4 和 R5 之间使用了卫星链路,而 R5 所连接的是个无线局域网。在 R1 到 R4 之间的三个网络则可以是任意类型的网络。
总之,这里强调的是:互联网可以由多种异构网络互连组成。

如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送,其传送路径是:
H1 → R1 → R2 → R3 → R4 → R5 → H2
这样就不必画出许多完整的协议栈,使问题的描述更加简单。

3. 拥塞控制

1)判断网络是否进入拥塞状态的方法

因出现过量的分组而引起网络性能下降的现象称为拥塞。判断网络是否进入拥塞状态的方法是,观察网络的吞吐量与网络负载的关系:

  • 若随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,则网络就可能已进入轻度拥塞状态;
  • 若网络的吞吐量随着网络负载的增大而下降,则网络就可能已进入拥塞状态。

拥塞控制主要解决的问题是如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免因拥塞而出现分组的丢失。

2)拥塞控制的作用

确保网络能够承载所达到的流量,这是一个全局性的过程,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。单一地增加资源并不能解决拥塞。

3)与流量控制的区别

流量控制往往是指在发送方和接收方之间的点对点通信量的控制。流量控制所要做的是抑制发送方发送数据的速率,以便使接收方来得及接收。

4)拥塞控制的方法

拥塞控制的方法有如下两种:

  • 开环控制:在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。这是一种静态的预防方法。一旦整个系统启动并运行,中途就不再需要修改。开环控制手段包括确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组,确定何种调度策略等。所有这些手段的共性是,在做决定时不考虑当前网络的状态。
  • 闭环控制:事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。闭环控制是基于反馈环路的概念,是一种动态的方法。

这篇关于网络层 I(网络层的功能)【★★★★★★】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102594

相关文章

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

详解Tomcat 7的七大新特性和新增功能(1)

http://developer.51cto.com/art/201009/228537.htm http://tomcat.apache.org/tomcat-7.0-doc/index.html  Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强。很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们