主要任务时把分组从源端发送到目的端,为分组交换网上的不同主机提供服务。网络层传输单位是数据报
功能:
- 路由选择与分组转发(最佳路径 )
- 异构网络互联
- 拥塞控制
数据交换方式
- 电路交换:通信时延小、有序传输、没有冲突、实时性强、独占资源
建立连接时间长、线路独占,使用效率低,灵活性差,没有差错控制能力 - 报文交换
- 分组交换
IP数据报格式
片偏移量=首地址/8
总长度单位是1B
片偏移量单位是8B
首部长度单位是4B
MTU:数据链路层可封装数据的最大传送单元。在以太网中MTU为1500字节
IP地址
分类的IP地址
全世界唯一的32位/4字节标识符,标识路由器主机的接口
IP地址 := (网络号,主机号) 点分十进制
路由器不同的接口有不同的IP地址
A类网络减去网络号全0(特殊地址)和全1(127,环回地址)
B类和C类都要减去网络号全0,不清楚为什么
最大主机数减去全0和全1.
特殊地址:
所谓的环回地址指的是该数据报不会实际发送出去,多用于测试。实际上就是自己。
私有IP地址不能在广域网中使用。
网络地址转换(NAT)
路由器对目的地址是私有IP地址的数据报一律不进行转发
网络地址转换NAT(Network Address Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。
局域网中的计算机先将数据发送给NAT路由器,NAT路由器再以自己的IP发送给外网
外网会将信息发送给NAT路由器,NAT路由器再根据NAT转换表发送给应该接收的电脑。
将源IP和端口号(传输层概念)按照NAT转换表转换为可以在外网发送的源IP和端口号。同理,接收外部信息的时候也会首先发送给NAT路由器,再按照NAT路由器将目标IP和端口号更换为局域网中的私有IP和端口号
NAT转换表中LAN端有不同的IP地址,WAN端根据端口号对应不同的IP地址。
子网划分和子网掩码
分类IP地址的弱点:
- IP地址空间的利用率有时很低
- 两级IP地址不够灵活
将主机号拆分为子网号和主机号,当某些单位划分子网后,对外仍表现为一个网络,即本单位外的网络看不见本单位内子网的划分。
主机号至少要留下两位
如果只剩下一位,那么主机号要么全0要么全1,这都是不允许的。
子网号能够全0全1要看情况(一般子网划分不允许,只有CIDR中可以)
两级IP地址的子网掩码根据类别,比如B类的子网掩码就是255.255.0.0
三级IP地址的子网掩码也很简单,就是不变的地方都是1
子网网络地址:子网掩码与IP地址逐位相与
路由表中应该包含:
- 目的网络地址
- 目的网络子网掩码
- 下一跳地址
直接交付:路由器直接交给连接的子网
间接交付:路由器需要传给下一跳
路由器转发分组的算法:
- 提取目的IP地址
- 是否直接交付
- 特定主机路由
- 检测路由表中有无路径
- 默认路由
0.0.0.0
- TTL耗尽,丢弃,报告转发分组出错
无分类编制CIDR
为了解决IP地址快要耗尽的情况
也叫做无分类域间路由选择CIDR
- 消除了传统A类、B类和C类地址以及划分子网的概念
CIDR记法:IP地址后加上/
,然后写上网络前缀(可以任意长度)的位数 - 融合子网地址和子网掩码,方便子网划分
CIDR地址块:CIDR把网络前缀都相同的连续的IP地址组成一个CIDR地址块
同前面一样,主机部分最多是所有情况-2(不能全0和全1)
如果给CIDR继续划分子网,子网号是可以全0、全1的。
地址块记法:最小地址
地址掩码(子网掩码):网络前缀部分全都是1
构成超网
将多个子网聚合成一个较大的子网,叫做构成超网,或者路由聚合。
方法:将路由前缀缩短
用相同的部分当作前缀
最长前缀匹配
使用CIDR时,查找路由表可能得到几个匹配结果,应该选择具有最长网络前缀的路由。(前缀越长,地址块越小,路由越具体)。
ARP协议
每个主机和路由器都有ARP高速缓存:IP地址和MAC地址的映射(只存同一个局域网内部的)
首先检查ARP高速缓存查新IP地址对应的MAC地址,如果没有就发出ARP广播。
ARP缓存每10-20min更新一次。
广播ARP请求分组:
目的地址为全1说明是广播分组(帧)。
如果是同一个网段内的:单播ARP响应分组。
如果发现不是一个网段的(子网掩码和目标IP相与,发现与自己的网络部分不同):先请求到网关的MAC地址,然后发送给网关,然后在路由器之间传递,知道到达正确的网段,然后路由器再发出广播询问MAC地址,得到回应以后直接发给目标主机。
在数据链路层上传送数据必须使用MAC地址。
ARP协议4中典型情况:
- 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址
- 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
- 路由器发给本网络的主机A:用ARP找到主机A的硬件地址
- 路由器发送给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址
ARP缓存10-20min更新一次。
ARP是用来获取本网络对应IP的MAC地址
ARP协议是自动进行的,主机是无法意识到的。
例题:主机发送IP数据报给主机B,经过了5个路由器,这个过程使用了6次ARP协议
DHCP协议
主机如何获得IP地址:
- 静态配置:由管理员配置IP地址、子网掩码、默认网关
- 动态配置:DHCP服务器动态给主机分配IP地址
动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动网络加入网络,支持在用地址续租
工作流程:
- 主机广播DHCP发现报文(试图找到网络中的服务器,服务器获得一个IP地址)
- DHCP服务器广播DHCP提供报文(服务器拟分配给主机一个IP地址及相关配置,先到先得)
- 主机广播DHCP请求报文(主机向服务器请求提供IP地址)
- DHCP服务器广播DHCP确认报文(正式将IP地址分配给主机)
发送的都是广播报文,第三四步之所以在已经确定DHCP服务器和主机IP的情况下仍然使用广播,是要告诉其他DHCP服务器该主机使用一个IP地址,其他DHCP服务器不用再管,而且不能够再使用这个IP地址
ICMP协议
为了更有效地转发IP数据报和提高支付成功的机会
差错(或者异常)报告
ICMP差错报告报文
- 终点不可达:当路由器或者主机不能交付数据时就像远点发送源点不可达报文。(无法交付)
- 源点抑制:当路由器或者主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使得原点知道应当把数据报的发送速率放慢(拥塞丢数据)(现在不会用到)
- 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已经收到的数据报片都丢弃,并向源点发送时间超过报文(TTL=0或者数据报残缺)
- 参数问题:当路由器或者目的主机收到的数据报的首部中有的字段的值不正确时就丢弃该数据报,并向源点发送数据问题报文(首部字段有问题)
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
不应该发送ICMP差错报文的情况: - 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有组播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(
127.0.0.0
或0.0.0.0
)数据报不发送ICMP差错报告报文
ICMP询问报文
- 回送请求和回答报文:主机或路由器向特定目的主机发出询问,收到此报文的主机必须给源主机或者路由器发送ICMP回答报文。测试目的站是否可达以及了解其相关状态
ping
- 时间戳请求和回答报文:请求某个主机或路由器回答当前的时间和日期。用来进行时钟同步或者测量时间。
- 掩码地址请求和回答报文(不再使用)
- 路由器询问和通告报文(不再使用)
ICMP的应用
PING
:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文
Traceroute
跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文
Traceroute
原理:发送一系列TTL从1递增的IP报,然后让不同距离的路由器都发送错误报告
IPv6
解决地址耗尽问题,改进首部格式(快速处理/转发数据报),支持QoS(Quality of Service,服务质量)
QoS(Quality of Service服务质量):指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,时网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。
对比IPv4和IPv6:
- IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间
- IPv6将IPv4的校验和字段彻底移除,减少每条的处理时间
- IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式。路由器通常不对扩展首部进行检查,大大调高了路由器的处理效率
- IPv6支持即插即用(自动配置),不需要DHCP协议。
- IPv6的首部长度必须时8B的整数倍,IPv4首部时4B的整数倍。
- IPv6只能在主机处分片,IPv4可以在路由器和主机处分片
- IPv6使用ICMPv6:附加报文类型:分组过大
- IPv6支持资源的预分配,支持实时视像要求
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
- IPv6取消了服务类型字段
IPv6地址标识形式:冒号十六进制记法,每四个十六进制位放在一起
如果每个分组前面有多个0,可以删去
IPv6基本地址类型:
- 单播:一对一通信,可作为源地址+目的地址
- 多播:一对多通信,可作为目的地址。IPv6中没有广播地址,用多播实现
- 任播:一对多中的一个(最近的)通信,可作为目的地址
IPv6向IPv4过渡
- 双栈协议:双协议栈技术就是在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能够和IPv4网络通信,又能够和IPv6网络通信。如果这台设备时一个路由器,那么这台路由器的不同接口上,分别配置了IPv4和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4和IPv6地址,并具备同时处理这两个协议地址的功能。
- 隧道技术:隧道协议将其他协议的数据帧或包重新封装然后通过隧道发送(IPv6伪装成IPv4等等)
路由算法
静态路由算法(非自适应路由算法):管理员手工配置路由信息。
优点:简答可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛应用于高端安全性的军事网络和较小的商业网络
缺点:路由更新慢,不适用大型网络
动态路由算法(自适应路由算法):路由器间彼此交换信息,按照路由算法优化路由表项。
路由更新快,使用大型网络,及时响应链路费用或网络拓扑变化。
缺点:增加网络负担、算法复杂
动态路由算法
全局性:所有路由器掌握完整的网络拓扑和链路费用信息(OSPF)
分散性:路由器只掌握物理相连的邻居及链路费用(RIP)
分层次的路由选择协议:因为因特网规模很大;许多单位不想让外界知道自己的路由选择协议,但是还想连入因特网,所以产生了自治系统AS
自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由。
一个自治系统AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通
- 内部网关协议IGP:一个AS内使用的RIP、OSPF
- 外部网关协议EGP:AS之间使用的BGP
RIP协议
RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大的优点是简单
RIP协议要求网络中的每一个路由器都维护从他自己到其他没有给目的网络的唯一最佳距离记录(即一组距离)
最佳距离:经过的路由器跳数最少
直接交付的距离(跳数)为1,最多包含15个路由器,因此距离16标识网络不可到达
RIP协议只适用于小网络
- 仅仅和相邻路由器交换信息
- 路由器交换的信息是自己的路由表
- 每30S交换一次路由信息,如果从超过180S没有收到邻居路由器的通告,则判定邻居没了,并更新自己的路由表。
刚开始交换直接连接的网络,距离为1.
经过若干次更新后,所有路由器都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
RIP报文:包含路由表
距离向量算法
- 修改相邻路由器发来的RIP报文中的所有表项:对地址为x的相邻路由器发来的RIP报文,修改报文,把下一跳的地址改为x,并把距离+1.
- 对修改后的RIP报文中的每一个项目:
- 如果没有目的IP,则填入路由表;
- 如果有目的IP,且下一跳是同一个路由器,则更新(有可能距离不一样);如果下一跳和自己的路由表中的不是同一个路由器,且距离比表中的更近,则更新为距离最近的
- 如果180S还没有收到相邻路由器x的更新路由表,则把x设置为不可达路由器(把距离为16)
RIP是应用层协议,使用UDP数据报传输
RIP的特点:当网络出现故障的时候,要经过比较长的时间(数分钟)才能将此信息传送给所有的路由器
坏消息传的慢(慢收敛),好消息传的快
OSPF协议
开放最短路径优先OSPF协议:开放标明OSPF协议不是受一家厂商控制的,而是公开发表的;“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF
主要特征:使用分布式的链路状态协议
- 使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。(相当于广播)
- 发送的信息就是与本路由器相邻 的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量:费用、距离、时延、带宽)
- 只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息
最后,所有路由器都能建立 一个链路状态数据库,即全网拓扑图。
链路状态路由算法
- 每个路由器发现他的邻居节点【HELLO问候分组】,并了解邻居节点的网络地址。(每隔10S)
- 设置到它的每个邻居的成本度量
metric
- 构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中所有链路状态项目的摘要信息
- 如果DD分组中的摘要自己都有,则邻站不做处理;如果有自己没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息
- 收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新
- 更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认
- 使用Dijkstra根据自己的链路状态构造最短路径
OSPF是网络层协议
其他特点:
- 每隔30min更新一次
- 当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多
- OSPF不存在坏消息传得慢的问题,它的收敛速度很快
BGP协议
与其他AS的邻站BGP发言人交换信息
交换的网络可达性信息,即要到达某个网络所要经过的一系列AS(路径向量)
发生变化时更新有变化的部分
各个BGP发言人根据所采用的策略从收到的路由信息中找到到达各个AS的较好路由
BGP是一个应用层协议,借助TCP传送
特点:
- 支持CIDR
- 只需要在发生变化时更新有变化的部分
三种路由协议比较
IP组播(多播)
- 单播:使用一个IP地址作为目的地址,点对点通信
- 广播:点对多点的传播方式,目的地址是全1的广播地址(MAC地址为全F)
- 组播(多播):当网络中的某些用户需要特定数据时,组播数据发送这仅仅发送一次数据,借助组播路由协议为组播数据报建立组播分发树,被传递的数据到达距离用户端尽可能金的节点后才开始复制和分发,是一种点对多点的传输方式
IP组播地址
IP组播地址让原设备能够将分组发送给一组设备,属于多播组的设备将被分配一个组播组IP地址(一群相同需求主机的相同标识)
组播地址范围为224.0.0.0~239.255.255.255
(D类地址),一个D类地址表示一个组播组。只能用作分组的目的地址。源地址总是为单播地址。
- 组播数据报是“尽最大可能交付”,不提供可靠交付,应用于UDP(速度快,实时性)。
- 对都组播数据包不产生ICMP差错报文
- 并非所有D类地址都可以作为组播地址
硬件组播
组播MAC地址以十六进制值01-00-5E
打头,剩下的6个十六进制位是根据IP组播组地址的最后23位转换得到的
收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃
IGMP协议&组播路由选择协议
IGMP:网际组管理协议
IGMP属于网络层协议,用IP数据报传递报文
组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员。
如果局域网中有一个主机响应,那么其他也属于组播组的成员将不会响应。
组播路由选择协议的目的是找出以源主机为根节点的组播转发树。
构造树可以避免在路由之间兜圈子。
对不同的多播组对应于不同的多播转发树:同一个多播组,对不同的源点也会有不同的多播转发树。
组播路由选择协议常使用的三种算法:
- 基于链路状态的路由选择
- 基于距离向量的路由选择
- 协议无关的组播(稀疏/稠密)
移动IP
移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。
移动结点:具有永久IP地址的移动设备
归属代理(本地代理):一个移动结点拥有的就居所称为归属网络。在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
外部代理(外部代理):在外部网络中帮助移动结点完成移动网络管理功能的实体称为外部代理
永久地址(归属地址/主地址):移动站点在归属网络中的原始地址
转交地址(辅地址)移动站点在外部网络使用时的临时地址
路由器
转发和路由选择的区别:
- 转发是一个路由器内不同端口的变化,而且一个分组进入输入端口不一定转发到输出端口,也有可能是协议之间通信用来维护路由信息的分组,这样的分组就会转发给路由选择处理机。
- 路由选择是比较宏观的传输路径的选择
查表和转发是路由器中最重要的
若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使得后面再进入的队列的分组由于没有存储空间只能被丢弃。
路由器中的输入和输出队列产溢出是造成分组丢失的重要原因。
三层设备的区别
路由器:可以互联两个不同网络协议的网段。
网桥:可以互联两个物理层和数据链路层不同的网段。
集线器:直通式设备,不能互联两个物理层不同的网段。
判断:对于任何层次的设备,都可以互联该层次及一下层次的不同。 错误,集线器设备是物理层设备,但是集线器无法连接两个物理层不同的网段
路由表和路由选择
路由转发总是用软件实现的。
转发表由路由表得来,可以用软件实现,也可以用特殊的硬件来实现。
转发表必须包含完成转发功能所必须的信息,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址的映射。