IP 协议作用
在计算机网络的分层模型中,网络层主要负责数据在不同网络之间的传输和路由,确保数据从源节点传递到目标节点。IP协议(Internet Protocol,互联网协议)是网络层最重要的协议之一,它提供了数据包的逻辑寻址、分片与重组、路由选择等功能。
IP 协议的基本功能
-
逻辑寻址(Logical Addressing):
- IP协议提供了IP地址,这是数据在网络中传输的标识符。每个网络中的设备都通过IP地址进行标识,数据包通过目标IP地址传输到目标设备。
- IP地址具有层级结构,支持路由选择。
-
路由选择(Routing):
- 路由器根据IP地址和路由表决定数据包的转发路径。数据包从源设备出发时,经过多个路由器的转发,最终到达目的设备。
- IP协议负责将数据包从一个网络传输到另一个网络。
-
分片与重组(Fragmentation and Reassembly):
- 如果数据包过大,超出了某个网络的最大传输单元(MTU),IP协议会对数据包进行分片,每个分片都会包含源地址和目标地址,确保分片能够顺利到达目的设备。
- 目的设备接收到所有分片后,将它们重新组合为原始数据包。
-
无连接(Connectionless):
- IP协议是无连接的,这意味着数据包在传输过程中没有建立连接的概念。每个数据包都是独立的,路由器在转发时不会维护状态信息。
- 如果数据包丢失或出现错误,IP协议不会自动重发或纠正,通常依赖于传输层的协议(如TCP)来处理这些问题。
-
不可靠性(Unreliable):
- IP协议不提供错误检测与纠正的功能,它仅仅负责数据包的传输和路由。数据包传输过程中可能发生丢包、重复或错误,可靠性由上层协议(如TCP)保证。
IPv4 协议详解
1. IPv4 地址
IPv4使用32位地址表示,通常以四组十进制数表示,每组数字用“.”分隔,如 192.168.1.1。每组数字的范围是0到255。IPv4地址分为以下几类:
- A类地址:1.0.0.0 到 127.255.255.255,支持16,777,214个主机。
- B类地址:128.0.0.0 到 191.255.255.255,支持65,534个主机。
- C类地址:192.0.0.0 到 223.255.255.255,支持254个主机。
- D类地址:224.0.0.0 到 239.255.255.255,用于组播。
- E类地址:240.0.0.0 到 255.255.255.255,保留地址,通常不用于公共网络。
IPv4地址还包含子网掩码(subnet mask),用于确定网络地址和主机地址的边界。
2. IPv4 数据包结构
IPv4数据包由头部和数据部分两部分组成:
- IP头部:用于数据包的路由、识别、差错检测等。
- 数据部分:即需要传输的上层数据。
IPv4头部格式
字段 | 长度 | 说明 |
---|---|---|
版本(Version) | 4 位 | 表示IP协议版本,IPv4为4。 |
首部长度(IHL) | 4 位 | 表示IP头部的长度,单位为4字节,最小值为5,最大值为15。 |
服务类型(ToS) | 8 位 | 用于指定数据包的服务质量(QoS),通常不常用。 |
总长度(Total Length) | 16 位 | 数据包的总长度,包括IP头部和数据部分。最大值为65535字节。 |
标识(Identification) | 16 位 | 用于唯一标识数据包,尤其在数据包分片时用于重组。 |
标志(Flags) | 3 位 | 控制数据包分片的行为,最重要的标志是“是否允许分片”。 |
片偏移(Fragment Offset) | 13 位 | 分片的相对偏移量,单位为8字节。 |
TTL(Time to Live) | 8 位 | 限制数据包在网络中的生命周期(即跳数),避免数据包在网络中无限循环。 |
协议(Protocol) | 8 位 | 指示数据部分使用的上层协议(如TCP=6、UDP=17、ICMP=1)。 |
校验和(Checksum) | 16 位 | 用于验证IP头部是否发生错误。 |
源IP地址(Source Address) | 32 位 | 数据包的源IP地址。 |
目标IP地址(Destination Address) | 32 位 | 数据包的目标IP地址。 |
选项(Options) | 可变长度 | 可选字段,通常用于特殊目的,如时间戳、安全等。 |
填充(Padding) | 可变长度 | 用于保证IP头部长度是4字节的倍数。 |
3. IPv4 分片与重组
IPv4数据包的分片和重组机制是为了应对不同网络的MTU(最大传输单元)限制。数据包在经过一个网络时,若该网络的MTU小于数据包大小,路由器会将数据包分割成多个较小的片段,每个片段包含完整的IP头部,保证数据包能够在任何网络上传输。
- 分片:当数据包大于网络的MTU时,IP协议会将数据包分成多个小片段,每个片段包含数据包的标识符和偏移量信息,以便目标主机进行重组。
- 重组:目标设备接收到所有分片后,会根据标识符和偏移量将这些片段重新组装成完整的数据包。
4. 路由与转发
- 路由器:IPv4数据包通过网络中的路由器转发,路由器根据目标IP地址和路由表选择最佳路径。
- 路由表:每个路由器都有一个路由表,记录了不同网络段的路由信息,决定了数据包的转发方向。
IPv6 协议详解
IPv6是为了克服IPv4地址短缺等问题而设计的下一代IP协议。它使用128位地址,可以提供几乎无限的地址空间。
IPv6的地址类型有以下几种:
- 单播(Unicast):表示一个源设备和一个目标设备之间的通信。
- 多播(Multicast):表示数据包发送给一组目标设备。
- 任播(Anycast):表示数据包发送给一组设备中的任何一个设备,通常是距离最短的设备。
IPv6 数据包结构
IPv6相对于IPv4简化了头部结构。IPv6的报文头部包含以下字段:
字段 | 长度 | 说明 |
---|---|---|
版本(Version) | 4 位 | 表示协议版本,IPv6为6。 |
流标签(Flow Label) | 20 位 | 用于标识数据流。 |
负载长度(Payload Length) | 16 位 | 表示数据部分的长度。 |
下一个头部(Next Header) | 8 位 | 表示数据部分所使用的协议(如TCP、UDP等)。 |
跳数限制(Hop Limit) | 8 位 | 限制数据包的最大跳数。 |
源IP地址(Source Address) | 128 位 | 源IP |