计算机网络之网络层

一、概述

主要任务是实现网络互连,进而实现数据包在各网络之间的传输

1.1网络引入的目的

从7层结构上看,网络层下是数据链路层

从4层结构上看,网络层下面是网络接口层

至少我们看到的网络层下面是以太网

以太网解决了什么问题?

答:以太网解决了具体网络上主机间数据传输的问题;主机之间可以以物理地址,以广播的传输方式进行数据的交换传输

网络解决问题的基本方案

1)强制要求采用一种新的统一的网络连接方式(强制的统一成一种物理地址)

2)保留现有网络,重新定义一个虚拟的新的网络连接方式;求同存异

TCP/IP协议网络解决问题的方案

1.虚拟的IP互连协议

该协议为了实现网络互连,要求对有互连需求的网络,必须在将原有的网络数据转换成IP数据报格式,然后在虚拟IP网络上进行数据的传输

2.潜在的IP协议中要给出协议的转换功能(翻译功能)

3.同样要求在虚拟的IP协议中要给出数据传输状态的报告信息

上述三个内容最后都要转换为3个具体的协议,因此IP协议不是一个协议,是一族协议;只不过这一族中IP地位最强

1.2网络扩展后可采用的数据传输方式

 面向连接的虚电路服务

  • 可靠的通信由网络来保证
  • 必须建立网络层的连接----虚电路VC(Virtual Circuit)
  • 通信双方沿着已建立的虚电路发送分组
  • 目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。
  • 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
  • 通信结束后,需要释放之前所建立的虚电路

无连接的数据报服务

  • 可靠通信应当由用户主机来保证
  • 不需要建立网络层连接
  • 每个分组可走不同路径
  • 每个分组的首部必须携带目的主机的完整地址
  • 这种通信方式所传送的分组可能误码、丢失、重复和失序
  • 由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉
  • 因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。

1.3虚拟IP互连协议引入后数据的转发流程

1.直接交付

属于同一个虚拟逻辑网络和同一个现实物理网络上主机或主机接口之间数据的转发,只要解决目的地址IP地址对应的物理地址,就简单了,就利用物理地址直接在物理网络上进行传输了

属于同一个广播域(局域网)内的交付,可以利用ARP协议协议直接找到目的主机IP地址对应的物理地址,从而完成数据的交付

ARP怎么工作的,工作流程,解决的问题:IP->物理地址,数据链路层封装,

A,B是一家的,属于直接交付范围,怎么界定,通俗的老说就是姓氏相同 

2.间接交付

属于不同网络内的数据传输,因此无法直接找到目的地址主机的
MAC地址,只能将数据交付到网络出口路由器,因此,此时ARP协议并不是去寻找目的地址的MAC地址,而是寻找本网络出口路由器物理地址

A和C通信,隔着千山万水,借助第三方(邮筒),怎样把数据交付出去----中间路由器的接口和A属于同一个局域网,以广播的形式发给路由器,到网络层把真正的目的地提取出来了,在进行封装,交到C(MAC)

A-》C通信,一跳一跳的,路由器的作用就是传送数据(跳到网络层---数据真实的传输方向)换一个包装,向目的地传递,网络中传递数据,是一跳一跳的进行传输数据(传输数据的物理地址改变)大体方向不变,朝着目的地址走

ARP地址解析协议

在虚拟网络上的主机也必须有唯一的标识

虚拟统一网络的引入,为每一个在网络中的主机又提出了一个标识问题,在IP网络中就称为IP地址;也就是说在虚拟互连网络中每个接入主机必须有一个唯一的虚拟IP地址;这个是逻辑地址,与物理网络位置无关

虚拟网络是在现实物理网络上进行抽象总结抽象形成的,而现实网络上每台接入网络的主机都有一个固有的物理地址

两个地址之间的关系是什么,两个地址如何进行相互的转换

1)协议作用

