一.简介
从发送主机向接收主机发送数据段(segment)
每个主机和路由器都运行网络层协议,路由器检验所有穿越它的IP数据报的头部域
核心功能是路由和转发
转发:将分组从路由器输入端口转移到合适的输出端口
路由:确定分组从源到目的经过的路径
二.网络层服务模型
连接服务
首先为系列分组的传输确定从源到目的经过的路径,然后沿着路径传输系列分组,系列分组传输路径相同,传输结束后拆除连接。
虚电路网络
虚电路网络是典型的连接服务
虚电路网络典型应用是ATM网络,帧中继网络。电话网络属于ATM网络,目前Internet不采用。
虚电路:一条从源主机到目的主机,类似于电路的路径(逻辑连接)
基本步骤:
- 呼叫建立
- 数据传输
- 拆除呼叫
每条虚电路包括:
- 从源主机到目的主机的一条路径
- 虚电路号,沿路每段链路一个编号
- 沿路每个网络层设备(路由器),利用转发表记录经过的每条虚电路
每个分组携带虚电路标识(VCID)
虚电路经过的每个网络设备维护每条经过它的虚电路连接状态
同一条VC,在每段链路上VCID通常不同,路由器在转发分组时一句转发表替换虚电路号
虚电路信令协议:用于VC的建立,维护与拆除。
无连接服务(数据报网络)
不事先确定传输路径,每个分组独立确定传输路径,不同分组可能传输路径不同
网络层无连接
每个分组携带目的地址
路由器根据分组的目的地址转发分组
路由器通过维护转发表确定将分组转发出口,由于IP地址过多,故转发表中目的地址一般都是地址范围,地址范围则涉及到地址匹配问题,采用最长前缀匹配优先进行匹配
Internet(数据报网络) Vs ATM(VC网络)
数据报网络:
- 计算机之间的数据交换,没有严格时间需求
- 链路类型众多
- 智能端系统,可自适应,差错恢复
- 简化网络,复杂边缘
ATM网络:
- 电话网络演化
- 核心业务是实时对话
- 非智能端系统
- 简化边缘,复杂网络
三.IP协议
IP协议是Internet网络层核心协议
核心学习内容
- IP数据报
- IP分片
- IP编址
- 有类IP地址
- IP子网划分与子网掩码
- CIDR与路由聚合
数据报格式
- 版本号:IP协议的版本号。4代表IPv4,6代表IPv6
- 首部长度:IP分组首部长度。以4byte为单位,最长为60字节。
- 服务类型:期望获得哪种类型的服务。只有在网络提供区分服务时使用,一般情况下不使用
- 总长度:IP分组的总字节数(首部+数据)
- TTL:IP分组在网络中可以通过的路由器数。路由器转发一次分组,TTL-1;若TTL=0,则路由器丢弃该IP分组。
- 协议:指示IP分组封装的是哪个协议的数据包。6表示TCP,17表示UDP
- 首部校验和:对IP分组首部的差错检测。
- 源IP地址,目的IP地址
- 选项字段:长度可变,在1-40B之间,携带安全,时间戳和路由记录等内容。实际上很少被使用
- 填充字段:长度可变,在0-3B之间,目的是补齐首部,符合32位对齐
- 标识,标志位,片偏移是用于IP分片,到介绍IP分片时会介绍
IP分片
网络链路存在MTU(最大传输单元)——链路层数据帧可封装数据的上限,不同链路的MTU不同,当大IP分组向较小MTU链路转发时,需要对大IP分组进行分片(fragmented)
1个IP分组分为多片IP分组,IP分片到达目的主机后进行重组(reassembled)。前面说到标识,标志位,片偏移字段都是用于分片。
标识(16bit):标识一个IP分组,IP协议利用一个计数器,每产生Ip分组技术器加1,作为该分组的标识
标志位(3bit):保留字段,DF(Dont Fragment)和MF(More Fragment)。
DF=1:禁止分片,DF=0:允许分片;
MF = 1:非最后一片,MF=0:最后一片(或未分片)
片偏移(13bit):一个IP分组分片封装原IP分组数据的相对偏移量,片偏移字段以8byte为单位。
IP分片过程如下图
IP编址
IP地址:32bit(IPv4),编号标识主机,路由器的接口。IP地址与每个接口关联。
IP地址:网络号(NetID),主机号(HostID)
IP子网:IP地址具有相同网络号的设备接口,不跨越路由器,可以批次物理联通的接口。
IP地址可以分为A,B,C,D,E类编址,D,E类编址属于保留地址。
特殊IP地址列表如下,值得注意的是netId和hostId都是0标识本机,netId为特定值,host为全1,标识广播地址。
还有一些私有IP地址:
子网划分
采用子网掩码形式,IP地址分为:网络号,子网号,主机号。
子网掩码=网络号,子网号位全取1,主机号号位全取0.
A网的默认子网掩码为:255.0.0.0
B网的默认子网掩码为:255.255.0.0
C网的默认子网掩码:255.255.255.0
借用3bit划分子网的B网的子网掩码:255.255.224.0。可以看出使用3bit划分子网的话可以划分出8个子网。使用IP地址与子网掩码按位与运算即可提取子网地址
CIDR与路由聚合
CIDR(Classless InterDomain Routing)叫做无类间路由。用来消除传统的A,B,C类地址界限,即netId+subId可以任意长度。标识形式为a.b.c.d/x,x标识前缀长度,也就是netId+subId的长度。
其作用是提高IPv4地址空间分配效率,提高路由效率(可以将多个子网聚合成一个较大的子网,而不受传统有类地址的限制)
将多个子网聚合成一个较大的子网,就叫做路由聚合,路由聚合可以减少路由表中的记录,路由采用最长前缀匹配优先。
四.其他协议
DHCP协议
用于主机获取IP地址。主机获取IP地址有两种方式,第一种静态配置,在Internet 协议版本中人工填写IP地址,子网掩码,默认网关等。第二种就是采用DHCP(Dynamic Host Configuration Protocol)动态主机配置协议。从服务器动态获取IP地址,子网掩码,默认网关,DNS服务器名称与地址。DHCP协议在应用层实现,请求报文封装到UDP数据报中,采用链路层广播。
DHCP分为四步:
- 主机使用0.0.0.0地址广播“DHCP discover”
- DHCP服务器发送“DHCP offer”进行响应
- 主机请求IP地址“DHCP request”
- DHCP服务器分配IP地址“DHCP ack”
NAT(Network Address Transfer)
动机:只需/能从ISP申请一个IP地址;本地网络设备IP地址的变更,无需通告外界网络;变更ISP时,无需修改内部网络设备IP地址;内部网络设备对外界网络不可见,即不可直接寻址。
实现步骤:
- 替换:利用NAT IP地址,新端口号替换每个外出IP数据报的IP地址和端口号
- 记录:将每对NAT IP地址,新端口号与源IP地址,源端口号的替换信息存储到NAT转换表中。
- 替换:根据NAT转换表,利用源IP地址,源端口号替换每个进入内网的IP数据报的NAT IP地址,新端口号
争议:路由器应该只处理到网络层功能,而NAT需要处理到传输层。违背端到端通信的远侧。地址短缺问题应该由IPv6来解决。
NAT穿透问题
NAT穿透问题就是客户希望访问内网地址的服务器,但对外可见地址是NAT地址。
方案一:静态配置NAT,将特定端口的连接请求转发给服务器
方案二:利用IGD(Internet Gateway Device)自动配置,学习到NAT公共IP地址,在NAT转换表中,增删端口映射。也就是前面实现步骤说的方式
方案三:中继(例如Skype)。NAT内部的客户与中继服务器建立连接,外部客户也与中继服务器建立连接,中继服务器桥接两个连接的分组。
ICMP(Internet Control Message Protocol)
互联网控制报文协议支持主机和路由器进行差错报告和网络探询。
差错报告有5种报文,分别为目的不可达,源抑制,超时,参数问题,重定向
网络探询:回声请求与应答报文,时间戳请求与应答报文
几种不发送ICMP差错报告报文的特殊情况:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
- 对所有多播IP数据报均不发送
- 对具有特殊地址的IP数据报不发送
IPv6
原因:32位IPv4地址空间已分配殆尽;改进首部格式以支持快速处理/转发数据报;支持QoS(quality of service)
IPv6数据报格式:固定长度的40字节基本首部,不允许分片。
优先级:标识数据报的优先级
流标签:标识同一流中的数据报
下一个首部:标识下一个选项首部或上层协议首部
移除了校验和,选项从基本首部中移出,定义多个选项首部,通过下一个首部字段指示。ICMPv6是新版的ICMP,附加报文类型,支持多播组管理功能。
一般形式:1080:0:FF:0:8:800:200C:417A
压缩形式:FF01:0:0:0:0:0:0:43
压缩为:FF01::43。
IPv4嵌入形式:0:0:0:0:0:FFFF:13.1.68.3
或 ::FFFF:13.1.68.3
IPv6不再使用掩码形式,都采用前缀形式。url形式:http://[3FFE::1:800:200C:417A]:8000。传播形式有单播,多播和任一播(一对一组之一通信,一般是最近的一个)
IPv4与IPv6共存:采用隧道技术,将IPv6数据报封装成IPv4数据报的载荷进行封装,穿越IPv4网络。