Net:IPv4:修订间差异

来自WHY42
Riguz留言 | 贡献
Riguz留言 | 贡献
第13行: 第13行:


[[Image:IPv4-Structue.png|600px]]
[[Image:IPv4-Structue.png|600px]]
* 版本: IPv4即为4
* 首部长度: 首部长度说明首部有多少32位字(4字节)。由于IPv4首部可能包含数目不定的选项,这个字段也用来确定数据的偏移量。这个字段的最小值是5(二进制0101),相当于5*4=20字节(RFC 791),最大十进制值是15。
* 区分服务: 只有在使用区分服务时,这个字段才起作用,在一般的情况  下都不使用这个字段。例如需要实时数据流的技术会应用这个字段,一个例子是VoIP。
* 显式拥塞通告( Explicit Congestion Notification,ECN):在RFC 3168中定义,允许在不丢弃报文的同时通知对方网络拥塞的发生。ECN是一种可选的功能,仅当两端都支持并希望使用,且底层网络支持时才被使用。
* 全长: 报文总长,包含首部和数据,单位为字节。这个字段的最小值是20(20字节首部+0字节数据)
* 标识符: 主要被用来唯一地标识一个报文的所有分片,因为分片不一定按序到达,所以在重组时需要知道分片所属的报文。每产生一个数据报,计数器加1,并赋值给此字段。
* 标志 : 这个3位字段用于控制和识别分片,它们是:
** 位0:保留,必须为0;
** 位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
** 位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。
* 分片偏移:指明了每个分片相对于原始报文开头的偏移量,以8字节作单位。
* 存活时间: 避免报文在互联网中永远存在(例如陷入路由环路)。存活时间以秒为单位,但小于一秒的时间均向上取整到一秒。在现实中,这实际上成了一个跳数计数器:报文经过的每个路由器都将此字段减1,当此字段等于0时,报文不再向下一跳传送并被丢弃,最大值是255。常规地,一份ICMP报文被发回报文发送端说明其发送的报文已被丢弃。这也是traceroute的核心原理。
* 协议: 定义了该报文数据区使用的协议。
* 首部检验和: 只对首部查错,不包括数据部分。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。
* 源地址: 请注意,因为NAT的存在,这个地址并不总是报文的真实发送端
* 目的地址: 报文的接收端。
* 选项: 并不被经常使用
=分片和组装=


[[Category:Network]]
[[Category:Network]]

2021年7月12日 (一) 14:46的版本

Pv4在IETF于1981年9月发布的 RFC 791 中被描述,此RFC替换了于1980年1月发布的 RFC 760。

IPv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包,意即它不保证任何数据包均能送达目的地,也不保证所有数据包均按照正确的顺序无重复地到达。这些方面是由上层的传输协议(如传输控制协议)处理的。

地址空间

  • A类:0.0.0.0~127.255.255.255
  • B类:128.0.0.0~191.255.255.255
  • C类:192.0.0.0~223.255.255.255
  • D类:224.0.0.0~239.255.255.255
  • E类:240.0.0.0~255.255.255.255

报文结构

  • 版本: IPv4即为4
  • 首部长度: 首部长度说明首部有多少32位字(4字节)。由于IPv4首部可能包含数目不定的选项,这个字段也用来确定数据的偏移量。这个字段的最小值是5(二进制0101),相当于5*4=20字节(RFC 791),最大十进制值是15。
  • 区分服务: 只有在使用区分服务时,这个字段才起作用,在一般的情况 下都不使用这个字段。例如需要实时数据流的技术会应用这个字段,一个例子是VoIP。
  • 显式拥塞通告( Explicit Congestion Notification,ECN):在RFC 3168中定义,允许在不丢弃报文的同时通知对方网络拥塞的发生。ECN是一种可选的功能,仅当两端都支持并希望使用,且底层网络支持时才被使用。
  • 全长: 报文总长,包含首部和数据,单位为字节。这个字段的最小值是20(20字节首部+0字节数据)
  • 标识符: 主要被用来唯一地标识一个报文的所有分片,因为分片不一定按序到达,所以在重组时需要知道分片所属的报文。每产生一个数据报,计数器加1,并赋值给此字段。
  • 标志 : 这个3位字段用于控制和识别分片,它们是:
    • 位0:保留,必须为0;
    • 位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
    • 位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。
  • 分片偏移:指明了每个分片相对于原始报文开头的偏移量,以8字节作单位。
  • 存活时间: 避免报文在互联网中永远存在(例如陷入路由环路)。存活时间以秒为单位,但小于一秒的时间均向上取整到一秒。在现实中,这实际上成了一个跳数计数器:报文经过的每个路由器都将此字段减1,当此字段等于0时,报文不再向下一跳传送并被丢弃,最大值是255。常规地,一份ICMP报文被发回报文发送端说明其发送的报文已被丢弃。这也是traceroute的核心原理。
  • 协议: 定义了该报文数据区使用的协议。
  • 首部检验和: 只对首部查错,不包括数据部分。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。
  • 源地址: 请注意,因为NAT的存在,这个地址并不总是报文的真实发送端
  • 目的地址: 报文的接收端。
  • 选项: 并不被经常使用

分片和组装