计算机网络——网络层

article/2025/8/23 23:45:48

目录

4.1 网络层概述

4.2 网络层提供的两种服务

 面向连接的虚电路服务

无连接的数据报服务

4.3 IPv4地址

IPv4地址概述

分类编址的IPv4地址

划分子网的IPv4地址

 无分类编制的IPv4地址

IPv4地址的应用规划

4.4 IP数据报的发送和转发过程

4.5 静态路由配置

默认路由和特定主机路由

路由环路问题 

4.6.1 路由器选择协议

英特网所采用的路由选择协议又三个特点:

常见的路由协议:

路由器的基本结构

关于路由表

6.1.2 路由信息协议RIP的基本工作原理

 RIP的三个要点

RIP的基本工作过程

 4.6.3 开放最短路径OSPF的基本工作原理

基本介绍

实现原理

OSPF有以下五种分组类型

 OSPF的工作过程

OSPF在多点接入网络路由器中邻居关系的建立

4.6.4 边界网关协议BGP的基本工作原理

基本介绍

 BGP发言过程

4.7 IPv4数据报的首部格式

网际控制报文协议ICMP

​ 4.9 虚拟专用网VPN和网络地址转换NAT

VPN

 网络地址转换NAT


4.1 网络层概述

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

网络层三个主要问题:

1、网络层向运输层提供怎样的服务(可靠传输还是不可靠传输)

2、网络寻址问题

3、路由选择问题

网络层(网际层)除了 IP协议外,还有之前介绍过的地址解析协议ARP(详细请看第三章数据链路层),还有网际控制报文协议ICMP,网际组管理协议IGMP。

4.2 网络层提供的两种服务

 面向连接的虚电路服务

无连接的数据报服务

小结

4.3 IPv4地址

IPv4地址概述

点分十进制表示法

 

转换关系就是简单的十进制和二进制之间的转换 

分类编址的IPv4地址

不难发现,以上几种分类之间是互斥的。

A类地址 

B类地址 

 C类地址

划分子网的IPv4地址

为什么要有这个概念:

1、IP地址的利用率有时候很低

2、给每一个物理网络分配一个网络号会使得路由表变得太大因而使网络性能降低

3、两级的IP地址不够灵活

假设我们要将原来的网络划分成几个网络,按照原有的思路,我们只能申请新的网络号,申请新的网络号会带来弊端。

1、花费时间和费用

2、增加其他路由器中路由表记录的数量

3、浪费原网络中剩余的大量IP地址

例如:

某一个大型局域网需要连接到因特网:

如何解决这个问题?

从主机号中取一部分来作为子网号

 举例:

 

子网掩码存在的目的是为了确定有几位主机号被网络号(子网号)借用

子网源码使用连续的比特1来对应网络层和子网层

原有的IPv4地址和子网掩码相与可以获得IPv4地址所在子网的网络地址 

 无分类编制的IPv4地址

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

因此因特网工程任务组IETF又提出了无分址编址方式来解决地址紧张的问题

举例:

IPv4地址的应用规划

 IPv4地址的应用规划考虑得是给定一个IPv4地址块如何将其划分成几个更小的地址块(来满足多子网划分),并将这些地址块分配给互联网中不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址。

IPv4的应用规划有两种,定长的子网掩码划分FLSM变长的子网掩码划分VLSM。

1、定长的子网掩码划分FLSM

举例:

 

2、 变长的子网掩码划分VLSM

 每个子块的起点位置不能随意选取,只能选取块整数倍的地址作为起点,也就是比特位置上2^n的位置。最好是先给大的子块分配。(保证同一个网络具有相同的子网掩码)

 这种方法可以尽可能减少IP地址的浪费

4.4 IP数据报的发送和转发过程

IP数据包的发送和转发包含两个部分

1、主机发送IP数据报

2、路由器转发IP数据报

 例如:

A网络和C网络之间要进行数据报交互

我们知道,同一网络之间的数据报可以直接发送,这属于直接交付,不同网络之间发送数据报需要经过路由器转发,这属于间接交付

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

假设主机A要给主机D发送IP数据报,步骤如下:

(1)主机A将自己的IP地址与子网掩码相与,可以得到自己所在的网络地址。

(2)主机A知道主机D的IP地址,将自己的子网掩码和主机D的IP地址相与,如果结果和自己的网络地址相同,就知道处于同一个网络地址。反之则不在同一个网络,将IP数据报交给交换机转发。

(3)主机A将数据报交给自己的默认网关(默认路由器接口),由默认网关转发。

