网络层
网络层
概念
- 物理层使用的中间设备叫做转发器(repeater)
- 数据链路层使用的中间设备叫做网桥或桥接器(bridge)
- 网络层使用的中间设备叫做路由器(router)
- 网络层以上使用的中间设备叫做网关(gateway),用网关连接两个不兼容的系统,需要在高层进行协议的转换
- 集线器:不能互连两个物理层不同网段
- 网桥:可以互连两个物理层和链路层不同的网段
- 路由器:可以互连两个不同网络层协议的网段
- IP网是虚拟的:使用IP协议使互连起来的异构网络在网络层看起来好像是一个统一的网络
- IP地址标志一台主机(或路由器)和一条链路的接口,换句话说:IP地址不仅仅指明一个主机,还指明主机所连接到的网络
- 一个IP地址在整个互联网范围内是唯一的
- IP地址是一种分等级的地址结构,其优点:
- IP地址管理机构只分配网络号,剩下的主机号由得到该网络号的单位自行分配方便IP地址管理
- 路由器仅根据目的主机所连接的网络号来转发分组,使路由表项目数大幅减少,从而减少了路由表所占的存储空间以及查找路由表的时间
- 用转发器和网桥连接起来的若干局域网仍未一个网络(都具有同样网络号),具有不同网络号的局域网必须使用路由器进行互连
- 虽然RFC文档没有规定子网掩码中的一串1是连续的,但极力推荐子网掩码选用连续的1,以免出现可能发生的差错
- 互联网规定:所有网络必须使用子网掩码
-
IP地址个数即主机个数
-
Ipv4数据报长度576B,Ipv6数据报长度1280B
网络层功能
-
路由选择与分组转发 :
-
异构网络互联
-
拥塞控制:
-
开环控制(静态)
-
闭环控制(动态)
-
-
为主机提供服务:
-
虚电路服务
-
数据报服务
虚电路服务 数据报服务 可靠通信由网络保证 可靠通信由用户主机保证 建立连接 无 每个分组使用短的虚电路号 每个分组都有终点的完整地址 同一条虚电路的分组均按照同一路由转发 每个分组独立选择路由转发 所有通过出故障的结点的虚电路均不能工作 可能会丢失分组,一些路由可能会发生改变 按序到达终点 不一定按序 端到端的差错控制和流量控制可以由网络负责,也可以由用户主机负责 端到端的差错控制和流量控制由用户主机负责
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务(不提供服务质量承诺)
-
Ipv4(IP)地址:32位
IP地址是一种逻辑地址,因为IP地址是由软件实现的
IP编址历史阶段
-
分类IP:将IP地址划分为若干固定类
IP地址::={<网络号>,<主机号>}
网络号标志主机(或路由器)所连接到的网络;主机号(host-id)标志该主机(或路由器)
A、B、C类IP地址都是单播地址
- IP地址可指派范围
最大可指派网络数 第一个可指派网络号 最后一个可指派网络号 网络中最大主机数 A 2^7 -2(环回/全0) 1 126 2^24 -2 B 2^14 -1(全0) 128.1 191.255 2^16 -2 C 2^21 -1(全0) 192.01 223.255.255 2^8 -2
- 一般不使用的特殊IP地址
网络号 主机号 作源地址 作目的地址 意义 0 0 √ × 本网络的本主机 0 host-id √ × 本网络的host-id主机 net-id 0 × × 表示一个网络 1 1 × √ 只在本网络上广播 net-id 1 × √ 在net-id上所有主机广播 127 除0/1 √ √ 用于本地软件环回测试
-
私有IP(专用IP,可叫做重用地址(reusable address))
A 10.0.0.0-10.255.255.255 1个网段 B 172.16.0.0-172.31.255.255 16个网段 C 192.168.0.0-192.168.255.255 255个网段 VPN的内联网和外联网都是基于TCP技术,一个VPN至少有一个合法全球IP
NAT路由器的通信必须有专用网内的主机发起,使用端口号的NAT也叫做网络地址与端口号转换NATP(Network Address and Port Translation)(改变了IP地址与端口号),不使用端口号的叫做传统NAT
NAT技术大大节约了IP地址
-
IP数据报的格式
首部长度:4B为单位,最小值是5 (IP首部固定长度是20B) 最大是14*4B=60B
总长度:1B为单位,指首部和数据之和的长度,总字段长度为16位即2^16 -1=65535B
标志(flag):占三位,X DF(Don't Fragment) MF(More Fragment)(只有两位有意义)
只有当DF=0时才允许分片,MF=1表示后面还有分片,MF=0表示是数据报片中最后一个
片偏移:8B为单位,较长分组再分片后,某片在原分组中相对位置
首部检验和:不采用CRC校验码
发送方:检验和置零,所有16位字反码算术运算(最高位进位结果+1)求和后取反码写入检验和
接收方:所有16位字反码算术运算求和后取反码,若为0保留,否则丢弃
路由表项必须包括:(目的网络地址,下一跳地址)
-
子网划分
二级IP地址到三级IP地址:
-
IP地址空间有时利用率很低
-
给每一个物理网络分配一个网络号会使路由器变得太大因而使网络性能变坏
-
两级IP地址不够灵活
IP地址::={<网络号>,<子网号>,<主机号>}
划分子网后,整个网络对外仍然表现为一个网络
子网号的位数中没有0,1,15,16,因为没有意义
子网号不能为全0或全1,但随着CIDR的广泛使用,现在全0和全1的子网号也可以使用了
路由表项必须包括:(目的网络地址,子网掩码,下一跳地址)
-
-
构成超网(无分类编址CIDR)
无分类域间路由选择CIDR(Classless Inter-Domain Routing)
IP地址::={<网络前缀>,<主机号>}
CIDR不使用子网,仍然可以在本单位内根据需要划分出一些子网
地址块10.0.0.0/10可以简写为10/10
星号* 之前是网络前缀,星号* 之后是IP地址主机号,可以是任意值
优点:路由聚合有利于减少路由器之间的路由选择信息交换,从而提高整个互联网的性能
路由表项必须包括:(网络前缀,下一跳地址)
在查路由表时可能会得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由——最长前 缀匹配(longest-prefix matching) ,这是因为网络前缀越长,其地址块越小,路由越具体
为了更有效的查找,通常把CIDR的路由表存放在一种层次的数据结构中,然后自上而下的按层次进行查找,最常用的就是二叉线索(binary tire)
Ipv6地址:128位
从根本上解决了地址耗尽问题
- 支持即插即用,不需要使用DHCP
- 首部为8B整数倍(首部固定长度为40B)
- 改进首部格式
- 快速处理转发数据
- 支持QoS(Quality of Service):一个网络利用各种基础技术为网络通信提供更好的服务(安全机制)来解决网络延迟和阻塞等问题
- 路由器通常不对扩展首部进行检查
- Ipv6只能在主机处分片;Ipv4可以在路由器和主机处切片
- 环回地址::1
- 地址解析协议ARP和网际网际组管理协议IGMP的功能都被合并到ICMPv6(面向报文)
Ipv6的地址:
- 单播(unicast):传统点对点通信,可以作为源地址/目的地址
- 多播(multicast):一点对多点通信,可以作为目的地址
- 任播(anycast):(新增),一点对多点,但只交付其中一个,可以作为目的地址
Ipv4向Ipv6过渡:
- 双协议栈(dual stack):通过DNS查询,返回Ipv4则使用Ipv4,返回Ipv6则使用Ipv6 Ipv4恢复到原来的Ipv6数据报首部某些字段无法恢复,这种损失是不可避免的
- 隧道技术(tunneling):把Ipv6数据报封装成Ipv4数据报
设备
路由器 :是一种具有多个输入端口和多个输出端口的专用计算机,其任务是分组转发
- 路由选择(多个路由器)
- 分组转发(一个路由器)
路由器中的输入输出队列产生溢出是造成分组丢失的重要原因
- 路由器可以隔离冲突域和广播域
- 交换机可以隔离冲突域
协议
-
网际协议IP:又称为Kahn-Cerf协议,使性能各异的网络在网络层看起来好像是一个统一的网络,当IP网上的主机进行通信时,就好像在单个网络上进行通信一样,看不见互连的各网络具体异构细节
-
地址解析协议ARP:在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表(动态更新)
ARP请求分组是广播发送的,但ARP响应分组是普通的单播
-
网际控制报文协议ICMP(Internet Control Message Protocol):装在IP数据报中作为其数据部分 ,使主机或路由器报告差错情况和提供异常情况的报告,更有效转发IP数据报,提高交付成功的机会
-
ICMP差错报告报文:
-
终点不可达
-
时间超过:traceroute(Linux)、tracert(Windows)
想知道到达目的主机所经过的路由器的IP地址,以及每个路由器的往返时间
-
参数问题
-
改变路由(重定向)
-
-
ICMP询问报文:
-
回送请求与回答:ping(应用层直接使用的ICMP,没有通过运输层的TCP/UDP)
-
时间戳请求和回答
-
-
-
网际组管理协议IGMP(Internet Management Protocol):让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组
-
使用IP数据报传递报文
-
多播路由选择协议目的:找到以源主机为根节点的组播转发树
-
-
多协议标记交换MPLS(MultiProtocol Label Switching):
-
标记交换:给IP数据报打上固定长度标记(分类),在链路层用硬件转发 ,不再上升到第三层查找转发表
-
面向连接
-
支持流量工程,平衡网络负载
-
有效支持VPN
-
MPLS首部在第二层与第三层之间
-
路由选择协议
- 静态路由选择协议(非自适应路由选择):人工配置、简单、开销小,适用简单小型网
- 动态路由选择协议(自适应路由选择):较好适应网络状态变化,实现较为复杂,开销比较大
分层次的路由选择协议:
原因:
- 互联网规模非常大
- 许多单位不愿意外界了解本单位网络的布局细节和本部门所采用的的路由选择协议,同时还希望连到互联网上
- 内部网关协议IGP(Interior Gateway Protocol):一个AS内部(域内路由选择(interdomain routing))
-
RIP(Routing Information Protocol):基于距离(跳数(hop count))向量的路由选择协议
-
应用层基于UDP
-
分布式路由选择协议
-
内部网关协议IGP中最广泛使用
-
简单、开销小
-
RIP允许一条路径最多只能包含15个路由器(距离=16相当于不可达/限制了网络规模)
-
RIP值适用于小型互连网
-
直线相连的网络的距离也可定义为0
-
一个RIP报文最多可包括25个路由
-
仅和相邻路由器交换信息(自己的路由表)
-
按固定时间间隔交换路由信息
RIP算法:
-
-
-
OSPF(Open Shortest Path First):开放最短路径优先 ,因为使用了Dijkstra提出的最短路径算法SPF
-
直接用IP数据报传送
-
使用的分布式的链路状态(link state Protocol)
-
洪泛法(flooding)向所有路由器发送信息(相邻路由器的链路状态)
-
只有当链路状态发生改变时,路由器才向所有路由器使用洪泛法发送此信息
-
所有的路由器最终都能建立一个链路状态数据库(link-state database),即全网的拓扑结构图
-
更新过程收敛得快
-
OSPF五种分组类型:
- 问候(Hello)分组:发现维持邻站的可达性(10s交换一次,40s没收到则表示不可达)
- 数据库描述(Database Description)分组:想相邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 链路状态请求(Link State Request)分组:向对方请求发送某些链路状态项目的详细信息
- 链路状态更新(Link State Update)分组:
- 链路状态确认(Link State Acknowledgment)分组:可靠的洪泛法收到更新后要发送确认
-
-
外部网关协议EGP(External Gateway Protocol):AS之间(域间路由选择(intradomain routing))
-
BGP(边界网关协议(Border Gateway Protocol)):(BGP-4)
-
采用路径向量(path vector)路由选择协议
-
应用层、基于TCP
-
寻找一条能到目的网络且比较好的路由,并非最佳路由
-
配置BGP时要选择至少一个路由器作为BGP发言人,一个BGP发言人要和其他AS的BGP发言人交换路由信息,要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话(session)
-
BGP支持CIDR
-
BGP刚刚运行时邻站交换的整个BGP路由表,但以后只需要在发生改变时更新有变化的部分
-
-
IP多播
- 与单播相比,多播(靠多播路由器实现)可以大大节约网络资源
-
多播数据报的目的地址写入的是多播组的标识符
-
多播只能用于目的地址,不能用于源地址
-
基于UDP
-
IP多播:
-
只在本局域网上进行的硬件多播:
- 组播MAC以01-00-5E开头
-
互联网的范围进行的多播
-