IP协议头格式
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 | ||||||||||||||||||||||||||||||||||||||||||||||||
以下内容摘自笔者编著的《网管员必读——网络测试、监控和实验》一书。3.3 IP协议头格式和Sniiffer Portable的IP头IP(Internet Protocol,因特网协议)是OSI第三层——网络层协议,本节仅以IPv4版本为例进行介绍。IP协议也是一个无连接的协议,主要就是负责在主机间寻址,并为数据包设定路由,在交换数据前它并不建立会话。因为它不保证正确传递。另一方面,数据在被收到时,IP不需要收到确认,所以它是不可靠的。
|
|
协议号 |
协议 |
协议号 |
协议 |
|
00 |
IP |
22 |
XNS-IDP |
|
01 |
ICMP |
27 |
RDP |
|
02 |
IGMP |
29 |
ISO-TP4 |
|
03 |
GGP |
36 |
XTP |
|
04 |
IP-ENCAP |
37 |
DDP |
|
05 |
ST |
39 |
IDPR-CMTP |
|
06 |
TCP |
73 |
RSPF |
|
08 |
EGP |
81 |
VMTP |
|
12 |
PUP |
89 |
OSPFIGP |
|
17 |
UDP |
94 |
IPIP |
|
20 |
HMP |
98 |
ENCAP |
n 头校验和(Header checksum)
指IPv4数据报包头的校验和。这个数值用来检错用的,用以确保封包被正确无误的接收到。当封包开始进行传送后,接收端主机会利用这个检验值会来检验余下的封包,如果一切无误就会发出确认信息表示接收正常。与UDP和TCP协议包头中的校验和作用是一样的。占16位。
【经验之谈】首部检验和字段是根据IP首部计算的检验和码,不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP协议在它们各自的首部中均含有同时覆盖首部和数据检验和码。
为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16位进行二进制反码求和(整个首部看成是由一串16位的字组成),结果存在检验和字段中。当接收端收到一份IP数据报后,同样对首部中每个16 位进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么IP就丢弃收到的数据报。但是不生成差错消息,由上层去发现丢失的数据报并进行重传。
ICMP、IGMP、UDP和TCP都采用相同的检验和算法,尽管TCP和UDP除了本身的首部和数据外,在IP首部中还包含不同的字段。由于路由器经常只修改TTL字段(减1),因此当路由器转发一份消息时可以增加它的检验和,而不需要对IP整个首部进行重新计算。
n 源地址(Source Address,SA)
发送IP数据包的IP地址。占32位。
n 目的地址(Destination Address)
接收IP数据包的IP地址。也占32位。
n 选项(Options)+填充(Padding)
这两个选项较少使用,只有某些特殊的封包需要特定的控制才会利用到。共32位。这些选项通常包括:
Ø 安全和处理限制:用于军事领域
Ø 记录路径:让每个路由器都记下它的IP地址
Ø 时间戳:让每个路由器都记下它的IP地址和时间
Ø 宽松的源站选路:为数据报指定一系列必须经过的IP地址
Ø 严格的源站选路:与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址。
以上这些选项很少被使用,而且并非所有的主机和路由器都支持这些选项。选项字段一直都是以32位作为界限,在必要的时候插入值为0的填充字节。这样就保证IP首部始终是32位的整数倍(这是首部长度字段所要求的)。
从以上IP包头格式可以看出,IP协议包头大小也有两种:当没有“选项”这个字段时,为160位,20个字节;当有“选项”字段时为192位,24个字节。它与TCP协议包头大小是一样的。
本文出自 “王达博客” 博客,转载请与作者联系!
本文出自 51CTO.COM技术博客



茶乡浪子
博客统计信息