间接交付的过程:

需要注意的是,路由器是隔离广播域的,也就是广播只能在自己的网络范围内传播,路由器不会转发广播。 

4.5 静态路由配置

举例:静态路由配置

 假设路由器R2要向最左边的网络发送数据报,而自己的路由条目中没有相关信息,这时候可以通过管理员配置一条静态路由条目,实现该转发。

默认路由和特定主机路由

如R1最后一条所示,除了确定的条目,其他路由条目都会被默认路由处理(默认路由也是人工设置) 

如R1倒数第二条所示,在需要考虑某种安全问题或者网络管理人员对网络的管理和测试,可以针对某台特定主机设定一个特定路由,在路由表中为该主机设置一个路由条目。

路由环路问题 

由于错误添加下一跳IP产生的

 由于添加了不存在的网络产生的

解决方法:添加黑洞路由

如果某一条链路损坏,也可以暂时设置黑洞路由 

4.6.1 路由器选择协议

注意,4.6的内容都是关于动态路由选择的

路由器的选择协议分为两种:静态路由选择、动态路由选择

静态路由选择

动态路由选择:

 

英特网所采用的路由选择协议又三个特点:

1、自适应:动态路由选择,能较好的适应网络状态的变化。

2、分布式:路由器之间交换路由信息

3、分层次:将整个因特网划分成许多较小的自治系统

因特网分层次的路由选择协议举例:

将若干网络和路由器划分到一个自治系统中

自治系统之间使用外部网关协议EGP,自治系统内使用的是内部网关协议IGP 

(这里的网关就是路由器早期的说法,另外上面提到的EGP和IGP就是两个名称,不是两个具体的协议)

常见的路由协议:

路由器的基本结构

路由器:具有多个输入端口和输出端口的专用计算机,其任务是转发分组

路由器主要有两部分组成:

1、路由选择部分

核心构件是路由选择处理机,根据路由选择协议,周期性的和其他路由器进行路由信息交互,构建路由表。

2、分组转发部分

主要有:交换结构、一组输入端口、一组输出端口

 路由器的工作过程:

(1)物理层接收比特流信号,送链路层

(2)数据链路层从比特流中识别出帧,去掉帧头和帧尾后送网络层

(3)网络层根据分组类型处理,两种情况

如果是普通分组类型

(4)根据分组首部的目的地址进行查表(转发表)转发,找不到就丢弃

(5)网络层更新数据分组首部中某些字段的值,例如将数据分组的生存时间减1,送交数据链路层封装

(6)数据链路层封装成帧,送交物理层处理

(7)物理层将帧转换成比特流转发出去

完!

如果分组是路由器之间交换路由信息的路由报文

(4)将分组送交路由选择处理机

(5)路由选择处理机根据分组内容更新自己的路由表

完!

关于路由表

1、路由表一般仅包含从目的网络到下一跳的映射

2、路由表需要对网络拓扑变化的计算最优化

3、转发表是由路由表得出的

4、转发表的结构应当使查找过程最优化

(为了方便分析有时候我们并不严格划分路由表和转发表,更多说成路由表)

几个要点

路由选择处理机会周期性的向其他路由器发送自己知道的路由信息

路由去的各个端口还应该有输入缓冲区(暂存新进入来不及处理的分组)和输出缓冲区(暂存处理完毕来不及发送的分组)

每个端口其实都具备输入和输出的功能

6.1.2 路由信息协议RIP的基本工作原理

 需要注意的时,使用该协议一条路径最多包含15个路由器

当到达同一网络有多条“距离相等”的路由时,可以进行等价负载均衡。

 RIP的三个要点

1、仅和相邻路由器交换信息

2、交换自己的路由表

3、周期性交换

RIP的基本工作过程

举例:

根据RIP协议,工作流程如下:

 RIP路由协议的路由条目更新规则

 

C将自己的路由信息更新报文发送给D,同时将距离加一,下一跳设置为C (表示经过C转发)

 

C的路由表和D的路由表进行逐一比对,D根据C的报文更新自身的路由表

更新规则:

(1)新网络,更新

(2)更短的路径,更新

(3)发现网络拓扑发生改变,更新

(4)负载均衡,添加网络

(5)路径较长,不更新

RIP存在“坏消息传播得慢”的问题

图示线路出现故障,会发生下面的问题

 

 解决办法:

即使采用了这个措施,也不能完全消除这个问题。

 4.6.3 开放最短路径OSPF的基本工作原理