应用进程看到的网络是统一的IP网络,因此它所描述的进程之间数据的传输是在统一一致的IP网络上进行传输;而这个统一的IP网络是在不同的现实物理网络上进行抽象的,所以虚拟网络间数据的传输必须要经过现实的物理地址才能完成真正的传输,就必须有个地址能完成两种地址之间的转换

封装成以太数据帧

 2)协议工作原理

A->B发送消息时,首先去查找自己的内存ARP表格,若找到对应的MAC地址则直接进行封装,转到介质上进行传输,否则,就封装一个数据链路层上的广播帧,去询问对应的IP的MAC地址

根据发送的性质:该协议只能解决同一个广播域(局域网)内,逻辑IP地址到物理MAC地址的转换问题

3)协议存在缺陷

协议本身工作是开放性的工作方式,缺乏验证机制 

1.4  IPv4地址

IPv4地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符

分类编址

 

  • A类地址网络号第1位固定为0,网络号后面部分不能全0,也不能全1,所以网络号范围是1~126
  • B类地址网络号前2位固定为10,网络号后面部分可以全取0或1,所以网络号范围是128.0~191.255
  • C类地址网络号前3位固定为110,网络后后面部分可以全取0或1,所以网络号范围是192.0.0~223.255.255
  • D类地址为多播地址,IP地址为224.0.0.0~239.255.255.255

 

 划分子网的IPv4地址

为什么需要划分子网?

比如一个单位有300台主机,此时需要申请一个B类网络地址,很容易得知,分配出去300个IP地址后,申请得到的B类网络还剩下很多IP地址。
当单位扩大规模,需要再添加两个子网的时,又要为这两个子网分别申请B类地址,这会花费一些不必要的支出,实际上子网1申请到的B类地址还有很多没用到,我们希望能够将这些剩余地址应用到其他子网中(节约地址)

如何实现子网划分?

32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

  • 子网掩码使用连续的比特1来对应网络号和子网号(子网号来自原先的一部分主机号)
  • 子网掩码使用连续的比特0来对应主机号
  • 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算【即掩码是1的部分】就可得到IPv4地址所在子网的网络地址

 无分类编址的IPv4地址

为什么需要?

划分子网在一定程度上缓解了因特网发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁

 

路由聚合

如路由器A上连接同一网络的多台主机,路由器B与A相连。若A将所有主机的具体IP地址都报给B,则路由器B中会增加多项路由条目。可实际上B向A中任意一个主机转发数据的时都是走同一个端口,因此我们可以将这些网络的共同前缀提取出来成为新的网络号,同时将剩余主机号置0放入路由器B中

如:A连接了172.1.4.0/25和172.1.7.0/24,则提取公共前缀聚合后变为172.1.4.0/22

IPV4地址的应用规划

对于一个给定的IP地址,我们又进行了内部的划分的重新分配,这样分配就称为内部子网的划分

权利对主机地址部分进行重新的组合,来表示内部使用方式的分配

定长掩码划分方式

对于一个给定IP地址,我们有权对主机地址部分进行重新的组合,来表示内部使用方式的分配

变长掩码划分方式

1.5IP数据报发送转发过程 

1.IP网络虚拟互连网络的互连设备-----路由器

路由器的作用:

1)工作在网络层上,意味着它能识别网络层上的数据传输格式

2)路由器按网络层上数据传输地址,进行有目的的数据转发

3)路由器有针对性的数据转发依赖于路由器中的路由表

2.IP网络中路由器转发分组的算法

特定 默认 一般的网络路由

同一个网络之间的主机可以直接通信,不同网络之间的主机通信需要路由器中转 

源主机如何判断目的主机是否和自己在同一个网络中?

将自身的IP地址与子网掩码相与得到自身的网络号1,再将目的IP地址与自身子网掩码相与得到网络号2。若两个网络号相等,则说明处在同一个网络 

主机如何知道应该把IP数据报交给哪个路由器进行转发呢?

