计算机网络-网络层上篇

news2024/12/24 9:17:18

目录

一、网络层概述

二、网络层提供的两种服务

(一)面向连接的虚电路服务

(二)无连接的数据报服务

(三)虚电路服务与数据报服务的比较

三、IPv4地址及其应用

(一)IPv4地址概述

(二)分类编址的IPv4地址

1、A类地址

2、B类地址

3、C类地址 

(三)划分子网的IPv4地址

(四)无分类编址的IPv4地址

(五)IPv4地址的应用规划

1、定长的子网掩码FLSM

2、边长的子网掩码VLSM

3、例题

四、IP数据包的发送和转发过程

五、静态路由配置及其可能产生的路由环路问题

(一)静态路由

​(二)默认路由

(三)特定主机路由

(四)路由环路问题

1、静态路由配置错误导致的路由环路问题

2、聚合了不存在的网络导致的路由环路

3、网络故障导致的路由环路


一、网络层概述

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

要实现网络层任务,需要解决以下主要问题:

  • 网络层向运输层提供怎样的服务 (“可靠传输”还是“不可靠传输”)
  • 网络层寻址问题
  • 路由选择问题

因特网 (Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈

由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层

综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。

二、网络层提供的两种服务

(一)面向连接的虚电路服务

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

通信结束后,需要释放之前所建立的虚电路。
很多广域分组交换网都使用面向连接的虚电路服务例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。

然而,因特网的先驱者并没有采用上面这种服务,而是采取了无连接的数据报服务。 

(二)无连接的数据报服务

可靠通信应当由用户主机来保证
不需要建立网络层连接
每个分组可走不同的路径
每个分组的首部必须携带目的主机的完整地址

这种通信方式所传送的分组可能误码、丢失、重复和失序
由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)

