第四章 网络层
1.概述
-
网络层的主要任务是实现网络互连,实现数据包在各网络间的传输
-
要实现网络层任务,需要解决以下问题:
-
网络层向运输层提供怎样的服务(可靠/不可靠传输)
-
网络层寻址问题
-
路由选择问题
-
2.网络层提供的两种服务
-
面向连接的虚电路服务
-
可靠通信由网络来保证
-
必须建立网络层的连接,即虚电路VC
-
通信双方沿着已建立的虚电路发送分组
-
目的主机的地址仅在连接建立时使用,之后每个分组的首部只需要携带虚电路的编号
-
通信结束后需要释放虚电路
-
很多广域分组交换网都使用面向连接的虚电路服务(曾经的X.25和已经逐渐过时的帧中继FR,异步传输模式ATM等)
-
-
无连接的数据报服务
-
可靠通信由用户主机来保证
-
不需要建立网络层连接
-
每个分组可走不同路径
-
首部必须携带目的主机的完整地址
-
传输分组可能误码,丢失,重复和失序,网络本身不提供端到端的可靠服务
-
3.IPV4地址
分类编址的IPV4地址
划分子网的IPV4地址
无分类编址的IPV4地址
IPV4地址的应用规划
定长子网掩码FLSM
变长子网掩码VLSM
4.IP数据报的发送与转发
-
主机发送IP数据报:判断目的主机是否与自己在同一个网络(将目的IP与子网掩码相与),进行直接交付或通过默认网关(路由器)间接交付
-
路由器转发IP数据报:检查IP数据报首部是否出错,无错则根据目的地址在路由表中查找匹配的条目进行转发
5.静态路由配置
6.路由选择协议
-
静态路由选择:人工配置,不能适应网络状态变化,一般只在小规模网络中采用
-
动态路由选择:路由器通过路由选择协议自动获取路由信息,能适应网络状态变化,适用于大规模网络
常见的路由选择协议
路由信息协议RIP
开放最短路径优先OSPF
-
开放最短路径优先OSPF是公开的使用最短路径算法SPF的协议,算法保证不会产生路由环路
-
OSPF基于链路状态。链路状态指路由器和哪些路由器相邻,以及相应链路的代价(费用,距离,时延,带宽等,由网络管理人员决定)
-
OSPF相邻路由器之间通过交换问候(Hello)分组,建立和维护邻居关系
-
使用OSPF的每个路由器都会产生链路状态通告LSA,LSA包括:直连网络的链路状态信息;邻居路由器的链路状态信息
-
LSA被封装在链路状态更新分组LSU中,采用洪泛法发送
-
使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA
-
通过各路由器洪范发送封装LSA的LSU分组,各路由器的LSDB最终状态将达到一致
-
使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他路由器的最短路径,即各自的路由表
-
OSPF有以下五种分组类型
-
问候分组:发现和维护邻居路由器的可达性
-
数据库描述分组:向邻居路由器ge9ichu自己的链路状态数据库中的所有链路状态项目的摘要信息
-
链路状态请求分组:向邻居路由器请求发送某些链路状态项目的详细信息
-
链路状态更新分组:路由器使用这种分组将其链路状态进行洪范发送,即用洪泛法对全网更新链路状态
-
链路状态确认分组:对链路状态更新分组的确认分组
-
-
OSPF在多点接入网络应用:
-
为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域
边界网关协议BGP
-
外部网关协议EGP在不同自治系统之间选择一条能够到达目的网络且比较好的路由,由于个自治系统度量路由的代价不同,无法用代价衡量最佳路由,因此EGP不一定要找到一条最佳路由
-
配置BGP时,每个自治系统的管理员选择至少一个路由作为该自治系统的BGP发言人
-
不同自治系统的BGP发言人要交换路由信息,必须先建立TCP连接,端口号为179
-
在此TCP连接上交换BGP报文以建立BGP会话
-
利用BGP会话交换路由信息(增加撤销路由,报告出错情况等)
-
使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的临站/对等站
-
-
BGP发言人交换网络可达性的信息(到达某个网络要经过的一系列自治系统)
-
BGP发言人交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的好的路由
-
BGP-4有以下四种报文
-
OPEN报文:与相邻的另一个BGP发言人建立关系,使通信初始化
-
UPDATE报文:用来通告某一路由的信息,以及列出要撤销的多条路由
-
KEEPALIVE保活报文:用来周期性证实临站的连通性
-
NOTIFICATION报文:用来发送检测到的差错
-
7.IPv4数据报的首部格式
-
版本:表示IP协议的版本
-
首部长度:4字节,表示IP数据报首部的长度,该字段的取值以4字节为单位,最小取值为5,表示只有20字节固定部分,最大取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分
-
可选字段:用于支持排错,测量,安全等,由于长度不定增加了路由器处理IP数据报的开销,实际上很少使用
-
填充:填充保证IP数据报首部为4字节的整数倍
-
区分服务字段:用数值提供不同等级的服务质量,一般情况下都不使用该字段
-
总长度字段:表示IP数据报总长度(首部+数据载荷)
-
标识,标志,片偏移用于IP数据报分片。当IP数据报长度超过帧的数据载荷的最大长度(最大传输单元MTU),无法封装,需要分片
-
标识:同一个数据报的各分片数据报有相同标识。IP软件维持计数器,每产生一个数据报,计数加1,并将该值赋给标识字段
-
标志:3bit
-
DF位:1表示允许分片
-
MF位:1表示还有分片,0表示这是最后一个分片
-
保留位:必须为0
-
-
片偏移:以8个字节为单位。指出分片数据报的数据载荷部分偏移其原数据报的位置
-
-
生存时间TTL:最初以秒为单位,最大生存周期为255秒,在路由器转发时减去在本路由器上耗费的时间。现在以跳数为单位,路由器转发时-1。
-
协议字段:指明数据部分是何种协议数据单元
-
1:ICMP报文
-
6:TCP报文
-
-
首部检验和:使用因特网检验和检测首部在传输过程中是否出现差错。由于IP层不提供可靠传输服务,因此IPv6中,路由器不再计算首部校验和。
8.网际控制报文协议ICMP
-
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
-
主机或路由器使用ICMP来发送差错报告报文和询问报文。
-
ICMP数据报封装在IP数据报中发送
-
ICMP差错报文共有以下五种:
-
终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知等13种错误。
-
源点抑制:当路由器或主机由于拥塞而丢弃数据报时,向源点发送源点抑制报文,使源点知道应当吧数据报的发送速率放慢
-
时间超过:当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL-1,若为0则丢弃该IP数据报,并向源点发送时间超过报文。另外,终点在预规定时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会发送时间超过报文。
-
参数问题:当路由器或目的主机收到IP数据报后,若首部检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
-
改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过的更好路由)。
-
-
以下情况不应发送ICMP差错报告报文
-
对ICMP差错报告报文不再发送ICMP差错报告报文
-
对第一个分片的数据报片的后续数据报片不再发送ICMP差错报告报文
-
对具有多播地址的数据报都不发送ICMP差错报告报文
-
对具有特殊地址的数据报(如127.0.0.0或0.0.0.0)的数据包不发送ICMP差错报告报文
-
-
ICMP询问报文有以下两种:
-
回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定目的主机发送的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达及了解有关状态。
-
时间戳请求和回答:请求某个主机或路由器回答当前的日期和时间。这种报文用来进行时钟同步和测量时间。
-
-
ICMP应用举例:
-
分组网间探测PING
-
用来测试主机或路由器间的连通性
-
应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
-
使用ICMP回送请求和回答报文
-
-
跟踪路由traceroute
-
用来测试IP数据报从源主机到达目的主机要经过哪些路由器
-
Windows:tracert命令;应用层直接使用网际层ICMP;使用了ICMP回送请求和回答报文
-
UNIX:traceroute命令;在运输层使用UDP协议;仅使用ICMP差错报告报文
-
-
9.虚拟专用网VPN与网络地址转换NAT