IP协议
IP数据包包含报头和数据两个部分,这里讲的就是报头部分包含的信息。报头最大可以是60个字节(下面会讲为什么),其中固体部分长度为20字节。
IP协议报头
为了方便结构化记忆,可以将报头每四个字节作为一部分,固定报头则有20/4 = 5块。
- 1-4字节:
- 0-3(4bits): version 版本号 IP版本号,4表示IPv4, 6表示IPv6。
- 4-7(4bits): IHL ip报头长度,4bits因此最大为15,所以能表示的报头最长为15*4 = 60字节。
- 8-15位(8位): Type of Service 服务类型, 3位优先权,4位TOS子字段,最后1位必须为0。
- 16-31(16位): Total Length IP包整体长度
- 5-8字节 :
- 0-15 (16位):Identification 标识号,唯一确定主机发送的每一份数据报。当数据报长度大于MTU(最大传输单元)时,要将数据包分割,分割后的标识号不变。
- 16-18(3位): Flags 标志,用来表明当前ip报文的分割类型,依次为R DF MF。R保留位;DF为1不分片,DF为0分片;MF为0最后一片,MF为1还有下一片。
- 19-31(15位):Fragments Offset 片位移,本分片相对于原始数据报文首位的偏移,只有DF为0时有效。
- 9-12字节:
- 0-7 (8位):TTL(Time-to-Live) 生存时长,表示可以经过路由的次数,每到下一级路由,该值减1。当该值为0时,丢弃数据包。
- 8-15 (8位):Protocol 协议号,表示使用的协议号,常用TCP: 6; UDP: 17; ICMP: 1。其他可参考List of IP protocol numbers
- 16-31 (16位):Header Checksum 首部校验和
- 13-16字节:32位 源IP地址
- 17-20字节:32位 目的IP地址