基本介绍

 关于代价的计算

 这里有一个重点,代价是由网络管理人员自行设定的,这里就体现出了和RIP协议(使用跳数)的一个不同之处。

实现原理

 1、OSPF相邻路由器之间通过交互问候分组(Hello),建立和维护邻居关系

协议号89表明使用的是OSPF协议

上面的接口指的是邻居和自己的哪个接口相连接

2、使用OSPF的每个路由器都会产生链路状态通告LSA

收到状态更新分组的路由器将从自己其他接口转发该分组(洪泛转发),让所有路由器都知道。

要点:

 ·使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA

·最终各路由器的LSDB达到一致,可用于计算最短路径(DJ算法)

3、构建各自的路由表

 各个路由器计算自己到其他路由器的最短路径(DJ算法),不对该算法解释(数据结构课有学)

OSPF有以下五种分组类型

 OSPF的工作过程

 

(1)先打个招呼(问候分组)

(2)描述分组,拿来比一下,要是都一样,就确认就好

(3)请求分组,需要哪些就请求哪些

(4)更新分组,回应请求分组

(5)完成所有,确定说再见

最终链路状态数据库同步

OSPF在多点接入网络路由器中邻居关系的建立

 没必要所有路由器都互为邻居,避免发送太多Hello分组。

为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域

主干区域负责与其他自治系统进行通信。这样就可以减少整个网络上的通信量。 

4.6.4 边界网关协议BGP的基本工作原理

基本介绍

BGP属于外部网关协议EGP的一类

目前使用最多的版本为BGP-4

这些考虑是由网络管理人员设置的,而不是协议本身

对于边界网关协议BGP,只能力求寻找一条能够到达目的的网络,且比较好的一条路由路径(不出现网络环路),并不是要找寻最佳路径。

 

根据以上步骤来构建出某个自治系统连通图 

BGP适用于多级结构的因特网

 BGP发言过程

 

BGP-4的四种报文

BGP刚运行时,BGP的临站会交换BGP路由表,以后只需要在路由情况发生变化时更新有变化的部分。

这样有利于节省网络带宽和减少路由器的处理开销。

4.7 IPv4数据报的首部格式

 

 举例:对IPv4数据报进行分片

 生存时间TTL :防止IP数据报在网络中永久兜圈

网际控制报文协议ICMP

 ICMP差错报告报文共有以下五种:

 

 

 以下情况不应该发送差错报告报文

 

 常见ICMP询问报告报文共有以下两种:

 4.9 虚拟专用网VPN和网络地址转换NAT

VPN

 

 网络地址转换NAT

 概述:

 NAPT

 一个问题:内网主机与外网主机的通信,是否能由外网主机首先发起?

 

 如果要实现,需要一些NAT穿越技术(这里不做赘述)

 至此,网络层的内容结束。

 参考资料:湖南科技大学——计算机网络微课堂


http://chatgpt.dhexx.cn/article/c8QsEE39.shtml

相关文章

详解网络层_计算机网络

目录 1. 网络层提供的两种服务 2. 网际协议IP 3.虚拟互联网络 4. IP地址 IP地址的划分方法 点分十进制 IP地址指派范围 IP地址的重要特点 5. IP地址与MAC地址 1. 网络层提供的两种服务 首先,网络层的引入主要是为了屏蔽不同网络的差异,实现不同网络…

计算机网络(四)_网络层

相关博文: 计算机网络入门 计算机网络物理层 计算机网络-数据链路层 与网络层相关的IP地址与子网掩码单独抽出于下 IP地址 计算机网络-域名与IP地址详解 子网掩码与子网划分 计算机网络-子网掩码与子网划分 文章目录 IP地址子网掩码与子网划分一些基本概念网络层提供…

应用层、传输层、网络层、数据链路层

应用层 包括:应用服务 (FTP(FileTransfer Protocol,文件传输协议)和DNS(Domain NameSystem,域名系统))发送HTTP请求DNS域名解析系统:提供通过域名&#xff0…

计算机网络之网络层

一、概述 网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。网络层是网络与网络之间通信的最底层,在数据从数据链路层向传输层进行数据传输的通信中&a…

计算机网络-网络层详细讲解

目录 网络层概述 网络层提供的两种服务 面向连接的虚电路服务 无连接的数据报服务 IPv4地址 IPv4地址概述 概述 表示方法 分类编址的IPv4 A类地址 B类地址 C类地址 练习 划分子网的IPv4地址 子网掩码 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特…

