📅  最后修改于: 2023-12-03 14:42:10.256000             🧑  作者: Mango
IPv4(Internet Protocol version 4)是Internet上使用最广泛的协议之一,它负责实现互联网中不同主机之间的通信,而IPv4数据包结构则是IPv4通信中最基本的组成部分。
IPv4数据包结构由以下几个部分组成:
IPv4 数据包的版本号, IPv4 数据包的版本号必须是4。
IPv4 数据包的头部长度是指整个 IPv4 数据包头部占用的字节长度。IPv4 数据包的头部长度至少为20个字节,因为 IPv4 数据包头部包含了很多必需的信息,如各种标识等。
服务类型用于说明 IPv4 数据包的传输方式,如优先级、延时等。
IPv4 数据包的总长度是指整个数据包(包括数据和头部)占用的字节长度,最大长度为65535个字节。
标识符用于标识一个数据包,每个数据包都有唯一的标识符。
在标志字段中,第一位被设置为0,第二位用于指示数据包是否可以分段传输,第三位用于指示是否为分段数据包的最后一个分段。
分段偏移量仅在数据包被分段传输时使用,用于表示数据包相对于整个数据包在其所处数据流中的偏移量。
生存时间指定数据包可以在互联网上经过的最大跃点数。
协议指示数据包有效负载的类型,常见的包括TCP、UDP、ICMP等。
校验和是由IPv4头部计算出来的,用于验证头部在数据传输过程中是否发生了改变。
源地址指发送 IPv4 数据包的电脑或者路由器的IP地址。
目标地址指接收 IPv4 数据包的电脑或者路由器的IP地址。
可选项允许IPv4数据包头部向网络传达更多信息,例如记录传输轨迹、记录时间戳等。
以下是一个IPv4数据包的头部结构的代码示例:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Header Length | Type of Service | Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time To Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
这是一个16字节的表格,其中各项如上所述。