IP
IP (Internet Protocol) 协议和 TCP 组成的 TCP/IP 协议栈是互联网的核心协议之一。
IP 协议有以下特点:
- 无状态: 不储存状态信息,意味着 IP 协议传递的数据包可能是无序的、重复的。
- 无连接: 不需要建立连接,发送方和接收方都不需要存储对方的信息,每次发送都需要指定目标的 IP 地址。
- 不可靠: IP 协议不能保证数据包一定能送达,可能会丢包,或者因超时而被丢弃。
IPV4 结构

字段介绍
| 字段 | 描述 | 
|---|---|
| 版本 | 占用 4 bit,用来标识 IP 首部的版本号。IPv4 版本号是 4 | 
| 首部长度 | 表示 IP 首部的大小,最小值为5 (54 = 20 byte),最大值为 15 (154 = 60byte) | 
| 区分服务(DS) | 用来表示服务的类型。可划分为 DSCP 和 ECN (显式拥塞通告) | 
| 总长度 | 表示的是 IP 首部与数据部分合起来的总字节数 | 
| 标识 | 用于分片重组,分片时每产生一个数报文该字段就加1 | 
| 标志 | 表示包被分片的相关信息 | 
| 片偏移 | 用来标识被分片的每一个分段相对于原始数据的位置,单位为 8 字节 | 
| 生存时间(TTL) | 每经过一个路由器该字段就会减一,当为零的时候会被丢弃 | 
| 协议 | 该报文数据区使用的协议 | 
| 首部校验和 | 用于检测报文是否损坏 | 
| 源地址 | 表示发送端的 IP 地址 | 
| 目标地址 | 表示接收端的 IP 地址 | 
| 选项 | 附加的信息 | 
| 数据 | 传输的数据内容 | 
版本对应数字列表
| 版本 | 描述 | 状态 | 
|---|---|---|
| 0 | 互联网协议,v4 之前 | 保留 | 
| 1–3 | 未分配 | |
| 4 | 互联网协议版本 4 (IPv4) | 活跃 | 
| 5 | 互联网流协议或 ST | 废弃 | 
| 5 | 互联网流协议或 ST-II | 废弃 | 
| 6 | 简单互联网协议 (SIP) | 废弃 | 
| 6 | 互联网协议版本 6 (IPv6) | 活跃 | 
| 7 | TP/IX 下一代互联网 (IPv7) | 废弃 | 
| 8 | P 互联网协议 (PIP) | 废弃 | 
| 9 | TCP 和 UDP 大地址 (TUBA) | 废弃 | 
| 10–14 | 未分配 | |
| 15 | 版本字段标记值 | 保留 | 
标志 (Flags) 介绍
这个3位字段用于控制和识别分片,它们是:
| 位 | 描述 | 
|---|---|
| 0 | 保留,必须为0 | 
| 1 | 禁止分片(Don’t Fragment,DF) | 
| 2 | 更多分片(More Fragment,MF) | 
注意
- 如果DF标志位被设置为1,但路由要求必须分片报文,则此报文会被丢弃。 
- 被分片的报文除了最后一个分片以外其他分片的 MF 标志位都为 1,且最后一个分片的分片偏移字段不为 0 
常见的 IP 选项有哪些?
- 安全性选项(Security Options):用于提供网络安全功能,例如数据加密、身份验证和访问控制。 
- 记录路由选项(Record Route Option):启用IP数据报在传输路径上记录途经的路由器的IP地址,以便诊断网络问题或跟踪数据包的路径。 
- 宽松源站选路(Loose Source Routing):指定数据包的传输路径,要求数据包经过指定的中间节点,但允许在路径上的其他节点进行一定的选择。 
- 严格源站选路(Strict Source Routing):指定数据包的传输路径,要求数据包必须按照指定的节点顺序传递,其他节点不能参与。 
- 时间戳选项(Timestamp Option):在数据包中插入时间戳信息,用于测量数据包从源到目的地传输所需的时间。 
分片
MTU
最大传输单元 (MTU, Maximum Transmission Unit) 指的是在数据链路层能通过的最大数据包大小(单位: 字节)。
当 IP 数据包在链路层传输的时候,若数据包大于链路层的 MTU, 则需要对数据包进行分片。分片的长度需小于等于 MTU 减去 IP 首部长度。
分片过程
分片后的每一个数据分片都会放到独立的 IP 报文中,报文中的对应字段需要进行修改:
- 修改总长字段为此时分片的长度
- 除了最后一片分片外,其他分片的更多分片(MF)标志位被设置为 1
- 调整分片偏移量
- 重新计算校验和
例子
一个IP报文首部长度 20 字节且有 4000 字节的数据载荷(总长:4020 字节),在 MTU 为 2500 字节的链路上传输,他将被分割成两个分片:
| 总长 | 首部 | 数据 | 更多分片(MF)? | DF | 分片偏移量 | 
|---|---|---|---|---|---|
| 2500 | 20 | 2480 | 是 | 0 | 0 | 
| 1540 | 20 | 1520 | 否 | 0 | 310 (2480/8) | 
同理,切割后的分片在 MTU 变小时会被再次切割。
重组
如何判断数据已被分片?
- DF 标志位为 0
- 分片偏移字段不为 0
接收者会将分片收集起来,并通过偏移量进行排序,一旦收集齐就会组装起来提交给上传协议栈。
IPV6

IPV4 和 IPV6 区别
| 特性 | IPv4 | IPv6 | 
|---|---|---|
| 地址长度 | 32位,提供约43亿个地址 | 128位,提供极大数量的地址 | 
| 地址表示 | 点分十进制表示法,例如:192.168.0.1 | 冒号十六进制表示法,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334 | 
| 头部长度 | 固定,20字节 | 固定,40字节 | 
| 服务质量(QoS) | 原生支持有限 | 原生支持,包括流标签和流优先级 | 
| 安全性 | 需要使用 IPSec | 原生支持 IPSec | 
| 配置 | 手动或 DHCP | 手动,自动(基于链接的本地地址和路由公告)或 DHCPv6 | 
什么是 IP 欺骗?
IP 欺骗技术指的是伪造某台主机的 IP 地址,攻击者可以向服务器发送大量 RST 标志位的不同IP 的数据段,使得服务器和主机的连接断开,若其他主机需要访问服务器,则需要重新建立连接。或者伪装成其他主机和服务器建立连接,窃取数据。