目录
1、网络层核心功能 2、网络层服务模型(service model)
1、IP数据报 2、IP分片 3、IP编址(addressing) 4、有类IP地址 5、IP子网划分与子网掩码
一、网络层服务
从发送主机向接收主机传送数据段(segment),发送主机将数据段封装到数据报(datagram)中,接收主机向传输层交付数据段(segment)。每个主机和路由器都运行网络层协议,路由器检验所有穿越它的IP数据报的头部域,决策如何处理IP数据报。
1、网络层核心功能
转发(forwarding),将分组从路由器的输入端口转移到合适的输出端口;路由(routing),通过路由算法(routing algorithms)确定分组从源到目的经过的路径。
连接建立,不是所有网络都需要,某些网络的重要功能,如ATM、帧中继、X.25。数据分组传输之前,两端主机需要首先建立虚拟/逻辑连接,网络设备(如路由器)参与连接的建立。而传输层的连接在两个应用进程之间,对中间网络设备透明。
2、网络层服务模型(service model)
无连接服务(connection-less service):不事先为系列分组的传输确定传输路径,每个分组独立确定传输路径,不同分组可能传输路径不同。数据报网络(datagram network)。
连接服务(connection service):首先为系列分组的传输确定从源到目的经过的路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。虚电路网络(virtual-circuit network)。
数据报网络与虚电路网络是典型两类分组交换网络,数据报网络提供网络层无连接服务,虚电路网络提供网络层连接服务。类似于传输层的无连接服务(UDP)和面向连接服务(TCP),但是网络层服务提供主机到主机服务,网络核心实现,而不仅是端到端。
二、虚电路网络与数据报网络
1、虚电路网络
虚电路(Virtual circuits)是一条从源主机到目的主机,类似于电路的路径(逻辑连接)。是分组交换,每个分组的传输利用链路的全部带宽。源到目的路径经过的网络层设备共同完成虚电路功能。
通信过程:呼叫建立(call setup)→数据传输→拆除呼叫。虚电路经过的每个网络设备(如路由器),维护每条经过它的虚电路连接状态。链路、网络设备资源(如带宽、缓存等)可以面向VC进行预分配,预分配资源=可预期服务性能,如ATM的电路仿真(CBR)。
每条虚电路包括:从源主机到目的主机的一条路径;虚电路号(VCID),沿路每段链路一个编号;沿路每个网络层设备(如路由器),利用转发表记录经过的每条虚电路。沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址。同一条VC,在每段链路上的VCID通常不同,路由器转发分组时依据转发表改写/替换虚电路号。
VC路径上每个路由器都需要维护VC连接的状态信息,VC的建立和拆除对应VC转发表的维护。
路由器R1的VC转发表
输入接口 | 输入VC # | 输出接口 | 输出VC # |
1 | 12 | 3 | 22 |
2 | 63 | 1 | 18 |
3 | 7 | 2 | 17 |
1 | 97 | 3 | 87 |
… | … | … | … |
虚电路信令协议(signaling protocols),用于VC的建立(路径选择、一次)、维护与拆除,应用于虚电路网络,如ATM、帧中继(frame-relay)网络等,目前的Internet不采用。
2、数据报网络
网络层无连接,每个分组携带目的地址,路由器根据分组的目的地址转发分组。基于路由协议/算法构建转发表,检索转发表,每个分组独立选路。
最长前缀匹配优先:在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口(entry)。
DA: 11001000 00010111 00010110 10100001从哪个接口转发?A:0
DA: 11001000 00010111 00011000 10101010从哪个接口转发?A:1
目的地址范围 | 链路接口 |
11001000 00010111 00010*** ******** | 0 |
11001000 00010111 00011000 ******** | 1 |
11001000 00010111 00011*** ******** | 2 |
其它 | 3 |
数据报网络or VC网络?
Internet(数据报网络) | ATM(VC网络) |
计算机之间的数据交换 “弹性”服务,没有严格时间需求 | 电话网络演化而来,核心业务是实时对话 有保障的服务,严格的时间需求 |
链路类型众多,特点性能各异,统一服务困难 |
|
“智能”端系统(计算机) 可以自适应、性能控制、差错恢复 | “哑(dumb)”端系统(非智能) 电话机、传真机 |
简化网络,复杂“边缘” | 简化“边缘”,复杂网络 |
三、IPv4协议
1、IP数据报
版本号字段占4位,IP协议的版本号。如4→IPv4、6→IPv6。
首部长度字段占4位,IP分组首部长度,以4字节为单位。如5→IP首部长度为20字节。
服务类型(TOS)字段占8位,指示期望获得哪种类型的服务。1998 年这个字段改名为区分服务。只有在网络提供区分服务(DiffServ)时使用,一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H。
总长度字段占16位,IP分组的总字节数(首部+数据)。最大IP分组的总长度65535B,最小的IP分组首部20B,IP分组可以封装的最大数据65535-20=65515B。
生存时间(TTL)字段占8位,IP分组在网络中可以通过的路由器数(或跳步数)。路由器转发一次分组,TTL减1;如果TTL=0,路由器丢弃该IP分组。
协议字段占8位,指示IP分组封装的是哪个协议的数据包,实现复用/分解。如6为TCP,表示封装的为TCP段;17为UDP,表示封装的是UDP数据报。
首部校验和字段占16位,实现对IP分组首部的差错检测。计算校验和时,该字段置全0;采用反码算数运算求和,和的反码作为首部校验和字段;逐跳计算、逐跳校验,因为TTL等会变化。
源IP地址、目的IP地址字段各占32位,分别标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器(网络接口)的IP地址。
选项字段长度(1~40B)可变,携带安全、源选路径、时间戳和路由记录等内容,实际上很少被使用。
填充字段长度(0~3B)可变,目的是补齐整个首部,符合32位对齐,保证首部长度是4字节的倍数。
2、IP分片
(1)IP分片与重组
网络链路存在最大传输单元(MTU),即链路层数据帧可封装数据的上限,不同链路的MTU不同。
大IP分组向较小MTU链路转发时,可以被“分片”(fragmented),1个IP分组分为多片IP分组;IP分片到达目的主机后进行“重组”(reassembled)。IP首部的相关字段用于标识分片以及确定分片的相对顺序,总长度、标识、标志位和片偏移。
(2)IP分组格式
标识字段占16位,标识一个IP分组。IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识。
标志位字段占3位,DF(Don't Fragment),MF(More Fragment)。DF=1禁止分片;DF=0允许分片。MF=1,非最后一片,MF=0,最后一片(或未分片)。
片偏移字段占13位,一个IP分组分片封装原IP分组数据的相对偏移量。片偏移字段以8字节为单位,除了最后一片,前面的所有分片封装的数据字节数是8的倍数。
(3)IP分片过程
假设原IP分组总长度为L,待转发链路的MTU为M。若L>M,且DF=0,则可以/需要分片。分片时每个分片的标识复制原IP分组的标识。
通常分片时,除最后一个分片,其它分片均分为MTU允许的最大分片。一个最大分片可封装的数据应该是8的倍数,因此,一个最大分片可封装的数据为:(向下取整)
需要的总片数为:(向上取整)
每片的片偏移字段取值为:
每片的总长度字段为:
每片的MF标志位为:
3、IP编址(addressing)
IP分组包含源地址(SA)和目的地址(DA)。
接口(interface),主机/路由器与物理链路的连接,实现网络层功能。路由器通常有多个接口,主机通常只有一个或两个接口(e.g.有线的以太网接口,无线的802.11接口)。
IP地址,32比特(IPv4),通常采用点分十进制,编号标识主机、路由器的接口。IP地址与每个实现网络层功能的接口关联。
IP地址的高位比特称为网络号(NetID),低位比特称为主机号(HostID)。IP子网(Subnets)指IP地址具有相同网络号的设备接口,不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口。
4、有类IP地址
特殊IP地址,不能用于标识具体的IP接口。
NetID | HostID | 作为IP分组源地址 | 作为IP分组目的地址 | 用途 |
全0 | 全0 | 可以 | 不可以 | 在本网范围内表示本机,在路由表中用于表示默认路由(相当于表示整个Internet网络) |
全0 | 特定值 | 不可以 | 可以 | 表示本网内某个特定主机 |
全1 | 全1 | 不可以 | 可以 | 本网广播地址(路由器不转发) |
特定值 | 全0 | 不可以 | 不可以 | 网络地址,表示一个网络 |
特定值 | 全1 | 不可以 | 可以 | 直接广播地址,对特定网络上的所有主机进行广播 |
127 | 非全0或非全1的任何数 | 可以 | 可以 | 用于本地软件环回测试,称为环回地址 |
私有(Private)IP地址,只用于内部网络。
Class | NetIDs | Blocks |
A | 10 | 1 |
B | 172.16to172.31 | 16 |
C | 192.168.0to192.168.255 | 256 |
5、IP子网划分与子网掩码
子网划分(Subnetting)用于区分一个IP子网更小范围网络(子网)。将IP地址划分为网络号(NetID)、子网号(SubID、原主机号部分比特)和主机号(HostID)。子网划分后利用路由器等设备互连,将子网的信息反映到转发表中。
“子网地址+子网掩码”,准确确定子网大小。子网掩码形如IP地址,32位,点分十进制形式。取值NetID、SubID位全取1,HostID位全取0。例:A网的默认子网掩码为255.0.0.0;B网的默认子网掩码为255.255.0.0;C网的默认子网掩码为255.255.255.0;借用3比特划分子网的B网的子网掩码为:255.255.224.0。例:将子网201.2.3.0划分为等长的4个子网。
将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址。例:目的IP地址172.32.1.112,子网掩码255.255.254.0。
172.32.1.112 = 10101100 00100000 00000001 01110000
255.255.254.0=11111111 11111111 11111110 00000000
10101100 00100000 00000000 00000000
172 32 0 0
子网地址:172.32.0.0(子网掩码:255.255.254.0)
地址范围:172.32.0.0~172.32.1.255
可分配地址范围:172.32.0.1~172.32.1.254
广播地址:172.32.1.255
一个C类网络划分子网举例。子网划分会造成一定的IP地址的浪费,但使网络性能改进。
子网 | SubID (二进制) | HostID取值范围 (二进制) | 第4八位组取值范围 (十进制) |
1# | 000 | 00000 thru 11111 | .0 thru .31 |
2# | 001 | 00000 thru 11111 | .32 thru .63 |
3# | 010 | 00000 thru 11111 | .64 thru .95 |
4# | 011 | 00000 thru 11111 | .96 thru .127 |
5# | 100 | 00000 thru 11111 | .128 thru .159 |
6# | 101 | 00000 thru 11111 | .160 thru .191 |
7# | 110 | 00000 thru 11111 | .192 thru .223 |
8# | 111 | 00000 thru 11111 | .224 thru .255 |