哈工大计算机网络课程网络层协议之:网络层服务概述

news2024/10/7 16:19:02

哈工大计算机网络课程网络层协议之:网络层服务概述

文章目录

  • 哈工大计算机网络课程网络层协议之:网络层服务概述
    • 网络层概述
    • 网络层核心功能—转发与路由
    • 网络层核心功能—连接建立
    • 网络层服务模型
    • 虚电路网络与数据报网络
      • 虚电路网络
        • 虚电路(VC)的具体实现
        • VC转发表
        • 虚电路信令协议(signaling protocols)
      • 数据报网络
      • 数据报网络 OR VC网络

网络层概述

网络层提供的主要功能包括:

  1. 从发送主机向接收主机传送数据段(Segment)
  2. 发送主机:将数据段封装到数据报(datagram)中
  3. 接收主机:向传输层交付数据段(Segment)
  4. 每个主机和路由器都运行网络层协议
  5. 路由器检验所有穿越它的IP数据报的头部域,决策如何处理IP数据报。

需要注意的是,网络层不再是一个端到端的层次,因此,在每一个主机或是网络层设备上(比如路由器上),都需要运行网络层协议,完成网络层的功能。 实际上,每个路由器都需要对经过该路由器的每一个网络层数据报进行头部域的检验,进而决定如何处理,比如如何转发网络层的数据报。

作为网络层,需要将传输层交付的数据段Segment,封装以后在整个网络中进行传输。在传输过程中,中间的路由器需要把网络层的数据报进行解析,并决定如何转发,最终送到目的主机。 目的主机的网络层再将传输层的段Segment提交给上层传输层进行进一步处理。

网络层核心功能—转发与路由

在网络层中,当某一个路由器收到某一数据段后,需要做的功能之一,就是确定如何将该数据段转发到另一输出端口上,从而能够正确转发到下一跳路由器。

将一个数据报从路由器的输入端口,转发到合适的输出端口,这一过程就是网络层应该完成的核心功能之一:转发。

  • 转发(forwarding):将分组从路由器的输入端口转移到合适的输出端口

那么这里存在的一个问题就是,对于路由器来说,如何判断接收到的数据报应该转发到哪一个合适的端口上去?

为了解决这个问题,路由器需要维护一张转发表,结构如下所示:

在这里插入图片描述

这个转发表里记录了对于接收的数据报,根据其地址(标识)信息,应该转发的输出端口的映射关系。

那这个转发表是怎么获取的呢?

作为路由器,我们将上述确定接收数据的输出端口的过程称之为路由:

  • 路由(routing):确定分组从源到目的经过的路径。

作为网络层的设备,都会运行一些路由算法,确定从源到目的应该走什么样的路径,或是如何进行转发。这些路由算法/协议所确定的路由信息,就记录在转发表中。当路由器收到一个具体的数据报时,就可以根据数据报的地址信息,检索转发表,完成正确的转发。

网络层核心功能—连接建立

不是所有的网络都需要建立连接。

数据分组传输之前两端主机需要首先建立虚拟/逻辑连接。

某些网络的重要功能:

  • ATM
  • 帧中继
  • X.25

数据分组传输之前两端主机需要首先建立虚拟/逻辑连接

  • 网络设备(如路由器)参与连接的建立。

网络层连接与传输层连接的对比:

  • 网络层连接:两个主机之间(路径上的路由器等网络设备参与其中)
  • 传输层连接:两个应用进程之间(对中间网络设备透明)

网络层服务模型

网络层为发送端(主机)到接收端(主机)的数据报传输”通道(channel)“提供什么样的服务模型(Service model)?

作为网络层,使用的技术、方法的不同,为传输层提供的服务是不一样的。换句话说,不同的网络在网络层提供的服务模型是不同的。

在这里插入图片描述

比如Internet网络,在网络层提供的模型是best effort service(尽力服务)(传输层的UDP协议也是一个尽力服务)。尽力服务就是尽最大努力交付数据报,因此该网络模型对带宽,丢包,按序,延迟的可靠性保障都无法做到。也没有对网络拥塞控制的反馈功能。

