IP协议详细解读

IP协议

IP数据包包含报头数据两个部分,这里讲的就是报头部分包含的信息。报头最大可以是60个字节(下面会讲为什么),其中固定部分长度为20字节。

IP协议报头

为了方便结构化记忆,可以将报头每四个字节作为一部分,固定报头则有20/4 = 5块。

  1. 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包整体长度
  2. 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(13位):Fragments Offset 片位移,本分片相对于原始数据报文首位的偏移,只有DF为0时有效。
  3. 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 首部校验和
  4. 13-16字节:32位 源IP地址
  5. 17-20字节:32位 目的IP地址

具体例子

  • 0-3bits 4 -> ipv4

  • 4-7bits 5 -> 5*4 = 20 报头长度为20字节

  • 8-15bits 00 -> 3位优先权:0;4位TOS 0

  • 16-31bits 02f5 -> 报文总长度:757字节

  • 32-47bits a403 -> 标识号

  • 48-50bits 010(2进制) -> 保留位0,DF: 1 不分片,MF: 0 没有下一片

  • 50-63bits 000 -> 片偏移量0

  • 64-71bits 40 -> 可经过路由数TTL 4*16 = 64

  • 72-79bits 06 -> 协议号: TCP

  • 80-95bits 0000 -> checksum

  • 64-95bits c0a81fa4 -> 192.168.31.164

  • 96-127bits 652526f9 -> 101.37.28.249

posted @ 2018-09-18 11:56  lyk_109  阅读(586)  评论(0编辑  收藏  举报