通过设置默认网关。所谓默认网关,即当路由表中查不到数据时会将数据发往的路由器端口IP地址 

 静态路由配置

静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表

  • 这种人工配置方式简单、开销小。但不能及时适应网络状态的变化。一般只在小规模网络中采用
  • 可能由于:①配置错误 ②聚合了不存在的网络 ③网络故障 而出现路由环路错误
  • 默认路由为:0.0.0.0/0 。其作用是当路由表不知道往哪里转发时,就会往默认路由指定的下一跳位置转发,根据网络号最长匹配原理,默认路由网络号长度为0,因此一定是最后一个被匹配的条目
  • 特定主机路由:具体主机IP/32。网络号前缀长度32保证了这是第一个被匹配的静态条目

 如何防止错误路由导致IP数据报永久兜圈?

  1. IP数据报首部设置生存时间TTL字段
    • IP数据报进入路由器后,TTL字段的值减1若TTL的值不等于0,则被路由器转发,否则被丢弃
  2. 对于聚合后或由于网络故障而不存在的路由条目设置黑洞路由
    • 所谓黑洞路由,即路由器应该丢弃的路由

1.6 路由选择协议

因特网所采用的的路由选择协议主要特点

  • 自适应:动态路由选择,能较好地适应网络状态的变化
  • 分布式:路由器之间交换路由信息
  • 分层次:将整个因特网划分为许多较小的自治系统AS

路由信息协议RIP

基于距离向量的路由选择协议(应用层是UDP)   RIP协议(路由信息协议) 

动态的形成路由器上路由表的内容,作为数据包转发的依据

距离:是指去某一个网络所经过路由器的个数(跳数);一个路由器直接相连的网络距离为1;距离为16表示网络不可达1

工作原理:

1)通过与相邻路由器进行信息交互,完成AS内部路由的形成

2)相邻路由器之间相互交换彼此的全部路由表信息

3)固定时间进行一次交换20s-30s

RIP算法的工作流程:

基于最短距离来形成路由

  • RIP包含以下三个要点
    • 仅和相邻路由器交换信息
    • 交换的是各自路由表的信息
    • 周期性交换信息

RIP存在的问题

存在"坏消息传播很慢"的问题,又称为路由环路(两个路由器相互学习错误路由,造成循环)或距离无穷计数问题,这是距离向量算法的一个固有问题,可以采取多种措施减少出现该问题的概率或减小该问题带来的危害

  • 限制最大路径距离为15(16表示不可达)
  • 当路由表发生变化时就立即发送更新报文(即"触发更新"),而不是周期性发送
  • 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口反方向传送(即**“水平分割”“毒性反转”**)

开放最短路径优先OSPF

简单来说就是得到一个带权有向图,以当前路由器为起点,通过迪杰斯特拉算法得到到达某个点的最短路径

