4.1 网络层的几个重要概念
4.1.1.网络层提供的两种服务
虚电路服务VC——面向连接
双方沿着已建立的虚电路发送分组,这样的分组的首部不需要填写完整的目的主机地址,而只需要填写这条虚电路的编号,因而减少了分组的开销。
数据报服务——无连接
数据报即分组
IP数据报和IP分组是同义词
网络在发送分组时不需要先建立联系,每个分组独立发送,与其前后的分组无关(不进行编号)
互联网的设计思路:网络层要设计的尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。
主机进程之间的可靠通信,由主机中的运输层负责(包括差错处理,流量控制)
两种服务的对比
对比方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信由用户主机来保证 |
连接 的建立 | 必须有 | 不建立连接 |
终点地址 | 仅在建立连接阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址,即IP地址 |
分组的转发 | 同一条虚电路,即同一条路由 | 每个分组独立查找转发表进行转发 |
当节点出故障时 | 所有通过出故障的节点的虚电路均不能工作 | 出故障的节点可能丢失分组,一些路由可能变化 |
分组的顺序 | 总按顺序到达终点 | 到达终点顺序不一定按发送的顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以用户主机负责 | 用户主机负责 |
网络层的两个层面
一、数据层面
转发源主机和目的主机之间所传送的数据(即分组像接力赛跑般在路由器之间(通过路由转发表)进行转发)
二、控制层面
传送路由信息,根据路由选择协议使用的算法彼此不断交换路由信息分组
4.2网际协议IP
三个配套协议
地址解析协议ARP
网际控制报文协议ICMP
网际组管理协议ICMP
4.2.1虚拟互连网络
即逻辑互连网络,因为,互连起来的各种物理网络的异构性是客观存在的。在网络层上看起来好像是一个统一的网络。
互联网可以由多种异构网络互连组成。
介绍四种不同的中间设备
- 物理层使用的中间设备叫做转发器
- 数据链路层使用的中间设备叫做网桥或桥接器,交换机
- 网络层使用的中间设备叫做路由器
- 网络层以上使用的中间设备叫作网关
直接交付、间接交付(需经过路由器)
4.2.2 IP地址
IP地址即:给连接到互联网上的每个主机(或路由器)的每个接口分配一个全世界范围内唯一的32位标识符(IPv4)。IP地址指明了连接到某个网络上的一个主机(或路由器)
点分十进制表示——(每八位)提高可读性
网络号+主机号
分类的IP地址
分类 | IP | 对应二进制 |
---|---|---|
A: | 1-126 | 0 |
B | 128-191 | 10 |
C: | 192-223 | 110 |
D:多播地址 | 224- | 1110 |
E:保留使用 | 1111 | |
广播地址 |
网络号全为0,的IP地址,表示本网络任意地址,
网络号127保留作为本地软件环回测试
无分类编址CIDR
无分类域间路由选择
网络前缀
IP地址=网络前缀n+主机号(32-n)
n可以是0-32间任意取值,不是固定的数
地址块
CIDR把网络前缀都相同的所有连续的IP地址组成一个CIDR地址块,所包含的IP地址数目取决于网络前缀的位数
例如:128.14.35.7/20表示的地址范围:
128.14.35.7/20=10000000 00001110 0010
0011 00000111
点分十进制 | 二进制表示 | |
---|---|---|
最小地址 | 128.14.32.0 | 10000000 00001110 0010 0000 00000000 |
最大地址 | 128.14.47.0 | 10000000 00001110 0010 1111 00000111 |
地址掩码
CIDR的斜线记法,斜线后面的数字就是地址掩码中1的个数
将IP地址同掩码进行与运算可以得到其网络地址
关于与运算:1 AND 1=1,1 AND 0=0,0 AND 0=0,
CIDR的三个特殊地址块
- 前缀n=32,没有主机号,是一个特殊的IP地址,用于主机路由
- n=31,该地址块只有两个IP地址,用于点对点链路
- n=0,同时IP地址全是0,即0.0.0.0/0,用于默认路由
CIDR地址块可以看成包含多个C类地址,故称CIDR编址为“构造超网”
路由聚合:一个大的地址块中往往包含多个小地址块,故在路由表中利用较大 的CIDR地址块来代替很多小的地址块,减少了查找转发表所需时间。
网络前缀越短的地址块包含的地址数就越多。
IP地址的特点
- 前缀+主机号
- 路由器根据目的主机连接的网络前缀来转发分组,缩短了查找转发表时间
- 多归属主机(标志一台主机或路由器和一条链路的接口)
- 一个网络是指 具有相同网络前缀的主机的集合,用转发器或交换机连接起来的若干个局域网仍为一个网络,
- IP地址中,所有分配到网络前缀的网络都是平等的,同等对待每个IP地址。
- 路由器每个接口的网络前缀不同,路由器相连时,一段连线,/31地址块,点对点链路构成特殊网络,无编号网络(匿名网络)
4.2.3IP地址和Mac地址
Mac地址固化在网卡的ROM中,硬件地址、物理地址,是数据链路层使用的地址,48位
IP地址是网络层和以上各层使用的地址,逻辑地址,IPv4为32位
IP地址放在IP数据报的首部,Mac地址放在Mac地址的首部,当IP数据报插入到数据链路层的Mac帧后,整个IP数据报就成为Mac帧的数据。——封装
数据报传输过程中:
- IP数据报的源目的IP地址不变
- 在局域网的链路层,只能看见Mac帧,传输过程中,Mac帧的源目的地址会发生变化。
- IP层抽象的互联网屏蔽了下层复杂细节,在网络层讨论问题,即使用统一抽象的IP地址研究主机路由器之间的通信。
4.2.4地址解析协议ARP
实际网络的链路上传送数据帧时,最终必须使用链路层的Mac地址,
主机的Mac地址实际就是其网络适配器的Mac地址,地址解析协议:通过在主机的ARP高速缓存表中存放一个从IP地址到Mac地址的映射表,且这个映射表时常更新(新增或超时删除),映射地址项目都设置有一定生存时间
每个主机都设有一个ARP高速缓存表,里面存有本局域网上个主机和路由器的IP地址和Mac地址的映射表
如果在主机A在缓存表中找不到主机B的Mac地址值,如何知道其Mac地址呢?——前提A,B处于同一局域网
- A在本局域网上广播发送一个ARP请求分组(格式:我的IP地址为,Mac地址是,我想知道IP地址为 的主机的Mac地址)
- 主机B收到arp请求,发现IP地址和arp请求分组中要查询的IP地址一致,于是收下arp请求分组,(会将A的IP和Mac对应关系写入arp高速缓存),并向A发送arp响应分组(响应分组中有自己的Mac地址)
- A收到响应分组,将B的IP和Mac对应关系写入arp高速缓存。
- 广播请求——单播响应
如果在主机A在缓存表中找不到主机B的Mac地址值,如何知道其Mac地址呢?——前提A,B不在同一局域网
- A在本网络中发送arp请求分组 查找同一网络上的一台路由器的Mac地址,然后接下来的转发有路由器来完成
- arp的多次反复使用
从IP地址到Mac地址的解析是自动进行的,主机的用户对这种地址解析过程不知道,只要主机和本网络一个已知IP地址的主机或路由器要进行通信,协议ARP会自动将IP地址解析为链路层所需的Mac地址,然后插入到Mac帧中。
4.2.5IP数据报的格式
IP数据报==>首部+数据部分
首部格式的宽度为32位,即4字节,首部==固定部分20字节+可变部分
固定部分:
- 版本:占4位,IPv4:0100 IPv6:0110
- 首部长度:占4位,首部字段的最小值是5(0101),
- 区分服务:占8位,
- 总长度:
指首部和数据之和的长度,单位为字节,总长度字段为16位,
在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,称为最大传送单元MTU,如果过长,需要进行对数据报进行分片处理。
- 标识:16位,相同标识字段 使分片后的各数据报片最后能正确重装为原来的数据报
- 标志:3位,
- MF=1表示后面还有分片,MF=0表示这是若干数据报片的最后一个
- DF 表示不能分片,DF=0时才允许分片
- 片偏移:占13位,分片后,某片在原分组中的相对位置,(片偏移以8个字节为偏移单位
- 生存时间TTL:占8位,数据报在网络中的寿命,每经过一个路由器就减一,当其减为0时,就丢弃这个数据报。
- 协议:8位,
- 首部校验和:16位,只检验数据报的首部,不包括数据部分
可变部分
增加IP数据报的功能,增加了路由器处理数据报的开销
4.3 IP层转发分组的过程
基于终点的转发
最长前缀匹配
前缀越长,地址块越小,路由越具体
主机路由:a.b.c.d/32 在转发表中都放在最前面,对网络的连接或转发表进行排错时,指明到某一台主机的特殊路由就十分有用
默认路由:0.0.0.0/0
转发表分组转发算法:(假定转发表按照前缀的长短排列,把前缀长的放前面)
- 从分组中提取目标地址D
- 看是否有特定主机路由,否者从转发表下一行开始检查
- 将该行子网掩码同D进行按位与运算
- 匹配,则结束
- 若默认路由,……
4.4 网际控制报文协议ICMP
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告
ICMP数据报装在IP数据报中,作为其中的数据部分,是IP层的协议
4.4.1ICMP报文的种类
- ICMP差错报告报文
- ICMP询问报文
前四字节是统一格式:共有三个字段,类型、代码、校验和、而后四个字节内容同ICMP类型有关,最后是数据字段,长度取决于ICMP的类型
ICMP报文种类 | 类型的值 | ICMP报文的类型 |
---|---|---|
差错报告报文 | 3 | 终点不可达 |
11 | 时间超时(如果当生存时间为0时,没有收到一个数据报的全部数据报片,将丢弃所有的已收到的数据报片,并向源点发送时间超时报文 | |
12 | 参数问题 | |
5 | 改变路由redirect | |
询问报文 | 8或0 | 回送echo请求或回送回答(向特定主机发出询问,收到此报文的主机必须回送回答报文) |
13或14 | 时间戳请求或时间戳回答(时间戳:报文的发送和接收时间,计算往返时间 |
不应发送ICMP差错报告报文的几种情况:
- 对ICMP差错报告报文,不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
- 对具有多播地址的数据报,不发送ICMP差错报告报文
- 对具有特殊地址的数据报127.0.0.0或0.0.0.0,不发送ICMP差错报告报文
4.4.2 ICMP的应用举例
ping(分组网间探测
用来测试两台主机之间连通性,使用了ICMP回送请求和回送回答报文,是应用层直接使用网络层ICMP的一个例子,没有通过传输层的tcp或udp
ping 127.0.0.1
tracert
traceroute从源主机向目的主机发送一系列IP数据报,数据报中封装的是无法交付的udp用户数据报,第一个数据报TTL=1,第二个TTL=2,……,(每个TTL值,源主机会发送三次(当TTL=0时,发送ICMP时间超过差错报告报文
攻击:伪装成目标主机,导致网络中大量主机向目标主机发送
- 死亡之ping
- ping -t -l 65550(缓冲区溢出
- smurf攻击
- 重定向攻击
4.5 IPv6
将协议数据单元PDU称为分组,而不是IPv4中的数据报。
变化:
- 更大地址空间,128位
- 扩展的地址层次结构
- 灵活的首部格式(可选的扩展首部
- 改进的选项(允许数据报包含有选项的控制信息,IPv6的首部长度固定,其选项放在有效载荷中
- 允许协议继续扩充
- 支持即插即用(不需要DHCP
- 支持资源的预分配
- IPv6首部改为8字节对齐(首部长度必须为8字节的整数倍(原来IPv4 是4字节对齐
IPv6数据报==基本首部+有效载荷(亦称净负荷,有效载荷允许零个或多个扩展首部,再后面是数据部分
- 取消了校验和字段,加快了路由器处理数据报的速度,在数据链路层对检测出有差错的帧就丢弃,运输层,当使用udp时,若检测出有差错的用户数据报就丢弃,当使用tcp时,对检测出有差错的报文段就重传,直到正确的传送到目的进程为止,因此在网络层的差错检测可以精简掉。
- 有效载荷长度
- 下一个首部:
- 如果IPv6没有拓展首部,其作用和IPv4的协议字段一样,指出了基本首部后面的数据应交付IP层上面的哪个高层协议
- 出现拓展首部时,下一个首部字段 表示后面第一个扩展首部的类型,以此类推下一个首部
- 跳数限制:hop limit
从IPv4向IPv6过渡
- 双协议栈
- IPv6/IPv4
- 同时装有IPv4和IPv6两种协议栈
- 隧道技术
- 将IPv6数据报封装成为 IPv4数据报,即IPv6数据报变成了IPv4数据报的数据部分,最后再取出
- 必须将IPv4首部的协议字段的值设置为41(表示数据报的数据部分 是IPv6数据报
ICMPv6
利用报文来报告差错,获取信息,探测邻站或管理多播通信
ARP和IGMP的功能都已被合并到ICMPv6中
- 差错报文
- 信息报文
- 邻站发现报文(ND协议
- 组成员关系报文(MLD协议
4.6 互联网的路由选择协议
4.6.1 路由协议算法的几个概念
理想的路由算法:
- 算法必须完整且正确
- 在计算上简单
- 能适应通信量和网络拓扑的变化——稳健性
- 稳定性,应收敛于一个可以接受的值
- 公平性(对于除优先级高的用户
- 最佳的(特定要求下较为合理的选择
静态路由选择策略——非自适应路由选择:简单,开销小,不能即使适应网络状态的变化,需要人工配置每一条路由,适用于简单的网络
动态路由选择策略——自适应路由选择:实现比较复杂,能够适应网络的变化,开销大,适用于比较复杂的大网络
分层次的路由选择协议
自治系统AS:每一个AS对于其他AS表现出的是一个单一的和一致的路由选择策略。
内部网关协议IGP:RIP,OSPF,IS-IS
外部网关协议EGP:BGP-4(边界网关协议
自治系统之间的路由选择叫做 域间路由选择,而在自治系统内部的路由选择叫做域内路由选择。
4.6.2 内部网关协议RIP
RIP是一种分布式的基于距离向量的路由选择协议,最大的特点就是简单。
从路由器到直接连接的网络的距离定义为1,从一主机到非直接连接的网络的距离定义为所经过的路由器数加1,RIP协议的距离也称为“跳数”,RIP允许一条路径最多只能包含15个网络,因此距离等于16时相当于不可达。RIP只适用于小型互联网。RIP选择一条具有最少网络数的路由(即最短路由)
RIP协议的特点:
- 仅和相邻路由器交换信息
- 路由器交换的信息时当前路由器所知道的全部信息,即自己现在的路由表
- 按固定的时间间隔交换路由信息,每隔30秒(主机也运行RIP,但是只是被动的接受从路由器发来的路由信息
- RIP可以收敛,且较快,“收敛”即在自治系统中所有的节点都得到正确的路由选择信息的过程。
- 路由表更新的原则时找到到达每个网络的最短距离——距离矢量算法
距离矢量算法:
路由表信息如下:
目的网络 | 距离 | 下一跳路由器 |
---|---|---|
三种更新路由情况:
- 收到新的信息(即到达新的网络的路由信息
- 更短的路由信息
- 上层网络发生变化导致路由发生变化,无论远近必须更新。
三种定时器:
- 更新定时器 30秒
- 路由失效 180秒
- 清除路由条目 240秒
协议RIP让一个自治系统中的所有路由器都和自己的相邻路由器定期交换路由信息,并不断更新路由表,使得每个路由器到每一个网络的路由都是最近的
RIP报文作为运输层用户数据报UDP的数据部分进行传送(使用UDP的端口520.)RIP报文由首部和路由部分组成,在路由部分要填入自治系统号ASN
坏消息传得慢:当网络故障时,可能需要很长时间才能将此信息传到所有路由器——路由环路问题
例如:某个网络发生故障无法抵达,需要很长时间才能传到所有路由器
解决路由环路问题:
- 定义最大值
- 水平分割(即从某个路由器传来的路由信息 不能再传回去到该路由器(记住来源,不反向传播
- 毒性反转(将条数置为16
- 触发更新(不异30秒周期更新,一发生变化马上更新
- HOLD DOWN计时器
4.6.3内部网关协议OSPF
开放最短路径优先OSPF
协议OSPF的基本特点:
- 使用链路状态协议
- 向本自治系统中所有路由器发送信息(洪泛法
- 发送的信息是于本路由器相邻的所有路由器的链路状态(说明本路由器和哪些路由器相连,及该链路的“度量”—-
- 当链路状态发生变化或每隔一段时间(如30分钟),路由器向所有路由器用洪泛法发送链路状态信息
链路状态数据库——实际上就是全网的网络拓扑结构图,在全网范围内是一致的(这称为链路状态数据库的同步)
OSPF的更新过程收敛快
OSPF将自治系统再划分为多个小区域,每个区域有32位的区域标识符(一个区域内的路由器不能超过二十个
OSPF使用层次结构的区域划分,上层的区域叫做主干区域(0.0.0.0:用来连通下层区域
区域边界路由器,主干路由器,自治系统边界路由器
OSPF的五种分组类型
- 问候分组 hello:用来发现和维持邻站的可达性(每隔10秒交换问候分组40秒没收到对方的问候分组,即认为该相邻路由器不可达
- 数据库描述分组 DD:给出自己的链路状态数据库中所有链路状态项目的摘要信息
- 链路状态请求分组LSR:向对方请求发送某些链路状态项目的详细信息
- 链路状态更新分组LSU:用洪泛法对全网更新链路状态
- 链路状态确认分组LSAck:对链路更新分组的确认
2345分组都是为了实现链路状态数据库的同步:不同路由器的链路状态数据库中的内容是一样的,两个同步的路由器叫做“完全邻接的”
OSPF分组是作为IP数据报的数据部分来传送,(IP数据报首部的协议字段是89)OSPF构成的数据报很短,好处是不用分片,不会引起分片丢失导致的重传。
OSPF使用可靠的洪泛法向全网更新链路状态:收到更新分组后要发送确认(收到重复的更新分组只需确认一次)
指定路由器DR和备用指定路由器BDR:所有路由器只与DR进行链路状态交换构成同步————最终结果就是所有路由器达到同步
4.6.4外部网关协议BGP
pass
4.9因特网的层次路由
广播路由
全网广播
受控制的洪泛:序号控制,记住转发过的最大编号,如果收到小于最大编号的数据报,因为已经广播过了,故采取丢弃。
4.7组播路由——IP多播
给一部分的主机发送
组播地址:224.0.0.0/24到239.255.255.255
用一个D类地址来标志一个多播组,故D类地址可以标志
多播地址只能用于目的地址,不能用于源地址,此外对多播数据报 不产生ICMP差错报文,即”ping 多播地址 “永远得不到回应。
需要确定组成员,识别分组,组播树,使用IGMP来识别组,
更多见P179-P182
4.8 虚拟专用网VPN和网络地址转换NAT
专用地址,全局地址,
在互联网中的所有路由器,对目的地址的专用地址的数据报一律不进行转发。
私有地址块:
A:10.0.0.0/8该地址块相当于原来的一个A类网络,即从 10.0.0.0—-10.255.255.255
B:172.16.0.0/12该地址块相当于原来的16个连续的B类网络,即从172.16.0.0—-172.31.255.255
C:192.168.0.0/16该地址块相当于256给连续的C类网络,即从192.168.0.0—-192.168.255.255
4.8.1虚拟专用网VPN
VPN是在效果上和真正的专用网一样。
利用IP隧道技术实现虚拟专用网:
- 要求每个场所至少有一个路由器具有合法的全球IP地址,
- 对内部数据报进行加密(保证内部数据报的安全)重新加上数据报的首部,封装称为在互联网上发送的外部数据报,源和目的地址分别是两个路由器的公有地址,收到数据报后取出其中的数据部分,解密,恢复出内部数据报,交付给主机。
- 内联VPN(内部网络),外联VPN(需要外部机构加入)
远程接入VPN:公司员工出差,远程工作的员工通过拨号接入互联网,驻留在员工个人电脑中的VPN软件可以在个人电脑和共公司主机之间建立VPN隧道。且通信内容也是保密的。
4.8.2网络地址转换NAT
NAT路由器,至少要有一个外部全球IP地址
- NAT转换表,将专有网中的IP地址和全球IP地址对应——缺陷
- 其通信只能由专用网内的主机发起,故专用网内部的主机不能直接充当服务器。
- 使用端口号的NAT—-网络地址于端口号转换NAPT