为什么传输层的TCP协议能够保证可靠传输呢?

上一节在传输层中,我们分析过传输层如何实现可靠性传输。由于信道的传输一定是不可靠的,因此,为了实现可靠的目标,传输层实现了自己的可靠性传输算法,比如ACK机制、超时重传等。 从而向上层交付可靠数据,向下层将不可靠信道转变为可靠,以此来实现可靠传输。因此,网络的可靠传输是在传输层实现的。

但是本质上网络中的信道仍然是一个不可靠的传输,因此这里Internet网络的服务模型本质上是个不可靠传输的服务模型,类似于UDP,只尽最大可能交付数据报。

ATM网络,也叫异步传输模式网络,这个网络是在电信网络发展基础上,逐渐发展的综合业务网络。有兴趣的同学可以查阅相关资料,更深入了解下。

网络层服务模型包括以下几类:

  • 无连接服务(connection-less service):
    • 不事先为系列分组的传输确认传输路径
    • 每个分组独立确定传输路径。
    • 某个分组的传输路径,是由网络层的路由器根据当前网络中的状态选择不同路径进行传输。因此在无连接网络中,不同分组从同一个源主机到目的主机过程中,所经过的路径可能是完全不同的。
    • 由于传输路径不同,因此同一源主机按顺序发送的分组,可能是乱序到达目的主机。
    • 无连接网络最具有代表性的网络:数据报网络(datagram network)
  • 连接服务(connection service)
    • 首先为系列分组的传输确定从源到目的经过的路径(建立连接)
    • 然后沿该路径(连接)传输系列分组。(也就是后续从相同源到目的主机的一系列分组都走这条连接)
    • 因此这一系列分组传输路径都是相同的。也就能保证分组的传输顺序。
    • 传输结束后拆除连接
    • 这类网络最具有代表性的网络:虚电路网络

虚电路网络与数据报网络

数据报(datagram)网络与虚电路(virtual-circuit)网络是典型两类分组交换网络。

  • 数据报网络提供网络层无连接服务
  • 虚电路网络提供网络层连接服务

类似于传输层的无连接服务(UDP)和面向连接的服务(TCP),但是网络层服务:

  • 提供主机到主机的连接服务
  • 网络层连接服务的最关键是网络核心的实现

虚电路网络

虚电路:一条从源主机到目的主机,类似于电路的路径(逻辑连接),但又不是实际的电路交换,因此叫做虚电路。

在这里插入图片描述

虚电路与电路交换的区别:

  1. 虚电路是分组交换。作为分组交换来说,每个分组在传输过程中,都是利用链路的全部带宽。而电路交换(常用在电话网络)中,在链路上会利用频分多路复用,时分多路复用等技术,同一时刻的数据只占用链路的一部分带宽。
  2. 因此,在虚电路中每个分组的传输利用链路的全部带宽。
  3. 源主机到目的主机经过的网络层设备共同完成虚电路功能。

虚电路网络跟电路交换网络,有区别也有相似之处。

虚电路网络通信过程:

  1. 跟电路交换类似,虚电路在正式的数据通信之前,也需要先建立一个通信链路。(因此,虚电路相当于借助了电路交换的思想,又采用了分组交换的技术)。
  2. 通信过程:呼叫建立(call setup)—> 数据传输—>拆除呼叫
  3. 在虚电路建立时,会为这个虚电路分配一个ID:VCID,因此来标识后续分组传输时对应的虚电路路径。
  4. 在后续传输分组时,每个分组携带虚电路标识(VCID),而不是目的主机地址。携带相同VCID的分组就是沿着相同的虚电路进行传输,实现从源主机到目的主机的通信。
  5. 虚电路经过的每个网络设备(如路由器),维护每条经过它的虚电路连接状态。
  6. 优点:链路、网络资源设备(如带宽、缓存等)可以面向VC进行预分配
    • 预分配资源 = 可预期服务性能
    • 如ATM的电路仿真(CBR)

