4.1网络层服务(not end-end)
从发送主机向接收主机传送数据段(segment):
发送主机->将数据段封装到数据报中
接收主机->向传输层交付数据段
每个主机和路由器都要运行网络层协议,其中,路由器检验穿越它的IP数据报的头部域,决策如何处理数据报。
网络层的核心功能-转发与路由
转发:将分组从路由器的输入端口转移到合适的输出端口。
每个路由器维护一个转发表(事先建立),转发表确定如何在路由器中转发分组
路由:确定分组从源到目的的路径。由 路由算法(协议)确定通过网络的端到端路径
网络层的核心功能-连接建立
是某些网络的重要功能(如ATM)
数据分组传输之前两端主机需要首先建立虚拟连接
网络层连接:两个主机之间(网络设备参与)(not end-end)
传输层连接:两个应用进程之间(对网络设备透明)(end-end)
网络层服务模型(service model):
不同的网络提供的服务模型不同
无连接服务:
不事先为系列分组的传输确定传输路径
每个分组独立确定传输路径
不同分组可能传输路径不同
例子:
数据报网络(类似传输层的无连接服务UDP)
连接服务:
首先确定从源到目的的路径
沿该路径传输系列分组
系列分组传输路径相同,顺序得到保障
传输结束后拆除连接
例子:
虚电路网络(类似传输层的面向连接服务TCP)
4.2:虚电路网络与数据报网络
网络层服务与传输层服务的本质区别:
网络层提供主机到主机的服务,是网络核心的实现;传输层实现端到端的服务
虚电路(Virtual Circuits):一条从源主机到目的主机,类似于电路的路径(逻辑连接)
采用分组交换,每个分组的传输利用链路的全部带宽(与电路交换的最大差异)
源到目的路径经过的网络层设备共同完成虚电路功能
虚电路的通信过程:
呼叫建立(call setup)->数据传输->拆除呼叫
数据传输:每个分组携带虚电路标识(VCID),在相应的虚电路上进行传输,而不是目的主机地址
虚电路经过的每个网络设备,都需要维护每条经过它的虚电路连接状态
链路、网络设备资源(如带宽、缓存等)可以对VC进行预分配:预分配资源==可预期服务性能
虚电路的具体实现:
虚电路的组成:
1.从源主机到目的主机的一条路径
2.虚电路号(VCID),在虚电路上的每段链路具有自己的编号(同一条VC,在每段链路上的VCID通常不同)
3.虚电路上的每个网络层设备(如路由器),利用转发表记录经过该设备的每条虚电路(依据转发表改写/替换虚电路号)
虚电路信令协议:用于VC的建立、维护与拆除
建立:路径选择(需要路由)
应用于虚电路网络,目前的Internet不采用
数据报网络:
网络层无连接,每个分组携带目的地址
路由器根据分组的目的地址转发分组,基于路由协议/算法构建转发表,通过检索转发表转发分组
每个分组独立选取路径(数据报路径可能不同),因此可能乱序到达目的主机
数据报转发表:
最长前缀匹配优先原则:优先选择与分组目的地址匹配前缀最长的入口
数据报网络 or VC网络:
4.3:IPv4协议
Internet网络层:
IP数据报(分组)的格式:
首部长度以4字节为单位(换算成10进制后)
服务类型:(区分服务1998)指示期望获得哪种类型的服务,只有在网络提供区分服务时使用,一般情况下不使用,因此通常IP分组的第二字节的值为00H
总长度字段:IP分组的总字节数(首部+数据)
生存时间:IP分组在网络中可以通过的路由器数。路由器转发一次分组,TTL-1,当TTL=0时,路由器丢弃该IP分组
协议:指示IP分组封装的是哪个协议的数据包,实现IP协议的复用/分解
首部校验和:实现对IP分组首部的差错检测,由于TTL每次转发都会减1,因此每次转发后,校验和都要重新进行计算,即逐跳计算、逐跳校验
填充:长度可变,范围在0-3B之间,目的是补充整个首部,符合32位对齐。即保证首部长度是4字节的倍数
IP分片:
最大传输单元(MTU):链路层数据帧可封装数据的上限(byte)。不同链路的MTU不同
当大的IP分组向较小的MTU链路转发时,可以被"分片"(fragmented)。是否可以分片取决于某些标志位。大的IP分组不允许分片时,路由器会把它扔掉,并向源主机发送一个ICMP报文
分片时,路由器把1个IP分组被分为多片IP分组,IP分片到达目的主机后进行“重组”(目的主机负责),其中,IP首部的相关字段(总长度,标识,标志位,片偏移)用于标识分片以及确定分片的相对顺序。
如果分片们到达目的主机时丢失了一部分,目的主机会先等待一段时间,如果还没收到,目的主机会把它们全丢了。
标识(ID):标识一个IP分组。由IP协议、计数器、源IP地址、目的IP地址共同产生
标志位:(3位)
MF=1,说明是分片出来的分组,并且是 非最后一片
MF=0的具体含义由片偏移确定:
若一个IP分组没有经过分片,则其片偏移量为0
若MF=0且片偏移量不等于0,则说明是最后一片
片偏移量:一个IP分组分片封装原IP分组数据的相对偏移量。片偏移字段以8字节为单位(???)。因此,一个最大分片可封装的数据应该是8的倍数。
IP分片过程:
IP编址:
IP分组:
源地址(SA)、目的地址(DA)
接口(interface):主机/路由器与物理链路的链接,实现网络层的功能
路由器通常有多个接口,主机只有1个或2个接口
IPv4:用32位比特编号标识主机、路由器的接口
二进制->点分十进制:
IP地址与每个接口关联
IP地址:
同一个区域网络中,接口IP的网络号相同->构成IP子网(不跨越路由器,可以彼此物理联通的接口)
有类IP地址:
D类只能作为IP分组中的目的地址(多播地址)
E类作为研究使用
特殊的IP地址(不能分配给接口):(注:同样适用于后面的拥有子网掩码的HostID)
NetID为127(A类网络)
私有IP地址(在公共互联网上无效):
IP子网划分与子网掩码:
划分:
子网掩码:
形如IP地址,32位->点分十进制形式
取值:netID、SubID位全取1;HostID位全取0
子网地址+子网掩码->确定子网大小
子网掩码的应用:
补充知识:
4.4CIDR与路由聚合
CIDR与路由聚合:
无类域间路由(CIDR):
1.消除传统的A类、B类和C类地址界限
NetID+SubID->Network Prefix(前缀,可以任意长度)
2.融合子网地址和子网掩码,方便子网划分
无类地址格式:a.b.c.d/x (x为十进制数,是前缀的长度)
CIDR与有类地址的映射关系:
上图中是C类地址,C类地址有24位网络号,而CIDR表示下,前缀只有23位,故在这种表示方式下,前缀不变,剩下最后一位比特,因此其表示包含着两个C类网络,分别是200.23.16.0和200.23.17.0
CIDR能更加方便地描述子网:
CIDR的优点:
1.能提高IPv4的地址空间分配效率
2.能提高路由效率,利于路由聚合,如:
将多个子网聚合成一个较大的子网;构造超网(更大的子网)
解决路由黑洞问题(最长前缀匹配优先):
I
V
4.5DHCP协议:
如何获得IP地址?
1.硬编码:静态配置
2.动态主机配置协议DHCP(在应用层实现):
即选择 自动获得IP地址和自动获得DNS服务器地址
可以从服务器动态获取(租):
IP地址、子网掩码、默认网关地址、DNS服务器名称与IP地址
特点:“即插即用”、允许地址重用,支持在用地址续租、支持移动用户加入网络
动态主机配置协议:
ACK报文中包含分配给用户的IP地址、子网掩码、默认网关、DNS服务器地址
4.6 网络地址转换NAT
NAT的实现:
例子:
NAT的穿透问题:
客户期望在公网连接内网的服务器
解决方案1:
静态配置NAT,将特定端口的连接请求转发给服务器
解决方案2:
利用UPnP自动配置:
解决方案3:
中继(如Skype)
4.7 互联网控制报文协议 ICMP
功能:
1.支持主机或者路由器进行差错报告
2.网络探寻
两类ICMP报文:
1.差错报告报文
(1)目的不可达
(2)源抑制
(3)超时/超期报文(ttl超时)
(4)参数问题
(5)重定向
2.网络探询报文
(1)回声请求与应答报文
(2)时间戳请求与应答报文
ICMP报文的格式:
ICMP差错报告报文的数据封装:
ICMP的应用举例:Traceroute
4.8 IPv6简介:
IPv6的数据报:
特点:
1.固定长度的40字节基本首部
2.不允许分配(若分片,源主机分,目的主机组装)
格式:(路由器通常不需要处理选项首部)
IPv4 vsIPv6:
IPv6的地址表示形式:(冒号分割,16进制,16个比特一组,一共8组)
IPv6基本地址类型:
1.单播地址
一对一通信
2.多播地址
一对多通信(只能出现在目的地址中)
3.任意播地址
一对一组之一(最近一个)通信
IPv4向IPv6过渡:
->
路由聚合的条件:
1.子网的IP地址连续或相对连续
2.子网的接口相同,如
此时,R2到局域网可以实现聚合