网络层所提供的服务
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
网络层不提供服务质量的承诺
不需要完整预先地建立连接,每个分组独立地选择转发的路由
网际协议IP
有三个与IP协议配套的协议:
地址解析协议ARP
网际控制报文协议ICMP
网际组管理协议IGMP
虚拟互联网络
为了将不同的网络连接起来,我们需要使用一些中间设备
-
物理层使用转发器
-
数据链路层使用网桥或桥接器
-
网络层使用路由器
-
网络层以上使用网关
当连接的不同的网络使用同一的协议,就可以将实际上结构不同的网络视为一个统一的虚拟网络。这样对于连接在这个虚拟网络上的主机,网络的结构就是透明的
IP地址
每一个IP地址都由网络号和主机号构成,IP地址管理机构在分配IP地址时只需分配网络号,主机号则由相关单位自行分配;路由器可直接通过网络号发送至对应网络而不须考虑主机号,减少了路由表的使用
当一台主机同时连接到两个网络时,须分配两个(网络号)不同的IP地址;IP地址是标志一台主机和一条链路的接口
具有相同网络号的主机组成一个网络
IP地址的分类
IP地址与硬件地址
IP地址是一种逻辑地址,而硬件地址是一种物理地址
发送端在发送数据时,须将源IP地址和目的IP地址封装在IP数据报中,而将源MAC地址和目的MAC地址封装在MAC帧里
当数据由路由器转发时,路由器将MAC帧剥离首部尾部,根据IP目的地址规划路由,再重新封装转发
在数据转发的过程中,源IP地址和目的IP地址是不发生改变的,而MAC地址每经过一次转发即被重新封装
数据链路层工作时只能看见MAC帧,而不能看见IP地址
地址解析协议ARP
已知主机的IP地址,可以通过ARP找出相应的MAC地址
每一台主机中都设有一个ARP高速缓存,用于存储本局域网中所有主机/路由器的IP地址到MAC地址的映射表
当映射表中没有目的主机的MAC地址时,ARP进程在局域网内广播一个ARP请求分组,请求内容包括本机的IP地址和MAC地址、目的主机的IP地址
目的主机接收到ARP请求分组后,即向发送主机发送一份ARP响应分组(单播),内容包括目的主机的IP地址及MAC地址
源主机接收到ARP响应分组后,即将目的主机的MAC地址写入映射表中
每一个映射地址都有一个生存时间,以应对变化的网络连接情况
若是需要发送的主机不在同一个局域网内,则不能解析出该主机的MAC地址(也不需要)。此时,发送端只需解析出负责转发该数据报的位于本局域网的路由器的MAC地址,然后在IP数据报首部填入目的主机的IP地址作为目的IP地址、本局域网的路由器的MAC地址作为目的MAC地址,再由该路由器继续解析跳转的,位于同一局域网的目的主机或路由器的MAC地址,最终成功完成数据传输。
IP数据报的格式
-
版本号:占用4位二进制数,表示该IP数据报使用的IP协议版本。目前Internet中使用的主要是TCP/IP协议族中版本号为4的IP协议。
-
头长度:占用4位二进制位,此域指出整个报头的长度(包括选项),该长度是以32位二进制数为一个计数单位的,接收端通过此域可以计算出报头在何处结束及从何处开始读数据。普通IP数据报(没有任何选项)该字段的值是5(即20个字节的长度)。
-
服务类型(TOS、type of service):占用8位二进制位,用于规定本数据报的处理方式。一般情况不使用
-
总长度:占用16位二进制位,总长度字段是指整个IP数据报的长度(报头区+数据区),以字节为单位。利用头部长度字段和总长度字段就可以计算出IP数据报中数据内容的起始位置和长度。由于该字段长度为16位二进制数,因此理论上IP数据报最长可达65536个字节(事实上受物理网络的限制,要比这个数值小很多)。
-
标识:表示被分片的数据报属于哪一个数据报
-
标志:在IP数据报头部有一个叫“标志”的字段,用3位二进制数表示:
不分片DF(Do not Fragment)标志如果被置1,则数据报在传输过程中不能被分片,如网络连通性测试命令ping就可以用-F参数设置为在数据传输时不分片,但这样当数据不能通过MTU较小的网络时,将产生数据不可达的错误。
片未完MF(More Fragment)标志如果被置1,说明该数据报不是分片后的最后一个数据报,最后一个数据报的该位被置0。 -
片偏移:路由器负责对数据报进行分片,IP数据报被分片后,各片数据区在原来IP数据区中的位置用13位片偏移来表示。相对于用户数据字段的起点,该片从何处开始,即将该片首字节在原数据报中的字节位置除以8,即为片偏移量
-
生存时间(TTL,time to live):占用8位二进制位,它指定了数据报可以在网络中传输的最长时间。实际应用中把生存时间字段设置成了数据报可以经过的最大路由器数。TTL的初始值由源主机设置(通常为32、64、128或256),一旦经过一个处理它的路由器,它的值就减1。当该字段为0时,数据报就丢弃,并发送ICMP报文通知源主机,因此可以防止进入一个循环回路时,数据报无休止地传输下去。
-
上层协议标识:占用8位二进制位,IP协议可以承载各种上层协议,目标端根据协议标识就可以把收到的IP数据报送到TCP或UDP等处理此报文的上层协议了。
-
校验和:占用16位二进制数,用于协议头数据有效性的校验,可以保证IP报头区在传输时的正确性和完整性。头部检验和字段是根据IP协议头计算出的检验和,它不对头部后面的数据进行计算。
原理:发送端首先将检验和字段置0,然后对头部中每16位二进制数进行反码求和的运算,并将结果存在校验和字段中。 由于接收方在计算过程中包含了发送方放在头部的校验和,因此,如果头部在传输过程中没有发生任何差错,那么接收方计算的结果应该是全1。
-
源地址:占用32位二进制数,表示发送端IP地址。
-
目的地址:占用32位二进制数,表述目的端IP地址。
IP层转发分组
若目的主机在该路由器所属的网络中,则直接交付;若不在,则转发给下一跳路由器
-
默认路由:若某路由所传输的大量的目的主机所需的下一跳为同一个路由器,则可以将此路由器设置为默认路由
0.0.0.0
,当路由表中没有目的主机的地址时,选择默认路由发送 -
特定主机路由:为了方便管理人员,可以将某台主机的IP地址直接录入路由表中,地址掩码改为
255.255.255.255
-
路由器接收到一个待转发的数据报时,首先从路由表得到下一跳的IP地址,将该IP地址发给数据链路层,通过ARP协议得到该路由器的物理地址,再根据该物理地址找到路由器
划分网络
划分子网
两级IP地址(网络号、主机号)容易造成IP地址的浪费,路由表的扩大和灵活性的削弱
在一个网络号下,可以划分若干子网,通过减少主机号的位数作为子网号
- 子网掩码:向路由器表示自己的子网号长度,若将目的IP地址与子网掩码逐位相与,即可得出子网的网络地址;所以子网的路由器必须将自己所在子网的子网掩码告知其他路由器,并将其加入路由表中
划分超网
无分类域间路由选择CIDR
CIDR消除了传统的A、B、C类地址和子网划分,将32位的IP地址划分为网络前缀、主机号两部分
在IP地址后加上斜线/
然后写上网络前缀所占的位数
CIDR地址块:网络前缀相同的IP地址
最长前缀匹配:使用CIDR时,由网络前缀和下一跳地址组成的IP地址可能不能得到唯一的匹配结果,此时我们从匹配结果中选择具有最长网络前缀的路由
二叉线索查找:最长前缀匹配造成的后果之一就是资源的浪费,为了进行有效的查找,我们将无分类编址的路由表存放在一种层次的数据结构中,再从根节点逐一向下查找
ICMP(Internet Control Message Protocol)国际控制报文协议
ICMP允许主机或路由器报告差错情况/提交异常信息报告
ICMP报文主要有
- 差错报告报文:由头部、IP数据报首部、IP数据报数据字段的前8字节构成
-
终点不可达:路由器或主机不能交付数据报
-
时间超过: 路由器收到生存时间为0的数据报,向源点发送时间超过报文;终点不能在规定时间内收到一个完整的数据报,向源点发送 时间超过报文
-
源站抑制:由于网络拥塞导致的数据报丢失,向源点发送源站抑制报文;调整源站的报文发送频率
-
参数问题: 数据报的首部发生错误时,向源点发送参数问题报文
-
改变路由: 路由器认为本次传输有更好的路由选择
- 重定向报文
最初,计算机并不和互联网上的主机直接交换数据,需要发送的数据包转发给某个特定的路由器,路由器再将最佳路由以改变路由报文告知主机
- 询问报文
-
回送请求和回答:回送请求报文是向特定主机发送的询问,收到回送请求报文的主机须发送回送回答报文,以检测目的站是否可达等情况
-
时间戳请求和回答:时间戳请求报文时请某台主机或路由器回答当前的日期和时间,回答报文中有一个32位的字段,表示从1900/01/01到现在的秒数,以进行时钟同步和时间测量
多播不返回ICMP差错报文
路由选择协议
基本概念
理想的路由算法
-
算法必须是正确和完整的
-
算法在计算上是简单的
-
算法能适应通信量和网络拓扑的变化
-
具有稳定性
-
算法是公平的
-
算法是最佳的
分层次的路由选择协议
-
内部网关协议
-
外部网关协议
RIP(Routing Information Protocol)
RIP要求网络中的每一个路由器都要维护从它自己到每一个目的路由的距离记录
-
仅和相邻的路由器交换信息
-
相邻的路由器交换路由表
-
每隔固定的时间交换信息
距离向量算法
若有相邻路由器X发送RIP报文
-
修改下一跳的地址为X,距离+1
-
若原路由表没有该目的网络,添加,否则转3
-
若路由表中下一跳为X,替换,否则转4
-
若距离小于原路由表中距离,更新,否则什么也不操作
若3分钟没有收到相邻路由器的信息,将该路由器设为16(不可达)
RIP报文格式
RIP协议使用运输层用户数据报UDP进行传送
OSPF(Open Shortest Path First)
-
向本自治系统的所有路由器发送信息
-
发送与本路由器相邻的路由器的链路状态
-
链路状态发生变化时,发送信息
为了使OSPF能用于更大规模的网络,将自治系统划分为若干个略小的区域,此时就仅在区域内部进行链路状态交换.
不同区域之间通过主干区域进行通信,由主干路由器负责不同区域的信息交换;不同自治系统的信息交换由自治系统边界路由器负责
- 自治系统
五种分组方式
-
问候分组:发现和维持邻站的可达性
-
数据库描述分组: 向邻站给出链路状态数据库中链路状态项目的摘要信息
-
链路状态请求分组: 向对方请求链路状态项目
-
链路状态更新分组: 将自己的链路状态通知邻站
-
链路状态确认分组: 对更新的确认
BGP
配置BGP时,管理员须设置BGP发言人,BGP发言人负责与其他自治系统的BGP发言人交换路由信息
BGP交换路由信息即可得到到达其他自治系统的较好路由
BGP-4的四种报文
-
OPEN报文:通信初始化;
由版本号,自治系统号,保持时间(以秒计算的保持通话时间),BGP标识符,可选参数长度,可选参数构成 -
UPDATE报文: 报告路由信息,撤销指定路由;
由不可行路由长度,撤销路由,路径属性总长度,路径属性(增加的路径属性),网络层可达性信息 -
KEEPALIVE报文: 周期验证邻站连通性;只包含首部
-
NOTIFICATION报文: 发送检测到的差错;包括差错代码,差错子代码,差错数据
路由器
路由器是具有多个输入端口和多个输出端口的专用计算机
路由选择部分:路由选择部分由路由选择处理机负责,主要根据路由选择协议构造路由表
分组转发部分:由交换结构,输入端口,输出端口构成
路由器只有三层协议栈,并不涉及网络层之上的协议栈
IPv6
-
版本:指明协议的版本
-
通信量类: 区分不同IPv6数据报类别
-
流标号: 用于实时音频/视频的传送,同一个流的数据报拥有同一个流标号
-
有效载荷长度:除基本首部之外的IPv6数据报长度
-
下一个首部: 若没有扩展首部,指明本数据报交付的高层协议;若有扩展首部,指明扩展首部的类型
-
跳数限制: 每经过一个路由器,该值减一;该值为0时,丢弃
-
源地址
-
目的地址
路由器不处理IPv6扩展首部.
从IPv4向IPv6过渡
双协议栈
在还未完全过渡到IPv6时,使一部分主机既能与IPv6系统通信,又能与IPv4系统通信;使用DNS查询地址种类
路由器负责将使用不同协议的主机之间的数据报进行首部转换
隧道技术
IPv6的数据报进入IPv4网络时,将整个IPv6报文前加上IPv4首部,原来的数据报就成为了数据部分,离开IPv4网络时,再将数据部分交给主机
IP多播
IP多播无需向众多的主机逐一发送数据报,只需向少数多播路由器发送数据报,再由路由器逐级复制转发,直至传送至目的局域网,即可进行硬件多播
多播数据报中并不写入目的主机的IP地址,而是写入一个D类地址作为多播组的标识符
硬件多播
IGMP/多播路由选择协议
IGMP(网际组管理协议):让连接在本地局域网上的多播路由器知道本局域网是否有主机参加或退出某个多播组
多播路由选择协议:由于主机可能随时加入或退出某个多播组,在网络拓扑没有改变的情况下,路由器必须随时调整分发计划;
IGMP
-
首先,某台主机加入新的多播组时,该主机须向多播组的多播地址发送一个IGMP报文,声明自己要成为该多播组的成员,多播路由器则需要将新的成员关系进行转发
-
由于组成员在不断变化,本地多播路由器须周期性地轮询本地局域网的主机,以便获得最新的组成员关系
多播路由选择协议
-
洪泛与剪除:源点向其他所有路由器发送多播数据报;每一个路由器收到数据报后,判断数据报是否是从最短路径发送的,若不是,则丢弃,若是,向下转发;若某路由器的下游已经没有多播组的成员,则将其下方剪除
-
隧道技术:与IPv6的过渡技术类似,当两个需要通信的多播路由器之间没有支持多播的网络,则将多播数据报包装成单播数据报发送,穿过隧道后再剥离首部
-
基于核心的发现技术
VPN/NAT
VPN
为了满足单位的内部通信,同时防止污染外部IP全球地址,需要指明一些专用地址,这些专用地址可以在不同的单位重复使用
同一个单位可能拥有两个相隔很远的场所,于是两个场所之间需要在互联网上通信;两个场所分别存在一个有合法IP地址的路由器,需要发送跨场所信息时,先将信息加密,再封装成外部数据报,通过互联网传送后再由接收方剥离头部解密
NAT
当专用网内的主机需要与互联网上的主机进行通信时,在无法申请到全球IP地址的情况下,可以使用网络地址转换(NAT),通过将专用网的IP地址转换为NAT路由器的全球IP地址进行发送
MPLS
工作原理
在MPLS域的入口处对IP数据报进行标记,这样,转发时就无需上升到网络层,而是直接在链路层内通过LSR(标记交换路由器)进行转发
-
LSR构造路由表
-
入口结点给IP数据报插入MPLS首部,并进行转发
-
MPLS首部仅在两个LSR之间有意义,分组经过LSR时,LSR更换MPLS首部
-
IP数据报离开MPLS域时,剥离MPLS首部
本文共6863字符