虚电路(VC)的具体实现

每条虚电路包括:

  1. 从源主机到目的主机的一条路径。所以虚电路在正式通信前,首先要确定一条路径,这条路径是从源主机到目的主机,并且经过的每个网络设备都需要参与这条路径的建立。
  2. 虚电路号(VCID),每条虚电路对应一个VCID编号。
  3. 由于虚电路号VCID的分配跟网络的带宽、资源等有关,带宽越多,能分配的虚电路就越多。因此,对于虚电路来说,当其穿过多个局部网络时,不可能都使用同一个虚电路号VCID。因此对于虚电路号VCID来说,其管理方式采用的是局部管理方式。
  4. 因此,虚电路上每个网络层设备(如路由器),由于每个局部网络的VCID是不同的,就需要利用转发表记录经过的每条虚电路。
  5. 在虚电路中,每个传输的分组都需要携带对应虚电路的VCID,而不是目的地址。
  6. 同一条VC,在每段链路上的VCID通常不同。
    • 路由器转发分组时,依据转发表改写/替换虚电路号

VC转发表

如下图所示,左边表示源主机,右边表示目的主机,采用虚电路进行通信。R1路由器的三个端口号,用1、2、3进行标识。红色线用来标识一条虚电路。

在这里插入图片描述

从图上可以看出,每一段虚电路上的VCID可能都是不同的。

由于虚电路上的每个路由器都需要参与记录虚电路的连接建立,需要有一个转发表来记录这些信息。

路由器R1的VC转发表如下所示:

在这里插入图片描述

  • 输入接口:上一段虚电路的数据输入接口。
  • 输入VC #:上一段虚电路的虚电路号VCID。
  • 输出接口:需要把这条虚电路接续到哪一个输出接口上去。
  • 输出VC #:在输出接口上,虚电路号应该替换成什么。

这样就可以实现,即使不同链路上虚电路号不同,也可以实现接续在一起,从而在源主机到目的主机之间,确定了一条虚电路。

总结:虚电路VC路径上每个路由器都需要维护VC连接的状态信息!

虚电路信令协议(signaling protocols)

由于虚电路在正式数据通信前,必须先建立起一条虚电路连接。因此,在虚电路网络里,就需要一条特殊的协议来支持虚电路的建立,维护和拆除。这类协议就叫做信令协议。

在这里插入图片描述

数据报网络

数据报网络提供的是无连接服务。Internet网络就是一种数据报网络。

由于是无连接网络,因此为了实现每个分组从源主机到达目的主机,需要在每个分组中携带目的地址。

作为网络层中的设备(如路由器),需要根据分组的目的地址来实现转发功能。

  • 基于路由协议/算法构建转发表
  • 检索转发表实现转发
  • 每个分组独立选路(路由器在转发时,会根据当前网络状态,选择适合的路径进行转发)

在这里插入图片描述

在上述示意图可以看到,从源主机发往目的主机的过程中,不同分组经过的路径可能是不同的。原因就是,网络中的路由器在传输这一系列分组时,可能重新更新了转发表,这时候就可能走不同路径。

路由器的转发表示例图如下所示:

在这里插入图片描述

从图中可以看出,上述转发表维护了每一个输入地址对应的下一个输出链路,以此来实现转发功能。而这里的地址实际上也就是IP地址,而我们知道IP地址是一个32位的(现在也出来64位的了),那么一个IP地址所占的空间就是4Byte,而网络中的设备是海量的,很容易造成存储、检索性能的瓶颈。

改进的方式就是,改进后在路由器的转发表中,不是采用记录每一个IP地址的方式,而是记录IP地址的范围:

在这里插入图片描述

这里的地址范围表示:检索符合某一个地址范围的IP地址,发往对应的输出链路。

更具体的目的地址范围的格式如下所示:

在这里插入图片描述

根据上面的转发表,构建网络的连接形式大致如下所示:

在这里插入图片描述

