摘要:TCP/IP协议的网际层接收到传输层传递过来的数据单元,封装成向下(OSI模型的数据链路层、TCP/IP协议的网络访问层)传递的数据单元称为IP数据报。
今天给大家分享IP数据库相关的知识,希望对大家进一步了解IP协议提供一些帮助!
TCP/IP协议的网际层接收到传输层传递过来的数据单元,封装成向下(OSI模型的数据链路层、TCP/IP协议的网络访问层)传递的数据单元称为IP数据报。
IP数据报属于IP协议中数据传输的基本单元,它包括两个主要部分:固定报头(Header)和可变的数据部分(Data)。
● 固定报头(Header):针对IPV4固定报头的最小长度为20字节,其中包括版本、首部长度、服务类型、总长度、标识(部分)、生存时间、协议、首部校验和、源地址、目的地址这些字段总和等于20字节;针对IPv6的话报头部分是固定的40字节,
● 数据部分(Data):针对IPV4一般为1500-20=1480字节,不考虑分片等情况下理论最大为65535-20=65515 字节;IPV6理论最大为65535-40=65495字节。
● 版本:表示所使用的IP版本。固定值为4,对应的二进制是 0100。
● 网际报头长度(IHL):表示IP报头以32位字为单位的长度。其最小长度是5个32比特字,相应的二进制表示是0101。
● 服务类型:源IP能够指定特殊的路由信息。该字段的主要用途是对等待通过路由器的数据报区分优先级,而目前大多数实现把是这个字段全填为 0。
● 总长度:这个16位的字段表示完整IP数据报的总长度,单位是字节。
● 标识:标识字段是一个16位的唯一且递增的数值,用于在IP数据报拆分时分配相同的标识号,以便接收端能够正确重组原始消息。
● 标记:标记字段中的DF(不分段)和MF(更多分段)位用于控制IP数据报的分段行为:DF位设置为1表示不允许分段,而MF位设置为0表示当前数据报没有更多分段或未进行分段。
● 分段位移:这个13位的字段是一个数值,被赋予每个连续的分段。目标设备的IP利用这个值以正确的次序重组分段。
● 生存时间(TTL):生存时间(TTL)字段表示数据报在被抛弃之前允许通过的路由器跳数,每个路由器在转发数据报时至少将其减1,以防止数据报在网络中无限循环。跳数表示到达目标设备需要经过路由器的个数。
● 协议:表示接收数据载荷的协议,常见协议有ICMP:1,TCP:6,UDP:17。
● 报头校验和:该字段包含16位的校验和,只用于检验报头本身的有效性。
● 源IP地址:表示数据报的源IP地址。
● 目的IP地址:表示数据报的目的IP地址。
● IP选项:该字段支持一些可选的报头设置,主要用于测试、调试和安全的目的。基于该字段得出IPV4数据报报头总长度大于20字节。
● 填充:IP 选项字段的长度不是固定的。填充字段可以提供一些额外的0,从而保证整个报头的长度必须是32位的整倍数。
● IP数据载荷:属于实际传输的数据,可以承载如TCP段或UDP数据报等上层协议的数据。其长度是可变的,取决于实际传输的需求,但总长度(首部加数据)不能超过最大传输单元(Maximum Transmission Unit, MTU限制一般为1500字节),否则需要进行分片处理。
● 版本(Version):长度4 位,表示 IP 协议的版本号,值固定为 6。
● 流量类别(Traffic Class)长度:8 位,用于标记数据包的优先级和服务质量(QoS)需求。
● 流标签(Flow Label):长度20 位,用于标识属于特定流的数据包,有助于中间节点提供更好的服务质量。由源节点设置,并在路径中保持不变。
● 有效载荷长度(Payload Length)长度:16 位,表示整个数据报中除 IPv6 报头之外的数据部分的长度,单位为字节。注意,该字段的最大值为 65,535 字节,但如果使用 Jumbogram 选项,数据部分可以超过这个限制。
● 下一头部(Next Header):长度8 位,表示紧跟在 IPv6 报头之后的下一个头部的类型。常见的值包括 TCP(6)、UDP(17)、ICMPv6(58)等。如果存在扩展头部,这个字段会指向第一个扩展头部的类型。
● 跳数限制(Hop Limit):长度8 位,表示数据包在网络中可以经过的最大跳数。每经过一个路由器,这个值会减少 1,当值为 0 时,数据包将被丢弃。
● 源地址(Source Address):长度128 位,表示数据包的发送端地址。
● 目标地址(Destination Address):长度:128 位,表示数据包的目标地址。
扩展头部
常见的扩展头部包括:
● 逐跳选项头部(Hop-by-Hop Options Header):必须由每个中间节点处理。
● 路由选择头部(Routing Header):用于指定数据包的路由路径。
● 分段头部(Fragment Header):用于支持数据包的分片和重组。
● 认证头部(Authentication Header):用于提供数据完整性验证。
● 封装安全载荷头部(Encapsulating Security Payload Header):用于提供数据加密和完整性验证。
说明:这些扩展头部的存在与否及其顺序由 "下一头部" 字段决定。
来源:免费高清壁纸大全