因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘 (用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。

(三)虚电路服务与数据报服务的比较

由于TCP/IP体系结构的因特网的网际层提供的是简单灵活、无连接的、尽最大努力交付的数据报服务,因此本章主要围绕网际层如何传送IP数据报这个主题进行讨论。 

三、IPv4地址及其应用

(一)IPv4地址概述

在TCP/IP体系中,IP地址是一个最基本的概念,我们必须把它弄清楚。

IPv4地址就是给因特网(lnternet) 上的每一台主机 (或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符
IP地址由因特网名字和数字分配机构ICANN(Intemet Corporation for Assigned Names and Numbers)进行分配

  • 我国用户可向亚太网络信息中心APNIC(Asia Pacific Network lnformation Center)申请IP地址,需要缴费
  • 2011年2月3日,互联网号码分配管理局IANA (由ICANN行使职能)宣布,IPv4地址已经分配完毕
  • 我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。

IPv4地址的编址方法经历了如下三个历史阶段

32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。 

8位无符号二进制整数转十进制数的转换方法 

十进制正整数转8位无符号二进制数的转换方法 

(二)分类编址的IPv4地址

1、A类地址

2、B类地址

注意:有些教材中指出128.0是保留网络号,B类第一个可指派的网络号为128.1。
但根据2002年9月发表的RFC 3330文档,128.0网络号已经可以分配了。有兴趣的同学可以自行查询以128.0开头的IP地址,看看它们属于哪些国家

3、C类地址 

注意:有些教材中指出192.0.0是保留网络号,C类第一个可指派的网络号为192.0.1。
但根据2002年9月发表的RFC 3330文档,192.0.0网络号已经可以分配了。只不过目前还没有分配出去。

总结: 

(三)划分子网的IPv4地址

为什么会出现划分子网?

举例:假设子网1本来是一个公司的所有设备,申请的是B类子网,但是只使用了子网的一部分IP地址,当后续公司扩展,新建了其他子网,此时如果继续申请B类子网, 不仅会浪费原有B类子网的IP地址,还需要等待时间和花费更多的费用。所以就出现了子网划分。在主机号中取一部分的比特当成子网号

如果未在图中标记子网号部分,那么我们和计算机又如何知道分类地址中主机号有多少比特被
用作子网号了呢?

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

  • 子网掩码使用连续的比特1来对应网络号和子网号
  • 子网掩码使用连续的比特0来对应主机号
  • 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址

【举例】已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节
【解析】

默认的子网掩码是指在未划分子网的情况下使用的子网掩码

(四)无分类编址的IPv4地址

划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC1517~1519和1520。

  • CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念
  • CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。

CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量

CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块“

我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节

  • 地址块的最小地址
  • 地址块的最大地址
  • 地址块中的地址数量
  • 地址块聚合某类网络(A类、B类或C类)的数量地址掩码(也可继续称为子网掩码)

【练习】请给出CIDR地址块128.14.35.7/20的全部细节(最小地址,最大地址,地址数量,聚合
C类网数量,地址掩码)。

解析

路由聚合 

(五)IPv4地址的应用规划

1、定长的子网掩码FLSM

  • 使用同一个子网掩码来划分子网
  • 子网划分方式不灵活: 只能划分出2”个子网(n是从主机号部分借用的用来作为子网号的比特数量)
  • 每个子网所分配的IP地址数量相同容易造成IP地址浪费

2、边长的子网掩码VLSM

  • 使用不同的子网掩码来划分子网
  • 子网划分方式灵活: 可以按需分配
  • 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费

3、例题

【举例】假设申请到的C类网为218.75.230.0,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址

我们需要将C类网络218.75.230.0划分成5个子网,每个子网上可分配的IP地址数量不得少于各自的需求

因为是5个子网,所以需要3位比特位作为子网号

划分出来的8个子网如下,从其中挑选5个分配即可:

【举例】假设申请到的地址块为218.75.230.0/24,请使用变长的子网掩码给下图所示的小型互联网中的各设备分配IP地址

首先分析至少需要多少位主机位才能满足需要

我们需要从地址块218.75.230.0/24中取出5个地址块(1个“/27”地址块,3个“/28”地址块,1个“/30”地址块),按需分配给5个网络

四、IP数据包的发送和转发过程

IP数据报的发送和转发过程包含了以下两个部分:

  • 主机发送IP数据包
  • 路由器转发IP数据包

以下是两个网络,由路由器R相连,不同网络间的主机相互发送数据属于间接交付,同个网络内的属于直接交付。 

源主机是如何知道目的主机是否与自己在同一网络中?

将目标主机的IP地址与自己的子网掩码相与,结果不为自己的网络地址则属于不同网络。如下图,将F地址与C的子网掩码相与,结果与C的网络地址不同,就知道了F与自己不在同一网络内。

主机C如何知道路由器R的存在?S1网络内的主机的默认网关为R路由器端口0的IP地址,主机发送跨网络的数据报会发送到默认网关也就是路由器R。路由器R接收到数据报后会如何进行转发?

  • 检查IP数据报首部是否出错:若出错,则直接丢弃该IP数据报并通告源主机;若没有出错,则进行转发
  • 根据IP数据报的目的地址在路由表中查找匹配的条目:若找到匹配的条目,则转发给条目中指示的下一跳若找不到,则丢弃该IP数据报并通告源主机

对于广播数据报,路由器不转发,也就是路由器即隔离冲突域,也隔离广播域

五、静态路由配置及其可能产生的路由环路问题

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

  • 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化
  • 一般只在小规模网络中采用

使用静态路由配置可能出现以下导致产生路由环路的错误

  • 配置错误
  • 聚合了不存在的网络
  • 网络故障

(一)静态路由

路由器R1同个自己的接口0所配置的IP地址和地址掩码,可以自动得出接口0所在的网络,,由于接口0与该网络直连,则下一跳不是路由器地址,而是通过接口0转发IP数据报给该网络中的某个主机,这属于直接交付。这条自动得出的路由条目的类型属于直连路由。R1的1号端口和R2的两个端口也同理。但如果R1要发送IP数据报给网络192.168.2.0/24,此时可以使用路由器的相关配置命令,给R1添加一条到达该目的网络的路由条目。该路由条目是我们人工配置的静态路由,目的网络为目的网络的地址,下一跳则是R2的0号端口 

(二)默认路由

如果是发送IP数据报给R2连接的因特网, 由于因特网中包含了众多的网络,如果我们给R1的添加针对这些网络的每一条路由条目,则会给人工配置带来巨大的工作量,并且使R1的路由表变得非常大,降低了查表转发的速度。实际上,对有相同下一跳的不同目的网络的路由条目,可以用一条默认路由条目来替代。默认路由条目中的目的网络地址为0.0.0.0,地址掩码也为0.0.0.0,其CIDR形式为0.0.0.0/0。在本例中,默认路由的下一跳地址为R2的0号端口,由于是人工配置,因此也为静态路由,当没有路由表项匹配目的地址时,自动发送至默认路由

(三)特定主机路由

特定主机路由一般用于网络管理人员对网络的管理和测试,另外,在需要考虑某种安全问题时,也可采用特定主机路由。特定主机路由的目的网络为特定主机的IP地址,地址掩码为255.255.255.255,其CIDR形式为特定主机IP地址/32,在本例中,特定主机路由的下一跳地址为R2的0号端口,由于是人工配置,因此也为静态路由。可以看到特定主机路由的网络前缀最长,路由最具体,而默认路由前缀最短,路由最模糊,当路由器查表转发IP数据报时,有多条路径可选的情况下,选择前缀最长的路由条目进行转发。

(四)路由环路问题

1、静态路由配置错误导致的路由环路问题

例子基本情况如下:

当R2要转发数据报到网络192.168.1.0/24,下一跳转发的应该是R1的接口0,此时如果错误的配置R2的静态路由表项下一跳地址为R3的端口0,就会出现路由环路

 

为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段,IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。 

2、聚合了不存在的网络导致的路由环路

共同的前缀聚合出一个路由。

当R2想发送到网络192.168.3.0/24,此时R1所连接的网络中不存在改网络,但是在R2的路由表中却有对应的路由条目,所以会转发到R1的1号端口,而R1找不到对应的路由条目,又会转发到默认路由,即R2的0号端口。

可以在R2的路由表中配置聚合网络中不存在的黑洞路由,本质上是路由器内部的一个虚拟接口,让IP数据报有来无回,相当于丢弃该数据报、

3、网络故障导致的路由环路

R1连接的192.168.1.0/24线路发生故障, 会删除路由表相应的路由条目,但是R2不知道,所以发送到该网络的数据报会进入R1的1号端口,然后又走R1的默认路由,发生路由环路。

可以配置黑洞路由,当线路故障,删除相应的路由条目时,添加对应网络的黑洞路由。当网络线路恢复正常,会使黑洞路由失效,添加正常的路由条目。当线路故障,会自动删除路由条目,恢复黑洞路由。

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

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

相关文章

【AI底层逻辑】——篇章4:大数据处理与挖掘

目录 引入 一、大数据概述 二、数据处理的流程&方法 1、数据收集——“从无到有” 2、数据加工——“从有到能用” 3、数据分析 三、大数据改变了什么 往期精彩: 引入 AI的表现依赖大数据。曾经一段时间,对于图像识别的准确率只能达到60%~70…

BUUCTF 还原大师 1

题目描述: 我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4D…

Elasticsearch 集群日志收集搭建

Elasticsearch-7.2.0Logstash-7.2.0Kibana-7.2.0-Filebeat-7.6.0 第一台集群内网ip:10.0.0.223 ES配置文件:/es_data/es/elasticsearch-7.2.0/config/elasticsearch.yml ES启动命令:/es_data/es/elasticsearch-7.2.0/bin/elasticsearch cl…

报道|本科专业对收入影响巨大!最高以及最低收入的专业有这些

作者:Aimee Picchi 编者按 本文引用并翻译了发表在美国CBS的最新研究,希望能给刚高考完正在挑选大学以及专业的准大学生们一点帮助哦。 最新的研究发现,一个学生的专业和母校能明显地影响ta毕业四年后的收入水平。HEA Group的调查显示&#x…

Jenkins + gitlab 自动部署

1. 背景 作为后台开发,每次我们开发完或者修改一个bug后都要手动合并,打包或者连接服务器执行打包部署命令,每次手动操作,极大的影响了我们的开发效率,那么有没有一款工具能让我们只需要推送/合并代码到远端就能实现服…

【小沐学Python】Python实现Web服务器(Flask框架扩展:Flask-SQLAlchemy)

文章目录 1、简介2、安装3、开发3.1 数据库连接字符串3.2 SQLAlchemy参数设置3.3 SQLAlchemy字段类型3.4 SQLAlchemy列选项3.5 SQLAlchemy关系选项3.6 SQLAlchemy操作接口 4、代码测试4.1 用户管理4.2 用户角色管理4.3 学生管理4.4 图书管理 结语 1、简介 SQLAlchemy SQLALche…

windows下安装Visual Studio + CMake+OpenCV + OpenCV contrib+TensorRT

目录 1 安装visual studio 2 安装CMake 3 OpenCV源码安装 3.1 OpenCV源码下载 3.2 OpenCV contrib源码下载 3.3 安装OpenCV 3.4 安装OpenCV-crontrib 3.5 VS生成代码 4 环境配置 5 TensorRT安装 5.1 TensorRT安装 5.2 Python下安装TensorRT库 最近在研究windows系统…

Android学习_Mars老师之Mp3视频开发

实现的功能&#xff1a;开发一个可以播放音乐并同步显示歌词文件的APP. 成果展示&#xff1a; 总体设计图&#xff1a; 实现流程图 代码展示&#xff1a; AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:androi…

信道编码:MATLAB使用卷积编译码函数

信道编码&#xff1a;MATLAB 使用Conv函数 1. 相关函数 在进行卷积编码的过程中&#xff0c;使用的函数是convenc()函数和vitdec()函数&#xff0c;同时需要poly2trellis()函数。 1.1 poly2trellis()函数 先看poly2trellis()函数,用来生成卷积编码所需要的网表。 trellis …

svn commit 用法

转载   原文&#xff1a;https://blog.csdn.net/qq_39790633/article/details/103700391 使用svn进行代码的提交有两种方法&#xff1a;一种是通过TortoiseSVN客户端界面进行提交&#xff0c;另一种是通过svn commit指令提交。 方法一&#xff1a;通过TortoiseSVN客户端界面提…

【Python 随练】文本颜色设置

题目&#xff1a; 文本颜色设置 简介&#xff1a; 在本篇博客中&#xff0c;我们将学习如何在Python中设置文本的颜色。我们将介绍一个常用的库&#xff0c;并提供代码示例来演示不同颜色的设置。 问题分析&#xff1a; 我们需要在Python中设置文本的颜色&#xff0c;以增…

3.2迷宫求解

首先我没 看懂数据结构书上写得迷宫 求解 不过 不重要了 迷宫求解 需要先有个 迷宫 游戏 以下 是 Java写的 控制台迷宫游戏 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;public class MazeGameJ {public static void main(St…

云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)

前言&#xff1a; kubesphere的离线化部署指的是通过自己搭建的harbor私有仓库拉取镜像&#xff0c;完全不依赖于外部网络的方式部署。 我的kubernetes集群是一个单master节点&#xff0c;双工作节点&#xff0c;总计三个节点的版本为1.22.16的集群。 该集群只是初始化完成了…

在Excel当前窗口显示最后一行数据

大家也许都知道Excel工作表中数据行数较多&#xff0c;使用<Ctrl下箭头>组合键可以快速定位最后一行&#xff0c;但是如果数据不是连续的&#xff08;也就是工作表中包含空行&#xff09;&#xff0c;这个方式就只能定位到当前连续数据区域的最后一行。 如下实例代码可以…

Visual Studio2019更改并下载.Net Framework目标框架

一、问题 当使用.net进行开发时&#xff0c;开发的项目与.net framework目标框架会非常密切相关的&#xff0c;所以当vs本地使用的.net framework框架与该项目工程的框架不一致的时候&#xff0c;就可能打开不了当前项目&#xff0c;解决这个问题的方法有&#xff1a; 第一种…

方向导数和梯度

理性认识的三个阶段&#xff1a;定义、判断、推理。 有位博主说过&#xff0c;数学中&#xff0c;定义占60%的内容。 方向导数定义如下&#xff1a; 注意的一点是&#xff1a; 该处的alpha&#xff0c;beta角度关系是alpha beta pi/2。t*cos alpha &#xff0c;t * cos …

两百行代码实现简易点云标注工具

夏天来了非常热&#xff0c;LZ周末不想出去玩&#xff0c;于是乎继之前的图片标注工具利用两个晚上写了一个简单的点云标注工具。该工具基于Qt5.14.2-msvc2017&#xff08;其实LZ的VS版本是2019&#xff0c;似乎兼容&#xff09;平台C语言开发&#xff0c;用到的第三方库为PCL1…

ModaHub魔搭社区:“百模大战”下,字节跳动选择做一个“大模型商场”

“火山方舟”面向企业提供模型精调、评测、推理等全方位的平台服务&#xff08;MaaS&#xff0c;即Model-as-a-Service&#xff09;&#xff0c;目前集成了百川智能、出门问问、复旦大学MOSS、IDEA研究院、澜舟科技、MiniMax、智谱AI等多家AI科技公司及科研团队的大模型。 这种…

通过elementui的el-table实现table嵌套展示

el-table属性&#xff1a; :expand-row-keys: 可以控制行的展开和关闭&#xff0c;也可以控制只能有一行进行展开 expand-change&#xff1a;是表格行的切换事件&#xff0c;具体方法如下 el-table-column属性&#xff1a; type"expand" &#xff1a;表示如果有子t…

从网上复制shell脚本 到 linux下运行 碰到的各种问题汇总

从网上复制shell脚本 到 linux下运行 碰到的各种问题汇总 快捷键CtrlU查看网页源码 一、报错现象&#xff1a;: No such file or directory 解决方法&#xff1a;在linux系统下执行&#xff1a;dos2unix filename 问题原因&#xff1a;本质是文件中二进制符号^M乱码问题 参考…