网络层
- 概述
- 分组转发和路由选择
- 面向连接的虚电路 VC 服务
- 无连接的数据报服务
- 网际协议IP
- IPv4
- 划分子网编址方法:子网掩码
- 无分类编址 CIDR
- IPv4地址与MAC地址
- 地址解析协议ARP
- IP数据报的发送和转发
- IPv4数据报的首部格式
- 静态路由配置
- 因特网的路由选择协议
- 路由信息协议RIP
- 开放最短路径优先协议 OSPF
- 边界网关BGP
- 网际控制报文协议ICMP
- 差错报告报文
- 询问报文
- 应用
- 虚拟专用网VPN
- 网络地址转换NAT
- IP多播
- 局域网上的硬件多播
- 在互联网上IP多播:网际组管理协议IGMP,多播路由选择协议
- IGMP
- 多播路由选择协议
- 移动IP技术
- IPv6
- 首部格式
- 表示方法
- 分类
- IPV4->IPV6过渡
- ICMPv6
- 软件定义网络SDN
- OpenFlow协议
- 体系结构
概述
分组转发和路由选择
网络层的主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为分组转发和路由选择两种重要的功能。
面向连接的虚电路 VC 服务
核心思想是“可靠通信应由网络自身来保证”。通信双方沿着已建立的虚电路发送分组。
分组的首部仅在连接建立阶段使用完整的目的主机地址,之后每个分组的首部只需要携带一条虚电路编号即可。
通信结束后,需要释放之前所建立的虚电路。
无连接的数据报服务
核心思想是“可靠通信应由用户主机来保证”。
每个分组可走不同的路径。因此,每个分组的首部都必须携带目的主机的完整地址。
这种通信方式所传送的分组可能误码、丢失、重复和失序。
网际协议IP
网际协议(Internet Protocol,IP)是TCP/IP体系结构网际层中的核心协议。
IPv4
IPv4地址是给因特网(Internet)上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的32比特的标识符。
主机号的全0和全1不能分配,所以数目要-2:
再来看网络号:
A比较特殊。A类地址的范围是1.x.x.x~126.x.x.x 发现它的网络号并没有0开头的,因为最小网络号为0,表示本网络,不能指派;最大网络号为127,作为本地环回测试地址,不能指派,所以它的网络数量是126。
B就正常了,网络号128~191,可指派网络数量是2的14次方
C也正常,网络号192~223
D是多播,224~239
E是保留,240~255,所以这个范围不应该出现东西
划分子网编址方法:子网掩码
随着更多的中小网络加入因特网,IPv4分类编址方法不够灵活、容易造成大量IPv4地址资源浪费的缺点就暴露出来了。
默认子网掩码是指在未划分子网的情况下使用的子网掩码。
无分类编址 CIDR
使用无分类编址方法的另一个好处是路由聚合(也称为构造超网)。
IPv4地址与MAC地址
在数据包的传送过程中,数据包的源IP地址和目的IP地址保持不变;
在数据包的传送过程中,数据包的源MAC地址和目的MAC地址逐链路(或逐网络)改变。
地址解析协议ARP
不能跨网络使用ARP,毕竟你要广播,而路由器是会隔离广播域的
IP数据报的发送和转发
IPv4数据报的首部格式
版本:IP版本,此处为4
首部长度:
可选字段:长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能。
填充:用来确保IPv4数据报的首部长度是4字节的整数倍,使用全0进行填充。
区分服务:长度为8个比特,用来获得更好的服务。
总长度:长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度)。最大取值为二进制的16个比特1,即十进制的65535(很少传输这么长的IPv4数据报)。
分片:标志+标识+片偏移
生存时间TTL:长度为8个比特,最大取值为二进制的11111111,即十进制的255。该字段的取值最初以秒为单位。因此,IPv4数据报的最大生存时间最初为255秒。路由器转发IPv4数据报时,将其首部中该字段的值减去该数据报在路由器上所耗费的时间,若结果不为0就转发,否则就丢弃。生存时间字段后来改为以**“跳数”**为单位,路由器收到待转发的IPv4数据报时,将其首部中的该字段的值减1,若结果不为0就转发,否则就丢弃。
【举例】生存时间TTL字段的作用 —— 防止被错误路由的IPv4数据报无限制地在因特网中兜圈
协议:长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU。
首部检验和:长度为16个比特,用于检测IPv4数据报在传输过程中其首部是否出现了差错。IPv4数据报每经过一个路由器,其首部中的某些字段的值(例如生存时间TTL、标志以及片偏移等)都可能发生变化,因此路由器都要重新计算一下首部检验和。
上述检验和的计算方法不仅用于IP协议,还用于运输层的用户数据报协议UDP和传输控制协议TCP,常被称为因特网检验和(Internet Checksum)。这种检验和的检错性能虽然不如CRC,但更易用软件实现。
由于网际层并不向其高层提供可靠传输的服务,并且计算首部检验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部检验和,从而更快转发IP数据报。
源IP、目的IP地址:32比特
静态路由配置
静态路由配置是指用户或网络运维人员使用路由器的相关命令给路由器人工配置路由表。人工配置方式简单、开销小、但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中采用。
因特网的路由选择协议
路由信息协议RIP
路由信息协议(Routing Information Protocol,RIP)是内部网关协议中最先得到广泛使用的协议之一,其相关标准文档为[RFC 1058]。
RIP要求自治系统AS内的每一个路由器,都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为距离向量(Distance-Vector,D-V)。
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。
当到达同一目的网络有多条RIP距离相等的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路径上。
问题:“坏消息传播得慢”,容易被谣言误导
开放最短路径优先协议 OSPF
开放最短路径优先(Open Shortest Path First,OSPF)协议是为了克服路由信息协议RIP的缺点在1989年开发出来的。
“最短路径优先”是因为使用了Dijkstra提出的最短路径算法(Shortest Path First,SPF)。
OSPF是基于链路状态的,而不像RIP是基于距离向量的。
OSPF基于链路状态并采用最短路径算法计算路由,从算法上保证了不会产生路由环路。
边界网关BGP
边界网关协议(Border Gateway Protocol,BGP)属于外部网关协议EGP这个类别,用于自治系统AS之间的路由选择协议。
由于在不同AS内度量路由的“代价”(距离、带宽、费用等)可能不同,因此对于AS之间的路由选择,使用统一的“代价”作为度量来寻找最佳路由是不行的。
BGP只能是力求寻找一条能够到达目的网络且比较好的路由(即不能兜圈子),而并非要寻找一条最佳路由。
该路由协议的报文被封装到哪个TCP协议的分组中进行传输连接
网际控制报文协议ICMP
为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCP/IP体系结构的网际层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)[RFC 792]。
主机或路由器使用ICMP来发送差错报告报文和询问报文。
ICMP报文被封装在IP数据报中发送。
差错报告报文
-
终点不可达
-
源点抑制
-
超时
另外,当终点在预先规定的时间内未能收到一个数据报的全部数据报分片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过(超时)报文。 -
参数问题(误码)
-
改变路由(重定向)
询问报文
应用
虚拟专用网VPN
给专用网内各主机配置的IP地址应该是该专用网所在机构可以自行分配的IP地址,这类IP地址仅在机构内部有效,称为专用地址(Private Address),不需要向因特网的管理机构申请。
IP数据报在因特网中可能要经过多个网络和路由器,但从逻辑上看,路由器R1和R2之间好像是一条直通的点对点链路,因此也被称为IP隧道技术。
网络地址转换NAT
网络地址转换(Network Address Translation,NAT)技术于1994年被提出,用来缓解IPv4地址空间即将耗尽的问题。
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
这种方法需要在专用网络连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器称为NAT路由器,它至少要有一个有效的外部全球地址IPG。这样,所有使用内部专用地址的主机在和外部因特网通信时,都要在NAT路由器上将其内部专用地址转换成IPG。
NAT(和NAPT)的一个重要特点就是通信必须由专用网内部发起,因此拥有内部专用地址的主机不能直接充当因特网中的服务器。
IP多播
多播(Multicast,也称为组播)是一种实现“一对多”通信的技术,与传统单播“一对一”通信相比,多播可以极大地节省网络资源。
局域网上的硬件多播
由于IP多播地址与多播MAC地址的映射关系不是唯一的,因此收到IP多播数据报的主机还要在网际层利用软件进行过滤,把不是主机要接收的IP多播数据报丢弃。
在互联网上IP多播:网际组管理协议IGMP,多播路由选择协议
网际组管理协议(Internet Group Management Protocol,IGMP)是TCP/IP体系结构网际层中的协议,其作用是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(实际上是主机中的某个进程)加入或退出了某个多播组。
IGMP仅在本网络有效,使用IGMP并不能知道多播组所包含的成员数量,也不能知道多播组的成员都分布在哪些网络中。
仅使用IGMP并不能在因特网上进行IP多播。连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把IP多播数据报用最小的代价传送给所有的多播组成员,这就需要使用多播路由选择协议。
IGMP
多播路由选择协议
多播路由选择协议的主要任务是:在多播路由器之间为每个多播组建立一个多播转发树。
移动IP技术
IPv6
首部格式
版本字段:长度为4比特,用来表示IP协议的版本。对于IPv6该字段的值是6。
通信量类字段:长度为8比特,该字段用来区分不同的IPv6数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
有效载荷长度字段:长度为16比特,它指明IPv6数据报基本首部后面的有效载荷(包括扩展首部和数据部分)的字节数量。该字段以字节为单位,最大取值为65535,因此IPv6数据报基本首部后面的有效载荷的最大长度为65535字节。
下一个首部字段:长度为8比特。该字段相当于IPv4数据报首部中的协议字段或可选字段。
当IPv6数据报没有扩展首部时,该字段的作用与IPv4的协议字段一样,它的值指出了IPv6数据报基本首部后面的数据是何种协议数据单元PDU。
当IPv6数据报基本首部后面带有扩展首部时,该字段的值就标识后面第一个扩展首部的类型。
跳数限制字段:长度为8比特。该字段用来防止IPv6数据报在因特网中永久兜圈。
源点在每个IPv6数据报发出时即设定某个跳数限制(最大255跳)。每个路由器在转发IPv6数据报时,要先把跳数限制字段中的值减1。当跳数限制的值为0时,就把这个IPv6数据报丢弃(即不转发)。
源地址字段和目的地址字段:长度都为128比特。分别用来填写IPv6数据报的发送端的IPv6地址和接收端的IPv6地址。
表示方法
一共32个十六进制数字,四个一组共八组
一个点分十进制代表32位的ipv4地址,而一个十六进制组代表16位,所以一个点分十进制代表ipv6里面的两个小组
分类
IPV4->IPV6过渡
- 使用双协议栈
- 使用隧道技术:当IPv6数据报要进入IPv4网络时,将IPv6数据报重新封装成IPv4数据报,即整个IPv6数据报成为IPv4数据报的数据载荷。
ICMPv6
ICMPv6比ICMPv4要复杂得多,它合并了原来的地址解析协议ARP和网际组管理协议IGMP的功能。因此与IPv6配套使用的网际层协议就只有ICMPv6这一个协议。
软件定义网络SDN
SDN最初只是学术界讨论的一种新型网络体系结构。
在SDN体系结构中,路由器中的路由软件都不存在了。因此,路由器之间不再交换路由信息。
在控制层面中,有一个在逻辑上集中的远程控制器。
逻辑上集中的远程控制器在物理上可由不同地点的多个服务器组成。
SDN这种新型网络体系结构的核心思想:把网络的控制层面和数据层面分离,而让控制层面利用软件来控制数据层面中的许多设备。
OpenFlow协议
OpenFlow协议是一个得到高度认可的标准,在讨论SDN时往往与OpenFlow一起讨论。
OpenFlow协议可被看成是SDN体系结构中控制层面与数据层面之间的通信接口。