上述图例中,路由器转发表的地址划分是在一段连续的IP地址上的,且每个端口对应的地址范围是均等的。

Q:如果地址范围划分的不是这么“完美”会怎么样?

假设现在有另一个转发表如下所示:
在这里插入图片描述

上述目的地址的划分是不均衡的,假设现在有两个如下的IP地址:

DA1:11001000 00010111 00010110 10100001

DA2:11001000 00010111 00011000 10101010

根据上述转发表进行对比可以发现,第一个DA1符合的地址范围是第一条,对应的链路接口是0。而对于DA2不仅符合第二条地址范围,也符合第三条地址范围,此时应该选择哪一条链路接口输出?

由于在地址匹配时,匹配到的bit位越多,说明这个目的地址范围越具体,也就是对应的地址范围实际上是越少的(网络也就越小)。比如上图中的第三条,对应的目的地址范围实际上应该是多于第二条的。

因此,为了在传输时,能更精确的匹配目的地址范围,转发到更具体的下一跳网络中,路由器会采用最长前缀匹配优先原则。

最长匹配优先原则:在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口(entry)

数据报网络 OR VC网络

数据报网络比较有代表性的就是Internet网络,VC网络比较有代表性的就是ATM网络。下图展示了两种网络的特点总结:

在这里插入图片描述

在本节中,我们主要概况性的介绍了网络层提供的主要服务,与传输层的区别。在网络层中,我们重点需要掌握如何针对一个IP地址进行路由,这也是我们接下来重点介绍的部分。有兴趣的同学可以在大学生MOOC上也跟着哈工大计算机网络课程一起学习,也欢迎与我讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web 渗透测试攻防之浅述信息收集

前言 众所周知渗透测试的本质是信息收集,在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息,收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…

【前端布局篇】响应式布局 Bootstrap 移动端布局

前言 1. 布局介绍 布局:layout 对事物的全面规划和安排 页面布局:对页面的文字、图形或表格进行格式设置。包括字体、字号、颜色纸张大小和方向以及页边距等。 网页布局:利用html搭建结构与内容,使用CSS添加装饰 网页布局有很多种方式&a…

Flink 学习七 Flink 状态(flink state)

Flink 学习七 Flink 状态(flink state) 1.状态简介 流式计算逻辑中,比如sum,max; 需要记录和后面计算使用到一些历史的累计数据, 状态就是:用户在程序逻辑中用于记录信息的变量 在Flink 中 ,状态state 不仅仅是要记录状态;在程序运行中如果失败,是需要重新恢复,所以这个状态…

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略-计算机毕设 附源码87656

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略 摘 要 疫情之下,实体经济面临下行压力。2019年以来,新冠肺炎疫情卷土而来,各地地疫情防控形势严峻,许多中小微企业经营发展屡次遭受打击。面对疫情常态化的社会现实&#x…

[学习笔记] [机器学习] 13. 集成学习进阶(XGBoost、OTTO案例实现、LightGBM、PUBG玩家排名预测)

视频链接数据集下载地址:无需下载 学习目标: 知道 XGBoost 算法原理知道 otto 案例通过 XGBoost 实现流程知道 LightGBM 算法原理知道 PUBG 案例通过 LightGBM 实现流程知道 Stacking 算法原理知道住房月租金预测通过 Stacking 实现流程 1. XGBoost 算…

SPI协议(嵌入式学习)

SPI协议 概念时序SPI通信模式图四种通信模式 优缺点 概念 SPI(Serial Peripheral Interface)是一种串行外设接口协议,用于在数字系统之间进行通信。它被广泛应用于嵌入式系统和电子设备中,用于连接微控制器、传感器、存储器、显示…

Linux权限管理(超详解哦)

Linux权限 引言文件访问者的分类文件类型与访问权限文件类型访问权限 文件权限值的表示方法修改权限的指令chmod修改文件权限通过角色/-/权限来修改通过三个八进制数修改 chown修改所有者chgrp修改所属组umask修改或查看文件权限掩码文件创建时的权限 目录的权限粘滞位 总结 引…

