计算机网络-网络层详细讲解(持续更新中)
创始人
2024-03-09 10:02:52
0

网络层概述

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

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

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

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

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

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

网络层提供的两种服务

面向连接的虚电路服务

  • 可靠通信由网络自身来保证
  • 当两台计算机进行通信时,必须建立网络层的连接——虚电路VC(Virtual Circuit)
  • 通信双方沿着已建立的虚电路发送分组
  • 目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)
  • 这种通信结束后,需要释放之前所建立的虚电路。
  • 很多广域分组交换网都使用面向连接的虚电路服务。例如,曾经的X.25和主键过时的帧中继FR、异步传输模式ATM等。

 无连接的数据报服务

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

 采用这种思想的好处:网络的造价大大降低、运行方式灵活、能够适应多种应用

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

IPv4地址

IPv4地址概述

概述

  • IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
  • IP地址由因特网名字和数字分配机构ICANN进行分配。                                                                       我国用户可向亚太网络信息中心APNIC申请IP地址,需要缴费。                                               2011年2月3日,互联网号码分配管理局IANA(由ICANN行使职能)宣布,IPv4地址已经             分配完毕。                                                                                                                                    我国在2014年至2015年已逐步停止了向新用户和应用分配IPv4地址。同时全面开展商            用部署IPv6。
  • IPV4地址的编址方法经历了如下三个历史阶段:

 表示方法

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

 分类编址的IPv4

 A类地址

8位网络号第一个固定为0                 

可指派的网络数量为2^{(8-1)}-2=126 (减2的原因是除去最小网络号0和最大网络号127)

每个网络中可分配的IP地址数量为2^{24}-2=16777214(减2的原因是除去主机号全0的网络地址和全1的广播地址)

B类地址

16位网络号前两位固定为10

可指派的网络数量为2^{(16-2)}=16384

每个网络中可分配的IP地址数量为2^{16}-2=65534(减2的原因是除去主机号为全0的网络地址和全1的广播地址)

 C类地址

24位网络号前三位固定为110

可指派的网络数量为2^{(24-3)}=2097152

每个网络中可分配的IP地址数量为2^{8}-2=254(减2的原因是除去主机号为全0的网络地址和全1的广播地址)

练习

 

划分子网的IPv4地址

首先我们先来说明以下为什么要将IPv4地址划分子网。

如图:某单位有一个大型的局域网需要连接到因特网。申请了一个B类的网络地址,因此分配IP地址的数量达到了65534个,给每台计算机和路由器的接口分配一个IP地址后,还有大量IP地址剩余,这些剩余的IP地址只能由该单位的同一个网络使用,而其他单位的网络不能使用。

 随着发展需要将原来三个网络划分成三个独立的网络,需要将原来的网络划分成三个独立的网络假设子网1仍然使用原先申请到的B类网络地址,那么就需要为子网2和子网3个字申请一个网络地址。

 为新增网络申请新的网络号会带来以下弊端:

  • 需要等待时间和花费更多的费用
  • 会增加其他路由器中路由表记录的数量
  • 浪费原有网络中剩余的大量IP地址

为避免这种情况出现,可以从主机号部分借用一部分作为子网号,如图

子网掩码

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

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

划分子网的细节

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

【解析】

由网络号可知是C类网络地址           

         子网掩码                                             

 所以划分出的子网数量2^{1}=2

每个子网可分配的地址数量2^{(8-1)}-2=126(减2是要去掉主机号为“全0”的网络地址和“全1”的广播地址)

 练习

【习题】已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.192对其进行子网划分,请给出划分细节。

 【2019年 题39】某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0,如该主机向其所在子网发送广播分组,则目的地址可以是

 默认子网掩码

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

无分类编址的IPv4地址

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

  • 为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。

  • 1993年,IETF发布了无分类域间路由选择CIDR的RFC文档

  • CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念;

  • CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。

CIDR

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

【举例】

  •  CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。
  • 我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:              
  • 地址块的最小地址
  • 地址块的最大地址
  • 地址块中的地址数量
  • 地址块聚合某类网络(A类、B类和C类)的数量
  • 地址掩码(也可继续称为子网掩码)

举例

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

【解析】

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

【解析】


 路由聚合(构造超网)

  •  网络前缀越长,地址块越小,路由越具体
  • 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。

练习

 

IP地址的应用规划

定长的子网掩码FLSM

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

举例说明一下定长的子网掩码FLSM

我们先分析一下应用需求

 应用需求:将C类网络218.75.230.0划分成5个子网,每个子网上可分配的IP地址不少于各自的需求

由于划分成5个子网,因此可以从主机号借用3个比特作为子网号

子网数量:2^{3}=8

每个子网上的地址数量:2^{8-3}=32

 我们看一下划分子网的细节

通过本例可以看出,采用定长的子网掩码进行子网划分,只能划分出2^{n}个子网,其中n是从主机号部分借用的用来作为子网号的比特数量。每个子网所分配的IP数量相同,例如图中的网络5只需要4个IP地址 ,但是我们给它分配了32个IP地址,这样就造成了IP地址的严重浪费。

变长的子网掩码VLSM

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

示例:同样用上面的例子这次采用变长的子网掩码VLSM,首先我们分析每个子网的主机号位数、网络前缀位数、地址块、地址数量,如下:

 得出应用需求:从地址块218.75.230.0/24中取出5个地址块(1个“/27”地址块,3个“/28”地址块,1个“/30”地址块),按需分配给下图所示5个网络

在该地址块中给下图所示的网络N1~N5分配子块,分配原则是“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先给大的子块分配

 每个子网块中最小地址位网络地址,最大地址位广播地址

循环语句的机器级表示

用条件转移指令实现循环

 用条件转移指令实现循环,需要4个部分构成:

  1. 循环前的初始化
  2. 是否直接跳过循环
  3. 循环主体
  4. 是否继续循环

 用loop指令实现循环

loop Looptop等价于:

dec ecx

cmp ecx,0

jne Looptop   

理论上,能用loop指令实现的功能一定能用条件转移指令实现,使用loop指令可能会使代码更加清晰简洁

补充:loopx指令--如loopnz,loopz

loopnz--当ecx!=0&&ZF==0时,继续循环

loopz--当ecx!=0&&ZF==1时,继续循环

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...