基于链路状态的路由选择协议(网络层 IP)  OSPF协议(开放最短路径优先算法形成的路由

OSPF协议:基于链路状态的路由协议、

链路状态:又只链路成本,就是数据在这条链路上传输所花费的时延,安全,费用等等信息所构成的

链路状态就是综合参数来形成路由协议

工作原理:(是网络层的协议)

(1)每个路由器将自己的状态数据摘要以洪范的方式向所有路由器进行转发

(2)所有路由器最终会获取到每个路由器的邻接关系和链路权重(即全网的网络拓扑结构)

(3)每个路由器以自己为根节点,采用迪杰斯特拉算法计算一个最小生成树,到达每个路由器

(4)路由稳定后,只有链路状态发生改变时,才将改变的路由状态发给所有路由器以便重新计算路由

边界网关协议BGP

尽力寻找一条能够到达目的网络且比较好的路由(不兜圈子),而并非找最佳路由

内部网关协议IGP(如路由信息协议RIP或最短路径优先OSPF)

  • 设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络
  • 无需考虑自治系统外部其他方面的策略

外部网关协议EGP(如边界网关协议BGP)

  • 在不同自治系统内,度量路由的"代价"(距离,宽带,费用等)可能不同。因此,对于自治系统之间的路由选择,使用"代价"作为度量来寻找最佳路由是不行的
    • 比如A系统路由选择度量是距离,B系统是带宽……那么A到系统E的路由怎样走最好呢?由于没有统一度量,所以不能直接得到最佳路由
  • 自治系统之间的路由选择必须考虑相关策略(政治、经济、安全等)
    • 如中国的数据报尽量要绕开美国的自治系统

 1.7IPv4数据报首部格式

  • 版本

    4比特,表示IP协议版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本为号为4(IPv4)

  • 首部长度

    4比特,表示IP数据报首部长度。该字段取值以4字节为单位

    最小十进制取值为5,表示IP数据报首部只有20字节4字节单位,所以取值5对应20字节】固定部分

    最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分

  • 总长度

    16比特,表示IP数据报的总长度【首部+数据载荷】,最大取值为十进制65535以字节为单位

  • 可选字段

    长度从140个字节不等。用来支持排错、测量及安全等措施

    可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用

  • 填充字段

    确保首部长度为4字节长度的整数倍,使用全0进行填充

1.8网际控制报文ICMP 

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP

  • 主机或路由器使用ICMP来发送差错报告报文和询问报文
  • ICMP报文被封装在IP数据报中发送

回答报文类型

终点不可达

当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络位置、目的主机未知等13种错误 

源点抑制

当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报发送速率放慢 

时间超过

当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段值减1。若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文

当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文

 参数问题

当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文

改变路由(重定向)

路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)

如主机1的默认路由是R1,信息经过R1时,R1发现最佳路由不是自己,而是R2,所以通过ICMP告知主机1

1.9虚拟专用网VPN

利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
虚拟专用网中各主机所分配的地址应该是本机构可自由分配的专用地址 

 1.10网络地址转换NAT

NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源【为了节省IPv4地址】

由于绝大多数的网络应用都是使用运输层协议TCPUDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。

这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换NAPT

 

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

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

相关文章

计算机网络之应用层

一、概述 引入目的: 为了方便用户去使用; 该如何方便用户使用网络呢,即怎样帮助用户使用网络? 1.用户需要知道网络资源所在的位置 2.网络上资源一定是在资源子网的主机上 3.资源子网上的主机,在通信子网中用IP地…

qt-C++笔记之终端Ctrl+C关闭界面和ROS节点

qt-C笔记之终端CtrlC关闭界面和ROS节点 code review! 文章目录 qt-C笔记之终端CtrlC关闭界面和ROS节点1.运行2.main.cpp3.main_window.hpp 1.运行 2.main.cpp 3.main_window.hpp

SpringCloud 微服务全栈体系(十六)

第十一章 分布式搜索引擎 elasticsearch 六、DSL 查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1. DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)来定义查询。常见的查询类型包括&#xff1…

【数据结构(C语言)】浅谈栈和队列

目录 文章目录 前言 一、栈 1.1 栈的概念及结构 1.2 栈的实现 1.2.1. 支持动态增长的栈的结构 1.2.2 初始化栈 1.2.3 入栈 1.2.4 出栈 1.2.5 获取栈顶元素 1.2.6 获取栈中有效元素个数 1.2.7 检查栈是否为空 1.2.8 销毁栈 二、队列 2.1 队列的概念及结构 2.2 队…

Javaweb之前后台分离开发介绍的详细解析

2.1 前后台分离开发介绍 在之前的课程中,我们介绍过,前端开发有2种方式:前后台混合开发和前后台分离开发。 前后台混合开发,顾名思义就是前台后台代码混在一起开发,如下图所示: 这种开发模式有如下缺点&a…

使用vcpkg安装库失败的解决方法