网络层

一、概述 1、网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从…

网络五大层介绍,看完你就懂

当前的网络协议是分层的:应用层,传输层,网络层,数据链路层,物理层 目录 应用层 传输层 UDP协议 数据报格式 TCP(传输控制协议) 报文格式 1.确认应答(核心) 2.超时重传 3.连接…

Android 4.4 沉浸式状态栏的实现

Android 4.4(kitkat)之后,Android Window 提供一个新的属性: WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS从名字上可以看出,这个属性可以用来设置状态栏是否透明,我们就可以利用这个属性来实现沉浸…

总结系列-一文搞懂沉浸式状态栏

近期做到与状态栏相关一些需求,网上关于沉浸式状态栏的文章有很多,基本上都先讲一堆概念,然后接着推出一个自己写的轮子,这类轮子面对很多不同场景的情况不能百分之百满足使用需求,过度地使用轮子也往往会让开发者不了解代码到底是怎么实现沉浸式的,基于…

安卓沉浸式状态栏

安卓沉浸式状态栏 前言安卓版本Android4.4之前Android4.4(API 19) - Android 5.0(API 21)1.图片沉浸1.1 xml实现1.2代码实现 2.ToolBar沉浸2.1xml实现2.1.1 设置 fitsSystemWindows 属性2.1.2 布局里添加占位状态栏 2.2代码实现2.…

Android-StatusBarUtil沉浸式状态栏

文章目录 一、前言二、去掉标题栏三、StatusBarUtil属性四、沉浸状态栏颜色五、沉浸状态栏图片 一、前言 大家再开发过程中会遇到上面这种情况,它不影响使用但是在美观上面差点意思,接下来教给大家一种方式来使它美观 二、去掉标题栏 只需要改变NoAction…

沉浸式状态栏(一)

我们知道IOS上的应用,状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允许开发者自定义状态栏背景颜色啦&#x…

安卓沉浸式状态栏,android沉浸式状态栏工具类封装

文章目录 前言二、使用步骤1.定义2.使用3.效果 前言 沉浸式状态栏对安卓6.0以上版本很简单,今天分享一个封装好的工具,供大家参考 二、使用步骤 1.定义 代码如下: package com.example.mystudy_kotlin.utilsimport android.app.Activity …

沉浸式状态栏实现

文章目录 郭霖的博客这样实现透明状态栏隐藏导航栏真正的沉浸式模式 轮子 郭霖的博客这样实现 Android状态栏微技巧,带你真正理解沉浸式模式 透明状态栏 新建一个项目,只放一张图片 可以看到 状态栏、ActionBar、底部导航栏都显示,现在修…

flutter沉浸式状态栏

方法1:修改MainActivity 在MainActivity.kt或MainActivity.java,判断一下版本号然后将状态栏颜色修改设置成透明,因为他本身是黑色半透明: Kotlin: class MainActivity: FlutterActivity() {override fun configure…

uniapp 沉浸式状态栏

uniapp 沉浸式状态栏 1.page.json 中设置 :“navigationStyle”:"custom" "globalStyle": {"navigationBarTextStyle": "black","navigationBarTitleText": "uni-app","navigationStyle":…

Android使用沉浸式状态栏

Android使用沉浸式状态栏 为什么使用? 我们App里面目前都没有做沉浸式状态栏,会导致状态栏呈黑色条状,而且下面这个的黑色条状与App红色主界面有很明显的区别。这样在一定程度上牺牲了视觉高度,界面面积变小。 可以对照比较这三张图 代码…

【Android实战】沉浸式状态栏实现(上)

传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别。这样就在一定程度上牺牲了视觉宽度,界面面积变小。 沉浸模式的状态栏和主界面完全融为了一体,在设计上有不同的视觉感受。 我们先上两张图,很容易看出区别&a…

Android 沉浸式状态栏

文章目录 Android 沉浸式状态栏前提情况一:使用FrameLayout情况二:使用CoordinatorLayoutfitsSystemWindows属性原理情况三:在CoordinatorLayout中添加子控件问题:解决: 情况四:使用FrameLayout实现沉浸式效…

Android实现沉浸式状态栏效果

关于沉浸式状态栏,给大家推荐一个非常好的博文android标题栏、状态栏图标文字颜色及背景动态变化 另外说明下,沉浸式状态栏的实现仅适用于 android 4.4及以上版本,4.4以下的就不要想了。 1. 实现秀明状态栏常规方法 //是否使用特殊的标题栏背…