第四章 网络层
为什么要划分网络层?
不用的网络有不同的协议和标准,为了可以在不同网络之间互访,共享双方的资源,并且还要保持每个计算机网络本来的独立性,所以才划分出了网络层,并制定了专门的协议来负责网络间通信.
划分子网构造超网:
1 为什么要划分子网
一 :使IP地址空间利用率更高
二 给每个物理网络分配一个网络号,会使路由表变太大因而使网络性能变差
2 子网划分思路
一 一个单位有很多物理网络(很多主机电脑),可以将这些物理网络划分为很多子网。划分子网使属于单位内部的事情,外部网络看不见这个网络有多少个子网组成,这个单位对外仍表现为一个网络
二 划分子网的方法使从网络的主机号借用若干位作为子网号,于是两级ip就变成了3级ip地址
子网掩码
标志了有多少位使网络位,1对应的是网络位,0对应的是主机位
现在互联网规定,所有网络必须使用子网掩码,同时再路由表中也必须使用子网掩码这一栏
使用子网时的分组转发
在划分子网的情况下,分组转发算法必须做相应的改动。
使用子网划分后,路由表必须包含:目的网络地址、子网掩码、下一跳地址
分组转发算法:
1)从收到的数据报首部提取目的IP地址D
2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检擦:用各网络的子网掩码和D相与,看结果是否与相应的网络地址匹配,若匹配则把分组直接交付,否则执行3)
3)若路由表中有目的地址D的特定主机路由 ,则把数据报传送给路由表中指明的下一跳地址,否则执行(4)
4)对路由表中的每一行(目的网络地址、子网掩码、下一跳)用其中的子网掩码与D相与,结果为N,若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由,否则执行5)
5)若路由表中有一个默认路由,则把数据报传送给路由表中指明的下一跳地址,否则执行(6)
6)报告转发分组出错
网络层的主要功能:
1.屏蔽网络差异,提供透明传输.
为传输层提供服务:面向连接的网络服务(虚电路服务)和无连接的网络服务(数据报服务).
2.为网络通信提供路由选择
什么是路由选择?
按一定的原则和路由选择算法在多个节点的通信子网中选择一条到达目的节点的最佳路径的过程. 确定路由选择的策略成为路由算法.
3.数据包的封装和解封装
4.拥塞控制
为了避免网络传输路径中数据的传输延迟或死锁,主要采用预约缓冲区,分组丢弃等方式.
网络层数据交换相关技术:
1.虚电路分组交换(类似于电路交换的电话通信):
虚电路分组交换特点:
1.每次分组交换前,在发送方与接收方之间建立一条逻辑连接
2.一次通信的所有分组都是通过这条虚电路顺序传送,交换路径固定,所以不需要每个分组上封装目的地址,源地址等信息.
3.通信子网中每个节点可以和任意节点建立多条虚电路.每个虚电路支持特定的两个节点之间的数据传输.
虚电路交换过程,分三个阶段,1:建立虚电路 2:传输数据 3:拆除虚电路
2.数据报分组交换
什么是数据报?就是在数据前部添加了源地址和目标地址信息字段的报文分段.
每个分组携带目的地址,路由器根据分组的目的地址转发分组。
路由器使用最长前缀匹配规则与转发表中的表项进行匹配。
4个组成部分:
1. 输入端口:线路端接→数据链路处理(协议、拆封)→查找、转发、排队(→交换结构)
2. 交换结构:三种交换技术(经内存交换、经总线交换、经互联网交换)
3. 输出端口:排队(缓存管理)→数据链路处理(协议、封装)→线路端接
4. 路由选择处理器
数据报分组交换特点:
- 无需为每次通信建立独立的逻辑连接
- 发送报文时,先拆解成若干独立的带有序号和地址信息的数据报,依次发送给网络节点
- 网络节点每一个节点提供独立的路由选择,无法保证数据报按顺序到达目的节点,也无法保证数据报中途不丢失
经过实践最后证明,采用数据报服务更适合Internet的发展,这种服务的好处是:
网络的造价大大降低
运行方式灵活
能够适应多种应用
3.线路交换(又称电路交换)
最原始的数据交换方式,最常见的例子就是电话交换系统,在网络中利用可切换的物理通信线路直接连接通信双方进行数据交换.
4.存储-转发
路由器的工作机制就是这种存储-转发的数据交换方式,这种数据交换方式的好处有很多,比如当数据发送到每个节点(如路由器),可以进行差错检查,纠错处理,拥塞控制,格式转发等操作.根据所传输的数据单元是报文还是报文分组,可以讲存储-转发交换方式细分为,报文交换和分组交换两种。
网络层协议及报文格式:
1.IP协议(网络层中,最重要的一个协议):
IP协议属于数据报分组交换的数据交换方式,是一种无连接的服务.IP协议的主要功能就是在原地址和目标地址之间传送数据报.具体来说就是:寻址,数据报的封装,分段与重组.
下面是一张IP数据报报头格式的简图:
IP数据报分片:
一个链路层帧能够承载的最大数据量叫做最大传输单元(MTU)。
IP地址和MAC地址的区别
IP地址:全局唯一性,使用软件来实现网络中地址管理。
MAC地址:本地唯一性,使用硬件实现。
有了IP地址为什么还要MAC地址
1、IP地址一般情况下容易修改和变动,具有随意性,不能在网络上固定标识一台设备。
2、MAC地址一般情况出厂时有厂家烧录到网卡中,不容易被修改,在局域范围内容易唯一定位一台设备。
3、从拓扑结构和分层上分析,IP地址属于网络层,主要功能在广域网范围内路由寻址,选择醉解路由,而MAC地址在数据链路层,要形成适合于网络媒体上传输的数据帧。
2.ARP协议(地址解析协议):
ARP协议是将IP地址解析为以太网MAC地址(物理地址)的协议.局域网中,当一台机器A要向机器B发送数据时,它必须知道对方的网络层地址,即IP地址,但光知道IP地址是不够的,因为数据报文归根结底还是要封装成帧在物理网络中传输,因此发送方A还必须要知道B的MAC地址.ARR就是实现这个功能的协议.
特别注意: ARP解决的是同一个局域网中主机(或路由器)上的IP地址和MAC地址的映射问题,如果目的主机和源主机不在同一个局域网内,那么就要通过ARP找到一个位于当前局域网上某个路由器的MAC地址,把分组发送给这个路由器,然后这个路由器再把分组转发到下一个网络,剩下的工作就由下一个网络来完成了.
3.ICMP协议(控制报文协议):
这个协议用来在IP主机,路由器之间传递控制消息,比如网络通不通,主机是否可达,路由是否可用等信息,这些控制信息虽然并不传输用户数据,但是对于用户数据的传递也起着重要的作用.
与ARP协议不同,ICMP依靠IP协议来完成其任务,所以ICMP报文中要封装IP头部.比如像Ping,和tracert这样的诊断程序都是属于ICMP的内容.
路由和路由算法
路由的概念:把信息从源节点传送到目标节点的行为.
路由的实现:依靠的是路由器或三层交换机中的路由表进行的.
路由的分类:
静态路由: 1.手动配置 2.路由路径固定不变 3.单向性,不提供反向路由 4.优先级较高 5.适用于小型网络.
静态路由对于小型且变化不是很频繁的网络来说是可行的的,比如局域网,但是对于较大的广域网来说,由于拓扑结构复杂,网络结构经常变动,就需要使用动态路由了.
动态路由:1.自动生成 2.自动调整 3.自动生成双向路由 4.仅可以生成网络间的路由表径,不能生成到达具体节点或主机的路由表项.
路由算法基础:
路由算法是在给定一组路由器及连接路由器链路的情况下,找出一条由源节点到目标节点的最佳路径.
路由算法分为两大类:非自适应路由算法和自适应路由算法
非自适应路由算法典型代表就是静态路由,而动态路由中所使用到的算法都属于自适应路由算法
路由表基础:
路由表是存储在路由器或者联网计算机中的电子表格或类似的数据库.路由表存储着指向特点那个网络地址的路径.
每个静态路由表项中至少包含以下信息:
1.目的地址的网络IP地址
2.子网掩码:用来判断目的地址所属的网络
3.下一跳地址/接口.
几种主要的路由算法:
静态路由算法:
1.最短路径路由算法.
2.扩散算法
动态路由算法:
1.距离矢量路由算法
2.链路状态路由算法
特定主机路由
因特网所有的分组转发都是基于目的主机所在的网络,但在大多数都允许有这样的特例,即对特定的主机制定一个路由,这种路由就交特定主机路由
默认路由
默认路由又叫网关,当一个数据报到达路由器时,如果路由器在路由表中没有找到目的ip所对应的网段,该数据报就会发往默认路由所在的下一跳
分组转发算法:
1)从数据报首部提取到目的ip地址D,得出目的网络地址N
2)若N就是与此路由直接连接的某个网络地址,则进行直接交付,不需要再经过其他路由器,直接把数据报直接交付目的主机,否则进行(3)
3)若路由表中有目的地址D的特定主机路由 ,则把数据报传送给路由表中指明的下一跳地址,否则执行(4)
4)若路由表中有到达目的网络N的路由,则把数据报传送给路由表中指明的下一跳地址,否则执行(5)
5)若路由表中有一个默认路由,则把数据报传送给路由表中指明的下一跳地址,否则执行(6)
6)报告转发分组出错
网络层主要设备
路由器:
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器
路由器的硬件技术:
ASIC技术:用作包转发,查路由,对速度有明显提升
分布式处理技术:
交换式结构和调度算法:
路由表硬件查找技术:传统是使用数或者哈希算法,过程缓慢,后来采用了CIDR(无类别域间路由)大大减少了路由表项.
高密度与多端口
路由器的软件技术:
VPN(虚拟专用网)技术:VPN是指在公用网络上建立虚拟私有网的一种新型网络技术.
Qos(服务质量)技术:如数据包分类技术,数据流的分类
MPLS(多协议标记交换)技术:
多播技术:同一份数据同时发送给多个用户.