网络层 负责为分组交换网上的不同主机提供通信服务,选择合适路由,把分组从源主机送达目的主机。IP 协议是网络层核心协议,负责给数据包分配地址、寻址并转发分组,使跨网络的数据能够送达目标主机。
报头格式

其中:
1 .版本:就是 IP 的版本,比如对 IPv4 ,这里的值就是 4。
2 .头部长度:和 TCP 协议的同名字段表示意思一致。
3 .服务类型(TOS): 8 位bit中,3 位是优先权字段(已经弃用),4 位TOS字段,以及 1 位保留字段(必须置为0)。4 位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,四者相互冲突,使用时只有一个能置为 1.
4 .总长度:报头+数据整体大小。
5 .分片标识:标识主机发送的报文,如果一个报文被分片了,那么每一片的标识都是相同的。
6 .3 位标志:第一位保留。第二位表示是否可以分片(置1为禁止分片)。第三位表示"更多分片",对于被分片的报文,除了最后一片置0,其他片为1,如果报文没有分片,该位置也为0。
7 .片偏移:用于记录被分片的报文起始位置与原始报文起始位置的偏移量。这个字段的大小只有 13 位,为了表示最大有16位的报文大小,需要将这个值向左偏移 3 位,才能得到真正的偏移量。
8 .生存时间 :记录的其实不是时间,而是报文达到目的地被允许的最大跳数,经过一个路由这个值就-1,减到0且未达到目的地,这个报文就会被丢弃,防止路由循环。
9 .协议:表示上层协议的类型。网络层的上层是传输层,拿最常见的 UDP 和 TCP 举例,如果发送端使用 UDP ,接收端也必须拿 UDP 接收,而不能用 TCP。
10 .首部校验和:使用 CRC 进行校验,鉴别头部是否损坏。
11 .源地址和目的地址:不做解释。
"选项" 字段,用于扩展 IP 协议的功能。
子网划分
IP 地址分为两个部分,网络号和主机号。
网络号:标识设备属于哪个网段。
主机号:标识该网段内的哪台设备。
早期 IPv4 使用有类地址划分子网。这种方法把所有 IP 分为五类,分别是 A类,B类,C类
,D类,E类。其中 A类 IP的首位是0,B类 IP 前两位是 10,C类 IP 前三位是 110,以此类推。
如果申请一个B类地址,理论上这个子网内能连接六万多台主机,但是在实际的架设中,会有很多被浪费掉。
针对这种情况,出现了 **CIDR(无类别域间路由)**来代替原来的方案。
这种方案引入了一个新的概念 "子网掩码 "(subnet mask),它也是一个 32 位的正整数,将 IP 地址和子网掩码进行 "按位与" 操作,就可以得到网络号。
IP 地址和子网掩码可以用一种简洁的表示方法,如 140.252.20.68/24,140.252.20.68 是 IP地址,/24 表示 子网掩码 的高 24 位是 1,也就是 255.255.255.0。
特殊 IP
现在 IP 通常用点分十进制表示,比如 192.168.1.1 。
如果主机地址全为0,例如: 192.168.1.0 ,就成了网络号,代表整个局域网。
如果主机地址全为1,例如: 192.168.1.255,就成了广播地址,用于给同一个链路中相互连接的所有主机发送数据。
**127.***的 IP 地址用于本机环回(loop back),通常是 127.0.0.1。
IP 还分私有和公有。私有 IP 在一个子网内不重复,但是在整个公网内可以重复,RFC 1918 规定了用于组建局域网的私有 IP 地址:
10.*, 前 8 位是网络号,共 16,777,216 个地址。
172.16.* 到 172.31.*, 前 12 位是网络号,共 1,048,576 个地址。
192.168.*, 前 16 位是网络号,共 65,536 个地址。
NAT 技术
一个路由器构建起一个子网 ,它配置有两个 IP,一个是 WAN口 IP ,可以理解为出口,一个 LAN口 IP(子网 IP),可以理解为入口,所以 LAN口连接着的主机,都属于这个路由器的子网。
不同路由器的子网IP都是一样的,一般是192.168.1.1。
一个家用路由器,构建起一个子网,但同时它又是运营商路由器子网中的一个节点,对于最外层的运营商路由器,它的 WAN口 IP 就是一个公网 IP。
当子网内主机需要与其他子网的主机通信时,路由器会将数据包 IP 首部中的 IP 地址进行替换(替换成 WAN口 IP),最终数据包中的 IP地址成为了一个 公网 IP,这种技术就叫做 NAT(Network Address Translation,网络地址转换)。