版本号(version)
长度4比特,标识目前采用的ip协议的版本号。一般的值为0100(ipv4),0110(ipv6)。
ip包头长度(header length)
长度4比特。这个字段的作用是为了描述ip包头的长度,因为在ip包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即本区域值= ip头部长度(单位为bit)/(8*4),因此,一个ip包头的长度最长为“1111”,即15*4=60个字节。ip包头最小长度为20字节,最大60字节。
服务类型(type of service)
长度8比特。8位 按位被如下定义 ppp dtrc0
ppp:定义包的优先级,取值越大数据越重要
000 普通 (routine)
001 优先的 (priority)
010 立即的发送 (immediate)
011 闪电式的 (flash)
100 比闪电还闪电式的 (flash override)
101 cri/tic/ecp(找不到这个词的翻译)
110 网间控制 (internetwork control)
111 网络控制 (network control)
d 时延: 0:普通 1:延迟尽量小
t 吞吐量: 0:普通 1:流量尽量大
r 可靠性: 0:普通 1:可靠性尽量大
m 传输成本: 0:普通 1:成本尽量小
0 最后一位被保留,恒定为0
ip包总长(total length)
长度16比特。 以字节为单位计算的ip包的长度 (包括头部和数据),所以ip包最大长度65535字节。
标识符(identifier)
长度16比特。该字段和flags和fragment offest字段联合使用,对较大的上层数据包进行分段(fragment)操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。
片偏移(fragment offset)
长度13比特。表示该ip包在该组分片包中位置,接收端靠此来组装还原ip包。
生存时间(ttl)
长度8比特。当ip包进行传送时,先会对该字段赋予某个特定的值。当ip包经过每一个沿途的路由器的时候,每个沿途的路由器会将ip包的ttl值减少1。如果ttl减少为0,则该ip包会被丢弃。这个字段可以防止由于路由环路而导致ip包在网络中不停被转发。
协议(protocol)
以下是比较常用的协议号:
1 icmp
2 igmp
6 tcp
17 udp
88 igrp
89 ospf
头部校验和(header checksum)
长度16位。用来做ip头部的正确性检测,但不包含数据部分。 因为每个路由器要改变ttl的值,所以路由器会为每个通过的数据包重新计算这个值。
起源和目标地址(source and destination addresses)
这两个地段都是32比特。标识了这个ip包的起源和目标地址。要注意除非使用nat,否则整个传输的过程中,这两个地址不会改变。
以上是ip头部固定部分。下图是一个ping包wireshark ip头部解析截图:
阅读(2457) | 评论(0) | 转发(0) |