网络层实现数据包的选路和转发。WAN(广域网)通常使用众多分级的路由器来连接分散的主机或LAN(局域网),因此通信的两端通常不是直接相连的,而是通过多个中间节点(路由器)连接的。
网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。同时,网络层对上层协议隐藏了网络连接的细节,使得在传输层和网络应用程序看来,通信的双方是直接相连的。
下面三个名词的概念需要区分一下:
主机:配有IP地址,但不进行路由控制的设备
路由器:既配有IP地址,又能进行路由控制的设备
节点:主机和路由器的统称
网络层最核心的协议就是IP协议(Internet Protocol,因特网协议)。IP协议根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳(next hop)路由器,并将数据包交付给路由器来转发。多次重复这个一跳一跳的过程,最终将数据包交送给目标主机,或者由于发送失败而被丢弃。
网络层另一个重要的协议是ICMP协议(Internet Control Message Protocol,因特网控制报文协议),它是IP协议的重要补充,主要用于检测网络连接。
本文先来了解一下网络层的IP地址是怎么来划分的。
IP地址分为网络号和主机号
网络号:保证相互连接的两个网段具有不同的标识
主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
不同的子网其实就是把网络号相同的主机放到一起
如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网中其他的主机重复
DHCP(自动分配IP):能够自动地给子网内新增主机节点分配IP地址的一门技术,一般的路由器都有DHCP功能,因此路由器也可以看做是一个DHCP服务器。
路由器的插口的名称
WAN口:插宽带的口 LAN口:插网线的口
下图是之前提出的一种划分网络号和主机号的方式,现在已经不用了,ABCDE类的前几位都是有规律的
为什么现在不用,是因为大多组织申请B类网络地址,导致B类很快就分配完,A类却浪费了大量地址
针对以前的这种分配地址的方式,现在用的是CIDR的划分方案
引入了一个额外的子网掩码(subnet mask)来区分网络号和主机号
子网掩码是一个32位的正整数,通常用一串“0”来结尾
将IP地址与子网掩码进行按位与操作,得到的结果就是网络号
网络号和主机号的划分与这个IP地址是A类、B类还是C类无关
划分子网的例子1
IP地址
140.252.20.68
8C FC 14 44
子网掩码
255.255.255.0
FF FF FF 00
网络号
140.252.20.0
8C FC 14 00
子网地址范围
140.252.20.0-140.252.20.255
划分子网的例子2
IP地址
140.252.20.68
8C FC 14 44
子网掩码
255.255.255.240
FF FF FF F0
网络号
140.252.20.64
8C FC 14 40
子网地址范围
140.252.20.64-140.252.20.79
特殊的IP地址
将IP地址中的主机地址全部设为0,就是网络号,表示这个局域网
将IP地址中的主机地址全部设为1,就称为了广播地址,用于给同一链路中相互连接的所有主机发送数据包(ARP协议中就用到了)
127.*的IP地址通常用于本机环回(loop back)测试,通常是127.0.0.1
增加IP地址数量的方法
动态分配IP地址:只给接入网络的设备分配IP地址。因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定是相同的。
NAT技术(重要),这在之后的文章中会有讲到
IPv6:与IPv4是两个互不相干的协议,它用16字节的128位来表示一个地址
私有IP地址和公网IP地址
10.:前8位是网络号,后24位用来表示主机号,一共是2^24=16777216个地址
172.16–172.31.:前12位是网络号,一共是2^20=1048579个地址
192.168.:前16位是网络号,共65536个地址
包含在这个范围中的,都称为私有IP,其余的全是公网IP