网络--网络层--IP 协议
一、基本概念
IP 协议是用于在互联网上进行数据传输的一种网络层协议,它为不同网络中的设备提供了一种统一的方式来交换数据。IP 协议定义了数据包的格式以及数据包在网络中的传输规则,使得各种不同类型的网络能够相互连接并进行通信,是 TCP/UDP 传输的基础。
二、IP 报头格式

- 版本:指定 IP 协议的版本,对于 IPv4 来说就是 4
- 首部长度:这里长度的单位是 4 字节,也就是最大支持 60 个字节的头部长度
- 服务类型:共八位,其中三位已弃用,一位保留字段,其必须置为 0,所以可供修改的只有四位 TOS 字段,分别表示最小延时、最大吞吐量、最高可靠性、最小成本,这四个相互冲突,只能开启一个
- 总长度:IP 数据报整体占多少个字节
- 标识:主机发送报文的唯一标识,如果 IP 报文在数据链路层被分片了(有关分片的概念,在后面详述),那么每个片里面的标识 id 都是相同的
- 标志:第一位保留,第二位为 1 表示禁止分片,此时如果超过了数据链路层能传输的最大传输单元,超过的数据将会被扔掉,第三位表示分片后的数据部分或者尾部,为 0 则表示是数据部分,后面还有数据,为 1 则说明该片是最后一片,后面没有数据了
- 片偏移:是分片相对于原始 IP 报文开始处的偏移,其实就是在表示当前分片在原报文中处在哪个位置,实际偏移字节数是这个值*8 得到的,因此,除了最后一个报文之外,其他报文的长度必须是 8 的整数倍,否则报文就不连续了
- 生存时间:数据报到达目的地的最大报文跳数,一般为 64,这里的报文跳数指的是报文到的路由器次数,如果超过这个数字报文就自动丢弃了
- 协议:表示上层协议的类型
- 头部校验和:鉴别头部是否损坏
- 源地址和目标地址:发送端和接收端
- 选项:不定长,最多 40 字节
三、网络划分
- IP 地址分为两个部分:网络号和主机号,网络号可以保证互相连接的两个网段具有不同的标识,主机号可以保证同一网段内的主机可以有不同的标志
- 子网的划分就是根据网络号相同的原理,网络号相同的主机放到一起就组成了子网,也就是局域网,但子网中主机通过主机号区分彼此
- 随着互联网的发展,这种划分方案的局限性就显现出来了,由于 B 类网络地址对于网络号和主机号的分配机制比较优秀,所以大多数的组织都申请 B 类网络地址,导致 B 类地址快要消耗殆尽,而 A 类型的地址又被大量浪费(一个实际的网络架构中,一个子网下的主机数是没有
2^24那么多的,并且它的子网只能有2^7个,所以 A 类地址的分配机制比较差劲,相比之下,B 类地址更加符合实际)
- 随着互联网的发展,这种划分方案的局限性就显现出来了,由于 B 类网络地址对于网络号和主机号的分配机制比较优秀,所以大多数的组织都申请 B 类网络地址,导致 B 类地址快要消耗殆尽,而 A 类型的地址又被大量浪费(一个实际的网络架构中,一个子网下的主机数是没有
- 当前我们使用的是CIDR方案,它引入了一个额外的子网掩码来区分网络号和主机号,子网掩码也是一个 32 位的无符号整数,通常用一串 0 来结尾,
网络号 = IP 地址 & 子网掩码,网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关






