计算机网络之网络层
一、概述
当源端和目的端位于不同网络的时候,直接通信是不可行的,此时就需要由网络层解决。
如果我们把物理层和数据链路层比作市内交通,那么网络层就可以比作连接不同城市交通的中转车站、机场或码头。
就像中转车站、机场或码头可以把来自其他城市的旅客送到下一站或本市目的地一样,网络层可以把来自其他网络中的数据传送到下一个途经的网络或本网络中的目的节点。
而路由器就相当于连接不同城市公路的中转车站,起数据中转作用。
1、为什么需要网络层呢?
因为不同网络有不同的网络层协议和地址规范,一个网络中的用户若不能识别其他网络的通信协议和地址规范,就不能把数据从一个网络传送到另一个网络中。
就像不同城市有不同的交通法规,属于不同的交警系统管理,不允许外地车辆随便出入一样,不同网络也有不同的设计规范,属于不同的组织来管理,必须通过授权,并由专门的协议来负责网络间的通信。
注意:局域网内部通过MAC地址寻址,而网络间的寻址是通过IP地址进行的。
2、网络通信的两种情况
如果通信双方在同一局域网内,可直接通过数据链路层进行相互通信
如果通信双方在不同网络内,则要通过三层地址(如IP地址)进行
注意:二层设备指能识别mac地址的设备,三层设备指能识别ip地址的设备。
那为什么就不能直接通过二层的帧在不同网络中进行传输呢?
不同网络中的统一标识就是三层地址(如IP地址),它不能识别二层的MAC地址,三层IP包封装成帧后,其中封装的源和目的IP地址作为帧的数据部分,不会改变。这些信息就是用来进行三层寻址的,且这些信息在帧传输过程中是不会改变的。
A网络发送给B网络的帧,在转发过程中,帧的MAC地址不断变化,但是IP地址永远不变。因为要不断靠MAC地址在局域网中寻找下一个转发节点或目的节点。
二、网络层主要作用
1、屏蔽网络差异,提供透明传输
网络层能够解决不同网络的规范要求差异,寻找一个不同网络间能共同遵守的网络通信规范,以便不同网络间能相互识别,并接受对方的访问请求。
这样传输层就可以在不同网络间进行透明(也就是不管不同网络间的差异,就像通信双方是直接互连一样)数据传输了。
网络层向传输层提供的服务:
①面向连接的网络服务:虚电路服务
②无连接的网络服务:数据报服务
2、为网络间通信提供路由选择
能根据一定的原则和路由选择算法在多个结点的通信子网中选择一条到达目的节点的最佳路径
3、数据包封装和解封装
对来自传输层的报文(或多个数据段)的头部添加一些网络层协议控制信息封装成数据包。数据包的头部包含源节点和目标节点的网络层地址(如IP地址)。
数据从低层到达网络层时,要去掉在数据链路层加上的数据链路层协议控制信息(也就是帧头和帧尾),还原出原来的数据包格式,这就是包的解封装过程
4、拥塞控制
避免网络传输路径中数据的传输延迟或死锁
在数据链路层提到了流量控制功能,那是针对数据链路中点对点传输速率的控制
而这里的拥塞控制是针对在网络传输路径中的端到端传输效率的控制(如避免路由器缓存空间爆满而造成丢包的情况)。
三、网络层数据交换及相关技术
在计算机网络中,两个端点之间通常需要通过中间结点实现数据通信,这些中间结点并不关心数据内容,只提供一个交换设备,把数据从一个结点转发到另一个结点,直至达到目的端。
数据交换技术主要是指网络中间结点所提供的数据交换功能。
1、线路交换(面向连接)
是在网络中利用可切换的物理通信线路直接连接通信双方所进行的一种数据交换方式。
通信前要在通信子网中建立一个实际的物理线路连接(通常由一种开关电路来控制)
三个阶段:
❏线路建立:通过呼叫完成逐个结点的连接过程,建立起一条端到端的直通物理线路。
❏数据传输:线路建立好后就可以直接在端到端的直通线路上传输数据。
❏线路释放:数据传输完成后,由任一用户向交换网发出释放请求信令。该信令沿通路各结点传送,指挥这些结点拆除对应的链路,以释放信道资源。
2、存储-转发
网络结点先将途径的数据流按传输单元(可以是报文或报文分组)接收并存储下来(同检验该数据单元的校验和),一个数据单元接收完后根据相关的路由算法选择一条合适的路由路径将数据转发出去,在逻辑(不是物理线路)上为数据流提供了传输通路。
由通信控制处理机(如路由器、三层交换机)负责完成数据单元的接收、差错校验、存储、路选和转发功能。
1.报文交换(数据报服务)
信息以报文为单位进行存储-转发的一种数据交换方式。在报文交换方式中,报文是网络中交换与传输的数据单元
用户发送的数据不是直接发送给目的节点的,而是先在中间结点上进行缓存(这类中间结点通常是由具有存储能力的交换机、路由器承担),然后再由中间结点在线路空闲时把数据发送出去。
2.分组交换
将报文根据各网络传输规定的MTU(最大传输单元)分成多个组,进行传输。
分组交换是结合报文交换和线路交换两种交换方式的优点而新开发的一种数据交换方式。
1、分类:
①数据报方式
在要转发的数据包头部加上源节点和目的节点的IP地址,成为数据报,然后通过路由技术一级级地把数据转发下去
数据报:报文被分成多个组后,在每个分组前部增加了源地址和目的地址信息字段的报文分段。
每个数据报自身携带有足够的信息,其中包括源地址、目的地址、结点间的路由信息等,数据报的发送就是通过这些地址和路由信息来保证数据准确发送到目的节点的
特点:
- 各结点可根据数据报中所包括的地址和路由信息,选择不同的路由路径进行发送。另外,各个结点也可能随时根据网络的流量、故障等情况选择最佳路径。
- 各数据报各行其道,很难保证全部按顺序到达目的节点,有些数据报甚至还可能在途中丢失
②虚电路方式(面向连接)
在进行数据分组转前先在源节点和目的节点间的所有路由器间建立一条虚拟的通信通道,然后再把数据分组从这个虚拟通道中转发到目的节点。每个分组均不必带目的地址、源地址等信息
在虚电路分组交换中,分组被发送之前,必须在发送方与接收方之间建立一条专用的逻辑连接(虚电路,VC),并且以一个在所有经过的节点或结点上均唯一的虚电路标识符(Virtual Circuit Identifier,VCI)进行标识。这条VC所代表的就是所有经过的节点和结点的串连。
注意:每个结点可以和任何结点建立多条虚电路连接,每条物理线路可以建立无数条虚电路连接,每条虚电路支持特定的两个结点之间的数据传输。
虚电路交换的阶段:
(1)建立虚电路
(2)传输数据
(3)拆除虚电路
2、虚电路交换和数据报交换的比较:
(1)传输方式上的区别
(2)数据格式的区别
(3)转发路径的区别
(4)可靠性方面的区别
(5)适应性方面的区别
(6)拥塞控制能力方面的区别
四、网络层协议及报文格式
1、IP协议(本文介绍IPv4)
IP协议是用于将多个分组交换网络(数据报交换方式)连接起来的最典型通信协议。
该协议是无连接的服务,负责在源地址和目的地址之间传送数据报,然后为了适应不同网络对分组大小的要求,需要对上层传来的报文进行分割,最后调用本地网络协议将数据报传送给下一个网关或目的计算机。
1.主要功能
把数据报在互连的网络上传送,将数据报在一个个IP模块间传送直到传送到目的模块。网络中每个主机和网关上都有IP模块。数据报在一个个模块间通过路由处理网络地址传送到目的地址。
(1)寻址
在同一以太局域网内部,结点间的寻址可以通过二层MAC地址进行,但在不同网络之间,是不能通过MAC地址的,因为用于MAC地址寻址的广播帧只能在同一个以太网段内部进行
在不同网络中只能通过三层地址(该协议中为IP地址)进行寻址.
(2)数据报的封装
从传输层到达的数据段都需要经过IP协议进行重新封装的。因为IP协议是无连接的服务,并且采用数据报交换方式,所以封装后形成的是IP数据报。
IP封装的目的就是标识此IP数据报发送节点和接收节点的IP地址及控制信息
(3)分段与重组
不同网络上的链路可以传输的最大报文大小是不同的,这就是我们通常所说的MTU(最大传输单元)。为了使我们要传输的数据报能在不同网络中传输,当一些尺寸较大的数据报要在某个MTU值比较小的网络链路上传输时就可能需要对原来的数据报进行拆分,形成一个个小的分段,然后再把这些分段依次传输出去。
在接收节点自然就要把这些被拆分的分段重新组合起来,还原成原来的大的数据报的问题
2.IPv4数据报
①IPv4数据报头部格式
(1)版本(Version)
版本字段指定IP数据报中使用的IP协议版本,占4位。此处是IPv4版本,值为4(0100)。
(2)头部长度(Header Length)
IP数据报头部的总长度,IP数据报头部的总长度以4字节为单位,该字段占4位 报头长度必须是32位(4字节)的整数倍,如果不是,需在选项字段的填充(PAD)子字段中补0凑齐。
(3)区分服务(Differentiated Services)
又称服务类型(ToS)字段,用于表示数据报的优先级和服务类型,占8位。
(4)总长度(Total Length)
标识整个IP数据报的总长度,包括报头和数据部分,整个IP数据报总长度以字节为单位,该字段占16位。由此可得出,IPv4数据报的最大长度为216-1字节即65535字节(即64KB)。
(6)标志(Flags)
指出该IP数据报后面是否还有分段,也就是这个字段是分段标志,占3位。目前只有前两位有意义:最低1位记为MF(More Fragment),如果MF=1,即表示后面还有分段,如果MF=0表示这已是某个数据报的最后一个分段;中间1位记为DF(Don’t Fragment),当DF=1时表示不允许分段,DF=0时表示允许分段;最高1位没有使用。
(7)段偏移(Fragment Offset)
用以指出该分段在数据报中的相对位置,也就是说,相对于用户数据字段的起点,该分段从何处开始,占13位 若有分段,段偏移以8字节为偏移单位,即每个分段的长度一定是8字节(64位)的整数倍
(8)生存时间(Time To Live,TTL)
标识IP数据报在网络中传输的有效期,以秒来计数,占8位。 现在通常认为这个TTL是指数据报允许经过的路由器数,每经过一个路由器,则TTL减1,当TTL值为0时,就丢弃这个数据报。
(9)协议(Protocol)
标识此IP数据报在传输层所采用的协议类型(如TCP、UDP或ICMP等),以便使目的主机的IP层知道应将数据部分上交给哪个处理过程,占8位。
(10)校验和(checksum)
校验和字段用来检验IP数据报的报头部分。 校验原理: 先在发送端校验和字段中填上一个特定的值,然后在接收端把包括校验和字段在内的报头部分进行二进制反码求和,再取反,如果结果为0,则表示报头部分在传输过程中没有发生变化,否则表示在传输过程中出现了差错。 特定的值=把源数据报头部(校验和字段置0)看成由以16位(2字节)为单位的数字组成,对每16位的二进制反码进行求和的结果
(11)源地址/目的地址(Source Address/Destination Address)
(12)选项(Options)
选项字段(可无)支持各种选项,提供扩展余地。根据选项的不同,该字段是可变长的,从1字节到40字节。用来支持排错、测量以及安全、控制报头长度等措施。
②IPv4数据报的封装与解封装
(1)封装:
以上所述是经过一个网络的情形,如果一个IP数据报在整个传输过程中要经过几个网络时,怎么办呢?
(2)解封装
数据报传输过程中,变化的只是在不同网络数据链路上传输的帧头信息(不同网络的链路层协议可能不同,所以要根据不同协议,重新封装成帧),而IP数据报信息不变
在不同网络链路上传输的帧,源MAC地址和目的MAC地址会改变(用于在每个经过的局域网内寻址)。
③IPv4数据报的分段与重组
在网络层中还涉及一个分段的问题,那是因为不同网络线路上可以传输的数据报大小是有限制的,且可能是不同的,也就是我们通常所说的MTU(最大传输单元),所以如果一个网络中收到的数据报太大,不能在目的网络中一次传输的话,就要对原来的包进行拆分,分成一个个小的数据报再进行传输。
为了解决这个问题,就需要在路由器上对接收到的主机A发来的IP数据报进行分段(数据报的片偏移会修改),然后再将每个分段独立地进行发送,可以像正常的IP数据报一样经过独立的路由选择等处理过程,最终到达目的主机。最后,还需要在目的主机上对这些分段进行重组,恢复原始的大IP数据报。
2、ARP协议
ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。
在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。
1.ARP报文格式
ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,然后再到数据链路层封装成帧
2.ARP映射表
无论是主机,还是交换机都会有一个用来缓存同一网段设备IP地址和MAC地址的ARP映射表,用于数据帧的转发。
(1)动态ARP表项:由ARP协议通过ARP报文自动生成和维护
(2)静态ARP表项:通过手工配置(通过对应设备的IP地址与MAC地址绑定命令进行)和维护
注意:静态ARP表项又分为短静态ARP表项和长静态ARP表项,区别在于地址表项是否绑定了VLAN。
若在不同网络上,主机A向主机B发送数据,则主机A要先使用ARP协议询问本网络网关地址,然后发数据给网关后,网关再在主机B所在网络询问主机B的地址,并发送数据。
3、ICMP协议及报文格式
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是IPv4协议簇中的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
但与ARP协议不同,ICMP依靠IP协议来完成其任务,所以ICMP报文中要封装IP头部。
1.ICMP消息类型
2.报头格式
3.常见的ICMP报文
(1)响应请求
(2)目标不可到达、源抑制和超时报文
(3)时间戳请求
五、路由和路由算法
路由功能其实是一种数据报分组交换路径选择行为,是网络层的一种基本功能。
1、路由的分类
1.静态路由(手动配置)
静态路由中包括目的节点或目的网络的IP地址,及数据包从当前路由器开始路由的第一个下一跳(通常就是网关)所对应的接口或IP地址。
如果某条静态路由中间经过的跳数大于1(也就是整条路由路径经历了三个或以上路由器结点),则必须在除最后一个路由器外的其他路由器上依次配置到达相同目的节点或目的网络的静态路由
2.动态路由
在网络中某条路由所包括的路由器同时启动了某种动态路由协议,通告了各自所直接连接的网络后,则这些路由器间就会自动生成这些路由器直接连接的网络间的路由表项,管理员无须一一手动创建,且这些路由表项会自动更新维护。
2、路由算法
路由算法(Routing Algorithm)是在给定一组路由器及连接路由器链路的情况下,找出一条从源节点到目标节点的最佳路径。通俗地讲,就是把路由器选择最佳路径的策略称为路由算法
1.分类
①非自适应路由算法
那些不能根据网络流量和拓扑结构的变化更新路由表,仅使用静态路由表的路由算法
(1)静态路由
(2)扩散法:当一个路由器接口收到一个报文分组后,即向它所有接口(包括接收该分组的源接口)进行复制扩散
(3)随机走动法:当结点收到分组后,向所有与之相邻的结点中随机选择出一个将分组转发出去
(4)最短路径法:将源节点到网络中所有结点的最短通路都找出来,作为这个结点的路由表。
(5)基于流量的路由算法:结合了网络拓扑结构和通信流量两方面的因素进行路由选择
②自适应路由算法
动态路由均属于自适应路由算法类型,可根据网络流量和拓扑结构的变化更新路由表。
(1) 自适应路由算法两大分类
总体式路由算法(链路状态算法和分级路由算法)
每个路由器都拥有网络中某个区域或者整个网络中所有其他路由器的全部信息以及网络的流量状态
分散式路由算法(距离矢量算法)
每个路由器只与直接相连的路由器交换路由信息,每个路由器只有相邻路由器的路由信息,而没有网络中的其他路由器的路由信息
(2) 距离矢量算法(RIP协议)
又称Bellman-Ford路由算法和Ford-Fulkerson算法。主要在RIP(Route Information Protocol)协议中使用
距离: 从本结点起,每经过一个路由器(也可以是提供路由功能的三层交换机,下同),就加一跳。也就是对应路由条目中除源站点所在网络直接连接的路由器外,到达目的站点所经过的路由器数
所有的路由学习完全依靠邻居路由器,交换的是完整的路由表项。
距离矢量路由算法的基本思想如下:
每个路由器维护一个距离矢量(通常是延时或跳数)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新。
每个距离矢量表项包括两部分:到达目的节点的最佳输出线路,和到达目的节点所需时间或距离,通信子网中的其他每个路由器在表中占据一个表项
每隔一段时间,路由器会向所有邻居结点发送它到每个目的节点的距离表,同时它也接收每个邻居结点发来的距离矢量表。这样以此类推,经过一段时间后便可将网络中各路由器所获得的距离矢量信息在各路由器上统一起来
(3) 链路状态路由算法(OSPF协议)
它不仅是要根据所经过的路由器多少,还要根据路径中各段链路的状态来计算最佳路由路径。而这个链路状态包括:接口的IP地址、子网掩码、网络类型(如以太网链路或串行点对点链路)、该链路的端口开销(Cost)、该链路上的所有的相邻路由器。
网络中的路由器并不向邻居路由器传递路由表项,只是向邻居路由器通告它的一些链路状态
链路状态路由算法的基本思想是:
网络中各个结点不必交换通往目的站点的距离,而是维护一张网络拓扑图,在网络拓扑结构发生变化时及时更新拓扑图即可。
5个步骤:
1)发现邻居结点,并知道其网络地址;
2)测量到各邻居结点的延时或开销;
3)组装一个链路状态分组,告之刚知道的所有信息;
“时间”即链路状态生存时间(TTL)
4)将这个分组发送给所有其他路由器;
5)每个分组使用Dijkstra算法(也就是“最短路径”算法)计算到每个其他路由器的最短路径。
(4)分级路由算法(ISIS协议)
在分级路由算法中,路由器被分成很多组,称为区域。每个路由器都只有自己所在区域路由器的信息,而没有其他区域路由器的信息。所以在其路由表中,路由器只需要存储其他每个区域的一条记录。
在分级路由算法的思想下,出现了自治系统、内部网关协议、外部网关协议等概念
自治系统AS:
一个自治系统(AS)是一个有权自主地决定在本系统中应采用各种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。一个自治系统有时也被称为是一个路由选择域(routing domain)
内部网关协议:
IGP(内部网关协议)是在一个自治网络内网关(主机和路由器)间交换路由信息的协议。
IGP协议包括RIP、OSPF、IS-IS、IGRP、EIGRP。
外部网关协议:
AS之间使用的路由协议,如BGP-4协议
3、路由优先级
当路由器同时配置了源和目的节点(或目的网络)的不同类型路由时,路由器该首选采用哪条路由表项呢?
管理距离是指一种路由协议的路由可信度,是一个0~255之间的一个整数,值越低,优先级越高,也就是可信度越高
六、网络拥塞控制方法和原理
1、原理
网络拥塞现象是指到达通信子网中某一部分的数据包数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象。
之所以会出现拥塞现象,就是因为通信子网中所承受的负荷(即通信子网中正在传输的数据包数)超出了网络的吞吐能力(包数/秒)。当通信子网负荷比较小时,网络的吞吐量随网络负荷的增加而线性增加。当网络负荷增加到某一值后,此时网络的吞吐量达到了最大值。若再加网络负荷,此时的网络吞吐量会不升反降,则表明网络中开始出现拥塞现象了。
2、控制方法
1.缓冲区预分配法
常用于虚电路分组交换网中。在虚电路建立时,要求呼叫请求分组所途经的每个结点为此条虚电路预先分配一个或多个数据缓冲区。
若某个结点当前无可用的缓冲区(被请求的结点会返回一个“忙”应答信号给呼叫请求分组发送者),则在建立虚电路时,让呼叫请求分组选择其他路径来建立虚电路。
这样,通过途经的各个结点就可以为每条虚电路开设永久性的缓冲区(直到虚电路拆除),就总能有空间来接纳并转送经过的数据包。
2.分组丢弃法
节点不必预先为数据包预留缓冲区,而是在路由器的缓冲区已被占满时,只需将后面到来的数据包丢弃,仅在缓冲区腾出空间后再重新接收数据分组
3.定额控制法
在通过通信子网中设置适当数量称为许可证的特殊信息来实现
其中一部分许可证在通信子网开始工作前预先以某种策略分配给各个源节点;另一部分则在子网开始工作后在网中四处环游。
当源节点要发送来自源端系统的数据包时,它必须首先拥有许可证,并且每发送一个数据包注销一张许可证。
目的节点则每收到一个数据包,并将其递交给目的端系统后,便生成一张许可证
这种控制方法有点像令牌网上的介质争用解决方案。在令牌网中,源节点要发送数据必须要获取网络中唯一的令牌,不同的是这里的证书不是唯一的,而是有许多。
3、死锁及其预防
死锁就是一些结点由于没有空闲缓冲区而无法接收和转发数据包(转发时也需要一定的缓冲空间的)的现象,死锁的结果是结点间相互等待,既不能接收数据包也不能转发数据包,并一直保持这一僵局,严重时甚至导致整个网络的瘫痪
(1)预防方法:
①为每个结点设置m+1个缓冲区(m为通信子网的直径,即从任一源结点到任一目的结点间的最大链路段数),并顺序编号。每个源结点仅当其为0号缓冲区可用时才能接收源端系统来的数据包,而此数据包仅能转发给1号缓冲区空闲的相邻结点,再由该结点将数据包转发给它的2号缓冲区空闲的相邻结点,以此类推。
②使每个数据包上都携带一个全局性的唯一的“时间戳”,每个结点要为每条链路保留一个特殊的接收缓冲区,而其他缓冲区均可用于存放中转数据包,按每条输出链路的队列上数据包时间戳顺序排队。
例:
结点A要将数据包送到结点B,若B结点没有空闲缓冲区,但正巧有要送到A结点的数据包,此时A、B结点可通过特殊的接收缓冲区交换数据包;若B结点既没有空闲缓冲区,也没有要送到A结点的数据包,B结点只好强行将一个出路方向大致与A结点方向相同的数据包与A结点数据包互相交换,但此时A结点中的数据包必须比B结点中的数据包具有更早的时间戳,这样才能保证子网中某个最早的数据包不受阻挡地转发到目的地。
(2)重装死锁及其防止
在数据分组重新组装、恢复成原来数据包的过程中发生的死锁,是另一种比较严重的死锁现象
例:
假设源结点发送的报文很长,被源结点拆成若干个数据分组发送,当这些分组到达目的结点后,就要将这些具有相同报文序号的多个分组重新组装成一个完整的报文再递交给目的端系统。
若目的结点用于重装报文的缓冲区空间有限,而且它无法知道正在接收的报文究竟被拆成多少个数据分组,此时就可能发生死锁现象,因为它没办法完成整个分组的重装,在缓冲的分组就不能被发送出去。
而此时相邻结点仍在不断地向它传送数据分组,因没有可用的缓冲空间,本结点就无法继续接收这些后续的分组了
防止:
❏允许目的结点将不完整的报文递交给目的端系统,只要按顺序发送即可,完整组装的任务交给目的端系统。
❏检测出不能完整重装的报文,然后要求发送该报文的源端系统重新传送,但这种方法的有效性比较低,因为这也很难确保目的节点在重发时就有足够的缓冲空间。
❏每个结点配备一个专门的缓冲空间,用以暂存不完整的报文,相当于CPU上配置的多级缓存,但这明显会增加设备的成本。
七、IPv4详解
1、子网掩码
我们在为设备配置IP地址时,通常是不能仅配置IPv4地址,而必须同时配置所谓的子网掩码。
1.概念:
IPv4地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络ID和主机ID两部分,以便于IPv4地址的寻址操作。
子网掩码由1和0组成,且长度也是32位,我们也可以把它分成网络ID和主机ID两部分,且各自的长度与IPv4地址的网络ID和主机ID部分对应相等。子网掩码中的网络ID部分全是1,1的数目等于网络ID的长度;主机ID部分全是0表示,0的数目等于主机ID的长度。
这样做的目的是为了在寻址过程中使子网掩码与对应的IPv4地址做逻辑与运算时用0遮住IPv4地址中原主机ID部分,而不改变原网络ID部分,这样就一来就得到了目的IPv4地址的网络ID,从而确定目的主机所在的网络.
2、IPv4地址分类
私网IP地址
在设计IPv4地址时就专门在前面介绍的A、B、C这类IPv4地址中各自划分了一段专用于各组织局域网内部的地址段,这就是我们前面所说的私网IP地址(又称局域网专用IP地址或者专用网络地址)。私网IPv4地址在不同公司内部的局域网中是可以重复使用的,且无须向IP地址管理机构申请、注册和购买的。在A、B、C类地址中各自划分的局域网专用地址段如下:
(1)10.0.0.0/8(10.0.0.0,255.0.0.0)
(2)172.16.0.0/12(172.16.0.0,255.240.0.0)
(3)192.168.0.0/16(192.168.0.0,255.255.0.0)
不能直接用私网ip地址访问internet!
3、有类/无类IPv4网络
尽管已针对整个IPv4地址空间进行分类,但每类网络的数量对于全球用户数量来说仍非常之少,特别是A类网络才区区的126个。之所以会出现这种现象,原因就在于每类网络的网络ID部分(也就是子网掩码部分)的位数是固定不变的,而且是字节的整数倍,如A类网络中的网络ID部分占1字节(8位),B类网络中的网络ID部分占2字节(16位)、C类网络中的网络ID部分占3字节(24位)。
也就是说,子网掩码在分类网络中是固定的
1.VLSM技术(子网划分)
该技术可以使网络中IPv4地址的子网掩码所占位数不是固定的,如子网掩码位数可以不是以字节为单位的整数,如12、13、14、25、26、28、等均可。
因为子网掩码位数不固定了,也就不能再依据子网掩码对IPv4地址来进行分类了,所以采用VLSM后形成的网络称为无类网络,而以前传统的A、B、C类网络则相对应地被称为有类网络或标准网络。
而我们把在有类网络中通过VLSM技术改变子网掩码长度而划分的小网络称为子网
VLSM只能划分相同大小的子网,也就是一个网络划分了子网后,各子网的IPv4地址数是相同的
好处:
①用户可以根据网络规模大小选择拥有适当可用IPv4地址的IPv4地址段,这样可以减少IPV4地址的闲置和浪费,降低广播风暴产生的可能;
②可以提高路由效率;
③提高广域网中的网络安全。
如原来一个标准的C类网络中有254个可以分配给节点的地址,现在公司中有6个部门,每个部门的人数不超过30人,现在想为每个部门分别配置一个子网。如果没有VLSM,则需要用6个C类标准网络。而有了VLSM后,仅用一个C类网络就可以划分出所需的6个子网,而且每个子网中可用的IPv4地址更贴近各部门的实际需求。
注意:
传统的IPv4地址表示方法是在给出具体的IPV4地址的同时给出它所对应的子网掩码, 如192.168.1.10、255.255.255.0等。 这也是我们在为节点配置IP地址的同时要配置子网掩码的原因。但在日常书写时,这样显然比较麻烦
为了能更加简便地书写,采取了一种比较简单的地址前缀表示形式(CIDR格式),就是在一个IPv4地址后面先加上一个斜杠(/),然后在这个斜杠后面直接写出该地址所在网络的子网掩码长度,因为网络ID长度决定了具体IPv4地址所属的网络。
例:
要把192.168.1.0/24网络划分成四个子网,它可以通过向“主机ID”借2位来实现,这4个子网分别是:
①192.168.1.0~192.168.1.63(192.168.1.0/26)
②192.168.1.64~192.168.1.127(192.168.1.64/26)
③192.168.1.128~192.168.1.191(192.168.1.128/26)
④192.168.1.192~192.168.1.255(192.168.1.192/26)
如从131.107.0.0/18这个地址中可知它所对应的网络中有18位属于网络ID部分,有14位属于主机ID部分
4、IPv4 NAT基础
NAT技术允许组织内部网络使用非全局可路由IP地址(如企业的私网ip地址)的用户通过地址转换为全局可路由的IP地址来访问Internet,以降低了对公网IP地址的需求。
1.与NAT相关的主要术语
(1)内部网络(Internal Network)
内部网络通常是指一个边缘局域网,使用内部网络(如私网)IPv4地址
(2)外部网络(External Network)
除本地私有网络以外的所有其他网络
(3)本地地址(Local address)
本地地址是本地网络(可以是内部网络,也可以是外部网络)内部使用的IP地址,仅在本地网络有效,不能直接用来访问外部网络的IP地址,不可路由
①内部本地地址(Inside local address)
内部本地地址是指分配给内部网络主机的IP地址。
②外部本地地址(Outside local address)
为外部网络主机分配的本地网络IP地址,是外部网络主机对内部网络用户呈现的IP地址。
(4)全局地址(Global address)
全局地址是与本地地址相对应的IP地址,它是内、外部网络本地址转换后的IP地址的,是可路由的。
①内部全局地址(Inside global address)
内部网络主机对外部网络用户呈现的IP地址(可以是分配给路由器连接外部网络接口的IP地址),是内部本地地址转换后的地址。
②外部全局地址(Outside global address)
外部网络主机分配到的外部网络IP地址。它通常是由ISP分配给企业用户内部网络使用的注册IP地址
2.NAT基本原理
NAT进行地址转换的过程就是本地地址与全局地址之间的转换过程,无论数据包是从内部网络发往外部网络,还是从外部网络发往内部网络。不同的只是本地地址和全局地址所对应的网络不同,以及数据包重新封装的源和目的地址不同
当数据包还在内部网络位置时有一个作为源地址的内部本地地址和一个作为目的地址的外部本地地址。此数据包首先发往路由器连接内部网络的接口中。当数据包被转发到外部网络时,数据包的源地址就会转变为内部全局地址,而目的地址被转变为外部全局地址
数据包是从外部网络位置发来,并且仍位于外部网络中时,它的源地址就是外部全局地址,目的地址就是内部全局地址。而当数据包被路由器转发到本地网络时,源地址被转变为外部本地地址,目的地址被转变为内部本地地址
3.NAT类型
(1)静态NAT(Static NAT)
把非注册IP地址(如本地局域网IP地址)一对一地映射到公网注册IP地址(如互联网IP地址)
(3)重载或复用NAT(Overloading NAT)
它通过与IP地址的不同端口组合,把多个非注册IP地址映射到一个注册IP地址,也就是通常所说的PAT(Port Address Translation,端口地址转换)。通过PAT,数千内网用户都可以仅通过一个公网IP地址访问Internet。
(4)重叠(Overlapping)NAT
当内部网络中使用的IP地址是外部网络中注册的IP地址时(也就是内、外部网络使用的是相同IP地址段时),路由器需要维护一张查询表,以便截取来自内部网络的数据包,并用外部网络中没有使用的注册IP地址进行替换。
重叠NAT主要应用于使用公网IP地址的内部网络服务器的地址转换,这样可以隐藏内部网络服务器的真实公网IP地址,有利于保护服务器的安全。因为经过NAT转换后,内部网络服务器对外呈现的是另一个公网IP地址,不是真实的服务器IP地址。
重叠NAT的详细介绍可见 重叠NAT转换方式 - NetEngine AR V300R019 配置指南-IP业务(命令行) - 华为
4.NAT主要应用
(1)无足够的公网IP地址可用时
(2)重构网络IP地址部署
(3)实现简单的TCP负载均衡