在之前的网络基础博客中,我们对网络进行了概要解释,了解了应用层和传输层的知名协议。接下来我们来对网络层的典型协议进行解析。
目录
1.网络层协议
2.IP协议
2.1协议格式
2.2地址管理
2.3特殊网络
2.3.1私网的组建
2.3.2特殊IP地址
2.4路由选择
1.网络层协议
网络层的功能是:负责地址管理和路由选择。
2.IP协议
2.1协议格式
笔者引用《TCP-IP详解》一书中对IP协议中数据报格式的图解,如下所示:
4位版本是ipv4或ipv6版本;4位首部长度也叫报头长度:以4字节为单位,IP报头最大长度60字节,最小20字节;8位服务类型(TOS):3位优先权弃用,1位保留置0,剩余4位服务类型:最小延时,最大吞吐量,最高可靠性,最小成本。
16位总长度(数据报总长度):限制一个IP报文包含头部在内最大不能超过65535大小;
在链路层存在限制报文大小的字段MTU--以太网默认大小是1500,如果一个报文在网络层封装了IP报头,大于MTU则在链路层无法传输。因此需要在网络层对一个大的报文进行分割成多个小的报文,分别封装在IP报头中进行发送,这些小的报文有个专业名词--分片。如果一个大的报文被分割成为多个分片进行传输,则多个分片到达对端网络层就需要进行分片重组,重新组成一个完整的报文交付给传输层。
因此,16位标识:用于标识当前分片属于那一个原始报文;13位分片偏移:标识当前分片较于原始报文起始位置的偏移量,并且为了能够完整的描述65535的偏移量(13位不够完全描述),我们采用的是以8字节为单位描述偏移量,所以每个分片的大小都会是8的整数倍大小。
8位生存时间(TTL):存放一个数据在网络中所经过路由器的跳数,每经过路由器一跳就会减1,为0时会见报文丢弃。主要是为了避免路由环路的情况,数据在网络中循环,阻塞传输,导致传输效率降低。
8位协议版本:记录当前主机在传输层使用的协议;16位首部校验和:校验数据收发的一致性。
32位源端IP地址和32位对端IP地址:标识数据收发两端的地址,明确数据传输两端身份。
0~40字节的选项数据(如果有):用于记录报文中的格外内容。
2.2地址管理
在ipv4版中的IP地址数量已经出现较为明显了地址分配不足问题,因此设计出DHCP技术以及NAT技术。
在了解深入了解二者之前,我们先对IP地址的组成进行解析:
- 网络号:一个网络的标识,一个网络所分配的IP地址所包含的标识;
- 主机号:一台主机在一个网络中的标识;
网络号的划分:
- A类网络:高1位固定为0,有7位网络号,24位主机号;
网络号范围为:0~127,IP地址范围:0.0.0.0~127.255.255.255,A类网络常用于组件大型网络。
- B类网络:高2位固定为10,有14位网络号,16位主机号;
网络号范围为:128.0~191.255,IP地址范围:128.0.0.0~191.255.255.255,B类网络常用于组件中型网络。
- C类网络:高3位固定为110,有21位网络号,8位主机号;
网络号范围为:192.0.0~223.255.255,IP地址范围:192.0.0.0~223.255.255.C类网络常用于组件小型网络。
- D/E类网络:特殊网络
因为早期的划分方式过于粗糙,会导致大量IP地址浪费,因此在早期划分的基础上设计出CIDR方案,使用子网掩码进行网络划分。
子网掩码是4字节的无符号整数,数据必须由二进制连续的1组成。子网掩码和IP地址相与,可以得到IP地址和网络号;子网掩码取反,可以得到子网中的最大主机号。
2.3特殊网络
2.3.1私网的组建
私网的搭建可以使得多个流量较少的主机使用同一个IP地址,可以很好的减少ipv4版本中IP地址分配数量不足的问题。
组建私网需要搭配一个技术:NAT技术--网络地址转换技术。一个私网向外发送的数据吗,流经网关设备的时候,需要进行网络地址替换,替换成为网关设备的对外地址,并且在设备中记录相应的映射关系。
并且在网络划分中,专门为组建私网划分出了一些网络号(公网中不会出现):
- 大型网络:10.*.*.*
- 中型网络:172.16.*.*~172.32.*.*
- 小型网络:192.168.0.*~192.168.255.*
2.3.2特殊IP地址
0.0.0.0:代表本地主机上任意网卡的地址,通常用于服务端程序绑定监听地址。
255.255.255.255:全网广播地址。
127.0.0.1:本地主机上的虚拟回环网卡地址,主要用于本地网络回环测试。
主机号全为0的地址:网络号,是网络的标识,这个地址不能分配给主机。
主机号全为1的地址:局域网广播地址,这个地址也不能分配给主机。
2.4路由选择
在了解路由选择之前,我们先对路由表的概念进行简单介绍,路由表是一个存储在路由器或者联网计算机中的电子表格,里面存储着目标网络网络号,网关地址,子网掩码喝和连接这个网络的网卡等关键信息。根据路由表中存储的信息,我们可以选择连接对应的网络,并对网络中传输数据的路径进行选择。
因此,路由选择的概念应运而生。路由选择便是:路由器为流经的数据选择合适的路径进行转发。对于具体的路径规划我们设计有静态路由选择和动态路由选择两种算法,便于求取网络中数据的最佳流经路径。