网络层的主要任务是把分组从从源端传送到目的端,向上层提供简单的、无连接的、尽最大努力交付(可出错)的数据报服务,其主要功能如下:
其中,网络互连主要依靠中继系统完成,各个网络层级的中继系统可以分为:
根据网络层的基本任务,可以将网络层抽象地划分为2个平面,即 控制平面
和 数据平面
,划分示意图如下:
其中,
SDN即Software-Defined Networking,即软件定义的网络,而传统路由器和SDN的区别主要在于控制平面,传统路由器每台路由器都有自己的路由选择算法,而SDN将若干台路由器的路由选择算法均集成到一个远程控制器中,远程控制器负责计算并分发转发表,路由器原来的路由选择处理器负责与远程控制器通信并接收表项。
远程控制器可能运行在高可靠性的远程数据中心中,或由ISP提供。
而SDN控制平面可以继续细分为:
路由算法主要是负责若干路由器之间通信时,应当选择怎样的路由线路的一个算法。
通常"最佳路由"是由分组从当前节点到目标节点所经过的路由器数(跳数)最少的一个路径。
路由表是通过路由选择算法产生的一个使用目标IP查询下一跳IP和接口的一个表,如下所示:
路由算法主要可以分为:
优点 | 简单、可靠,适用于负载稳定、拓扑不变的高安全要求的网络。 适用于小型网络。 |
路由更新快,适用于大型网络,可以及时响应网络拓扑变化 |
缺点 | 路由更新慢,不适用于大型网络。 | 算法复杂,增加网络负担。 |
而路由选择协议可以进行分层设计,由于网络规模大,且部分单位的网络拓扑有保密需要,故可以将整个网络划分为若干自治系统(AS)。
总的来说,路由算法可以按照如下方式划分:
IP协议主要规定了其数据传送的基本单元及其确切的数据格式,并规定如何处理分组、如何控制错误等。其数据报格式如下:
其中:
首部长度
共占用4位,范围[0, 15],其单位为 4Byte 。实际由于固定部分的存在,其最小值为 20Byte 。填充字段
当可选字段不为4Byte的整数倍时,使用填充字段填充到4Byte的整数倍。区分服务
用于强调数字报的优先级,一般不使用。总长度
为整个IP数据报的长度,最大值为 65535,单位为Byte。一般不会过大,否则超过MTU长度时会被分片。标识
IP数据报的标识,同一IP数据报的多个分片的标识一致。一般是一个计数器,统计IP数据报号。标志
长度为3位,但是最高位保留,各位含义如下: 最高位 | 中间位DF(Don't Fragment) | 最低位MF(More Fragment) |
---|---|---|
保留 | 是否允许分片, DF=1,禁止分片 DF=0,允许分片 |
后续是否还有分片, MF=1,后续还有分片 MF=0,后续无分片(即已是最后一片) |
片偏移
该分片在原分组中的相对位置,单位为8Byte。除最后一个分片外,每个分片长度已定位8Byte的整数倍。拆分时会将一个IP数据报拆分为多个IP数据报,从每个小IP数据报的数据部分开始,到原数据报的位置的距离就是片偏移的大小。
协议字段
用于区分数据部分的协议,对应表如下:6
、UDP会被 17
(遗弃))首部检验和
仅检验首部字段,不检验数据部分。由于生存时间会被逐级递减,故每经过一级路由器,首部和首部检验和均会变化。源地址
、 目的地址
:存储IPv4地址,共32位。可选字段
长度0-40Byte,可有可无。用于排错、测量、安全等措施。填充字段
全 0
。标识
、 标志
、 片偏移
等机制进行分片,会将一个IP数据报拆分为多个IP数据报,例如:IP数据报拆分规则:
IP数据报拆分时,会将一个长数据报拆分为多个短IP数据报。这些数据报的标识符相同,并使用MF、DF等标志位进行标记。
片偏移计算规则:
在上述拆分规则下,以数据载荷为偏移量起始计算位置。
例如以MTU为1500,首部大小20Byte计算,则第二个数据报的偏移地址为1480Byte,偏移量为
基本概念:
IP地址分段及其规则:
0
开头为A类网络,对应网络号长度为8位10
开头为B类网络,对应网络号长度为15位110
开头的C类网络,对应的网络号长度为22位1110
开头为多播地址1111
开头为预留的E类网络。网络号 | 主机号 | 作为IP分组源地址 | 作为IP分组目的地址 | 用途 | 举例说明 |
---|---|---|---|---|---|
全0 | 全0,即0.0.0.0 | 可以 | 不可以 | 本网范围内表示主机,路由表中用于表示默认路由 (表示整个Internet网络) |
一般用于接受本机的全部连接 |
全0 | 特定值 | 可以 | 不可以 | 表示本网内某个特定主机 | |
全1 | 全1,即255.255.255.255 | 不可以 | 可以 | 本网的广播地址(路由器不转发) | 用于在本网内进行广播 |
特定值 | 全0 | 不可以 | 不可以 | 网络地址,用于代指当前网络,不可连接 | 例如 192.168.1.0/8 就表示这个局域网 |
特定值 | 全1 | 不可以 | 可以 | 直接广播地址,对特定网络上所有主机进行广播 | |
127(属于A类网络) | 非全0或1的数,例127.0.0.1 | 可以 | 可以 | 本地软件回环测试用地址,称为回环地址 | 用于自己连接自己(而0.0.0.0不行) |
NAT地址转换:
NAT:Network Address Translation,一般用于将若干个专用网(局域网)的IP转换为一个外部IP地址。NAT一般由路由器负责。
NAT主要依靠于NAT转换表完成,即将外网的IP地址和端口号和内网的IP地址和端口号进行绑定与转发:
在NAT技术下,外网设备将无法主动连接NAT中内网的设备,只能由内网设备主动连接外网IP。当内网中设备发送连接请求后,NAT应用将会分配一个外网端口并,建立映射并记录到NAT转换表中。
子网划分是对上述A、B、C、D类网络一个网络号所对应的大的网络划分成若干个小子网的一个技术。一个大子网划分成若干个小子网后,对外界依旧表现为一个大子网,外界不知道其内部如何分配IP。
其方法是将主机号的高几位拿来当做 子网号
,并将"两级IP地址"转化为"三级IP地址",如下图所示:
子网掩码:
将网络号和子网号对应的位置设置为1,主机号设置为0,对应的十进制码就是子网掩码。
将子网掩码和目的IP地址进行与位运算,即可得子网网络地址。对于应试教育,应当背诵子网的二进制和十进制对应表:
无分类编址CIDR:
无分类编址CIDR取消了原先A、B、C类网络的划分,将子网掩码的思想合并为可变长度的网络号的设计,如下图所示:
随后其在IP地址后添加斜杠 /
和网络前缀长度,例如 128.14.32.0/20
。
随后主机号:
0
表示网络号1
表示广播地址网络号/长度
即 128.14.32.0/20
称为CIDR地址块。则有如下特性:
CIDR的应用:
132.19.137.5
的地址:132.0.0.0/8
重合长度为8位(最多匹配到前缀长度,可以与下一项对比)132.0.0.0/11
重合长度为11位132.19.232.0/22
重合长度为17位,但是不满足22位的子网前缀要求,故舍弃。0.0.0.0/0
表示默认网关,只有当所有表项均不匹配时会走此项,此时该数据包会被交付给其他路由。现在思考应用层如何发起和建立连接:
ARP协议的主要工作流程:
0. 若在ARP缓存中找到目的IP的MAC地址,则会以该MAC地址为目标进行发送。
FFFF-FF-FF-FF-FF
来进行ARP广播,使得该局域网的所有主机都收到此请求(交换机在接收到广播MAC地址的报文后,会向所有端口转发该报文)。该数据帧结构如下:ARP的四种典型情况:
ARP缓存通常10-20min更新一次。
DHCP协议(Dynamic Host Configuration Protocol):
负责分配网络内主机的IP地址。
DHCP协议的性质(红色要考):
255.255.255.255
DHCP工作流程:
使用广播的好处:
ICMP协议(Internet Control Message Protocol,网际控制报文协议):
ICMP是一种网络层协议,用于在 IP 网络中传递控制信息和错误消息。
ICMP协议的性质:
0.0.0.0
或 127.0.0.0
,选择题会考察。ping
命令,工作在应用层,基于ICMP询问报文tranceroute
或 trancert
,工作在网络层,基于ICMP超时差错报文(一点点的增加TTL)