通过 IP 协议进行网络通信时,需要在数据前面加上 IP 首部信息(有的地方称之为 IP 头,一个意思),IP 首部中包含着基于 IP 协议进行发包控制时所有的必要信息:  每个字段表示的含义: - 版本:用于标识 IP 首部的版本号,IPv4 的版本号即4,关于 IP 首部的版本信息可以参考这里:https://www.iana.org/assignments/version-numbers/version-numbers.xhtml。 - 首部长度:IP首部的大小,单位为4字节。 - 区分服务(TOS):用来表示服务质量,IP 协议本身是一种尽力服务的协议,无法保证通信质量,但是近年来随着音视频服务对实时性要求的提高,在使用 IP 通信过程当中保证服务质量的技术也有了蓬勃发展。DSCP 字段用于在通过 DiffServ 控制网络质量的时候设置包的优先级;ECN 则主要用于网络通信中的显式拥塞通知。 - 总长度:IP首部与数据部分结合起来的总字节数,最大长度是65535。 - 标识:用于 IP 包分片重组,不同分片标识值不同。 - 标志:表示包被分片的相关信息。 - 片偏移:用来标识被分片的每一个分段相对于原始数据的位置。以上三个字段用于 IP 包的分片与重组。 - 生存时间:最初设计为网络包的有效时间,实际用于可以中转多少个路由器,每经过一个路由器,TTL值减1,直到为0则丢弃该包。 - 协议:标识 IP 首部的上一层首部隶属于哪个协议,比如 TCP 或 UDP,具体支持的协议信息请参考这里:https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml。 - 首部校验和:只校验数据报的首部,不校验数据部分,主要用来确保 IP 数据报不被破坏。 - 源地址:发送端 IP 地址。 - 目标地址:接收端 IP 地址。 - 可选项:通常在实验或诊断时才使用。 - 填充:在有可选项的情况下,首部长度可能不是32位的整数倍,通过向该字段填充0,将其调整为32位整数倍,以方便计算机进行处理。 - 数据:传输的具体数据(并不是首部的一部分)。 感兴趣的话,可以试试通过 WireShark 对网络请求进行抓包,就可以看到对应的 IP 首部信息了:  可以看到,和上面介绍的 IP 头格式完全一致,只是没有可选字段和填充项。 在实际通信中,仅凭 IP 协议还不够,还要借助众多支持 IP 协议的相关技术才能更好地实现最终通信。