1、前言 vcpk是是一款开源的c/c库管理工具,尤其是在windows平台,可以帮助我们很好的管理各种依赖包。 在windows环境做c/c开发的人应该都深有体会,有时候编译需要下载一堆依赖库,导致搭建编译环境特别麻烦。但是,通过v…

前端 vue 面试题(二)

文章目录 如何让vue页面重新渲染组件间通信vue为什么要mutation、 action操作插槽、具名插槽、作用域插槽vue编译使用的是什么库?vue怎么实现treeshakingwebpack实现treeshaking为什么只有es module 能支持 tree shaking mixin 的作用mixin的底层原理nexTick原理vue…

预处理机制

跟着肯哥(不是我)学预处理机制 预处理类别 宏定义:#define 将文本替换为表达式或语句 条件编译:#ifdef、#ifndef和#if、#elif、#endif 根据标识符是否被定义选择编译代码 头文件包含:#include 将其他文件&#x…

Jmeter怎么实现接口关联?

用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取。 1、打开jmeter,新建一个测试计划,在测试计划里新建一…

将所有图片居中对齐

Ctrl h 调出替换框 ^g表示所有图片 格式里面选择段落 全部替换

winlogbeat采集windows日志

下载链接 https://www.elastic.co/cn/downloads/past-releases/winlogbeat-7-16-2 配置文件 # ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch:# Array of hosts to connect to.hosts: ["192.168.227.160:9200&…

Vue3中如何响应式解构 props

目录 1,前言2,解决2.1,利用插件,实现编译时转换2.2,toRef 和 toRefs 1,前言 Vue3 中为了保持响应性,始终需要以 props.x 的方式访问这些 prop。这意味着不能够解构 defineProps 的返回值&#…

Navicat 技术指引 | 适用于 GaussDB 的数据迁移工具

Navicat Premium(16.2.8 Windows版或以上) 已支持对 GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结构同步、协同合作、数据迁移等),这…

Cesium 展示——地球以及渲染数据导出(下载)为图片或 pdf

文章目录 需求分析新加需求分析第一种方式第二种方式需求 将 Cesium 球体以及渲染数据导出为 jpg/png/pdf 分析 获取场景 scene 信息,转为image 的 octet-stream 流 进行下载为图片 /*** @todo canvas 导出图片* @param {string} dataurl - 地址* @return {Blob}*/ functio…

设备健康管理平台助力锂电企业实现可持续发展

随着锂电池产业的快速发展,设备的稳定运行和精准维护对于锂电企业来说至关重要。传统的设备维护方式在效率和全面性方面存在局限,无法满足锂电行业对设备管理的需求。然而,通过设备健康管理平台的引入,锂电企业现在可以充分发挥其…

【LeetCode:1410. HTML 实体解析器 | 模拟+哈希表+字符串+库函数】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【C语言】中,输入一个数组,实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

本篇文章中,我们将讲述在C语言中,输入一个数组,如何用for循环实现将输入的n个数字按照从大到小输出。 一.定义数组并初始化 首先,我们定义一个整形的数组并将其初始化。输入n,来决定数组中整数的个数。 然后用for循…

通过HTML网页对mysql数据库进行增删改查(CRUD实例)

首先我们得了解一下大致的架构 ,如下: 我们采用自底向上的方式进行开发, 一、先写mysql数据库 二、再写java后端(Spring MVC架构)(这个是什么东西不懂不要紧,跟着步骤做就行了) 三、最后写前端页面(HTML) 一、 Mysql数据库部分 我们要通过网页对数据库进行开发,…

解决:Gitee + PicGo配置图床失败

解决:Gitee PicGo配置图床失败 PicGo安装插件的时候选择:gitee-uploader,不要选择gitee! 在Gitee新建的图床仓库中设置一个images文件夹,用来保存上传的图片,但是要注意在PicGo中的path中要写上路径/img…

数据库基础入门 — SQL运算符

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…