【命令参数】SVN - 环境配置及常用命令参数

目录 环境配置 基本语法 参数指令 SVN是一款基于C/S架构的版本控制系统,能够实现对产品项目的版本托管以及对源码库的高效管理。而掌握SVN中的一些命令参数,一定程度上可以使日常效率得到进一步提升。 环境配置 为在调用时更加便捷,通常会…

我们如何实现业务操作日志功能?

1. 需求 我们经常会有这样的需求,需要对关键的业务功能做操作日志记录,也就是用户在指定的时间操作了哪个功能,操作前后的数据记录,必要的时候可以一键回退,今天我就为大家实现这个的功能,让大家可以直接拿…

哈尔滨工业大学计算机考研分析

关注我们的微信公众号 姚哥计算机考研 更多详情欢迎咨询 哈尔滨工业大学(A)考研难度(☆☆☆☆☆) 哈尔滨工业大学计算机考研招生学院是计算学部、计算学部(深圳)和计算学部(威海)…

C++完成烧烤节管理系统

背景: 这次我们结合今年淄博烧烤做一个餐厅管理系统,具体需求如下,我们选择的是餐饮商家信息管理 问题描述: 淄博烧烤今年大火,“进淄赶烤”是大家最想干的事情,淄博烧烤大火特火的原因,火的…

C语言之文件的读写(1)

前面三部分已经给大家介绍过了,网址发给大家方便大家复习 打开方式如下: 文件使用方式 含义 如果指定文件不存在 “r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错 “w”(只写) 为了输…

文心一言眼里的Java世界

目录 一、Java基础教程系列二、先听听文心一言怎么说?三、话不多说,开干。1、要有一个正确的Java学习路线,做一个细致的Java学习规划。2、学习资料推荐3、书中自有黄金屋,书中自有颜如玉4、自学周期推荐5、效率为先6、哪吒的学习方…

Redis 数据分布优化:如何应对数据倾斜?

Redis 核心技术与实战 笔记 作者: 蒋德钧 在切片集群中,数据会按照一定的分布规则分散到不同的实例上保存。比如,在使用 Redis Cluster 或 Codis 时,数据都会先按照 CRC 算法的计算值对 Slot(逻辑槽)取模&a…

Hi3861开发第一节:环境搭建,并顺利完成编译

本次教程在纯Windows下环境搭建!!! 1.DecEco Device Tool下载和安装 步骤一:下载devicetool-windows-tool-3.1.0.400.zip版,下载网址:https://device.harmonyos.c om/cn/develop/ide#download 步骤二:解压…

Win10连接网络打印机提示0x0000052e?

Win10连接网络打印机提示0x0000052e?Win10电脑中用户连接网络打印机的时候,出现了错误代码0x0000052e,导致用户无法正常使用网络打印机,这时候用户可以通过卸载最新补丁、替换系统文件并修改注册表等方法来解决问题。 方法一&…

Spring6 i18n国际化

随着互联网的发展,越来越多的企业和个人开始关注全球化的需求。在这个背景下,多语言支持成为了一个重要的课题。Spring框架作为一款优秀的Java开发框架,提供了丰富的i18N支持,能帮助搬砖工快速实现多语言应用。 1、i18n概述 国际…

【Android开发基础】计算器逻辑层代码补充

文章目录 一、引言二、设计1、案例2、算法设计 三、编码1、UI界面设计(1)按钮样式设计(2)主界面布局设计 2、编码(1)控件初始化(2)事件监听器 四、附件 一、引言 描述:关…

【深度学习】4-1 误差反向传播法 - 计算图链式法则反向传播

上一章中神经网络的学习是通过数值微分计算的神经网络的权重参数的梯度。数值微分虽然简单,也容易实现,但缺点是计算上比较费时间。本章将学习一个能够高效计算权重参数的梯度的方法一一误差反向传播法。 误差反向传播法能够高效计算权重参数的梯度的方法…