IP协议图解详解

IP协议

IP数据包结构

  • 数据包结构
4位版本 4位首部长度8位服务类型 16位总长度
16位标志3位标志13位片偏移
8位生存时间(TTL)8位协议16位首部校验和
32位源IP地址
32位目的IP地址
选项
数据
  • 数据包结构解释
字段 位数 用法说明
版本(version) 4 说明用以创建该数据包的IP版本。所有接触该数据包的设备都必须支持本字段显示的版本。大部分TCP/IP产品都使用IPv4
首部长度(Header Length) 4 以32位为单位表明IP首部的长度。因为几乎所有的IP首部都是20字节长,这个字段的值几乎都是5
服务类型(Type-of-Service Flags) 8 给应用程序,主机和Internet上的路由器提供一个优先级服务。在这个字段设置合适的标志,应用程序可以要求这个数据包得到高优先级,而让其他数据包等待。
总长度(Total Packet Length) 16 以字节为单位说明全部IP包的长度,包括首部和主体部分
标识(Fragment Identifier) 16 标识数据包,在出现分片,并想把片段合并成原状时是有用的
标志(Fragmentation Flags) 3 说明可能出现的任何分片的某些方面,也提供了分片控制服务,例如不让路由器分片某个包
偏移(Fragmentation Offset) 13 说明这个片段提供的源IP数据包的字节范围,用8字节的偏移表示
生存时间(Time-to-Live) 8 说明数据包在不可发送和破坏之前还可以经过的跳数
协议(Protocol Identifier) 8 说明储存在IP数据包主体的高层协议
首部校验和(Header Checksum) 16 用来储存IP首部的校验和
源IP地址(Source IP Address) 32 用来储存最初发送该数据包的主机的32位的IP地址
目的IP地址(Destination IP Address) 32 用来储存该数据包到达目的的系统的32位的IP地址
选项(options) 可变 就像IP用type-of service 标志提供了一些优先级服务一样,附加的特殊处理选项能够通过Options字段定义。这些选项包括source routing,timestamp和其他一些选项。这些选>
Padding(如果有需要的话) 可变 IP数据包的首部的长度必须是32的倍数。如果首部中引入了某些选项,首部必须填充到能够被32整除的位数
数据(data) 可变 IP数据包的数据部分。正常情况下,会包含一个完全的TCP火UDP信息,但是它也可以是其他IP数据包的一个片段
  • 实例分析
0000 00 60 08 82 d2 19 00 0b 46 99 6a 80 08 00 45 00
0010 04 9c 19 ce 40 00 7f 06 57 39 c0 a8 02 02 c0 a8
0020 03 02 00 14 05 55 e1 c1 f3 27 05 98 0a 88 50 18
45:4是使用的IP版本号,IPv4,5是Header Length首部长度,32位为一个单位,一般都为20字节,也就是5.
00:总共八位,0000 0000,前面3位是优先权要求,此处为0,也就是普通优先级,数据越高,越优先。第四位是延迟要求Delay,0是普通值,1,为最小延迟,第五位是通信要求Throughput,0为普通值,1为最大吞吐量,6位是可靠性要求Reliability,0为普通值,1为最高可靠性。第七八位是备用,Not Used
04 9c:Total Length总共16位,以16进制的形式,表示IP数据包的大小(字节),包括首部和数据部分。
19 ce:Identification,标识字段,用于唯一地标识主机发送的每一份数据包,产生的每一个数据包都有16位的序列号,用来让发送系统和接收系统识别该数据包。通常每发送一份报文它的值就会加1。当要发送一个数据包分片的时候,会把这个字段的内容复制到每个片中,表示这些被分割的片属于同一个数据包。
4:Flags只有3位,也就是010,第一位Reserved bit :目前没有使用。第二位don’t fragment :用于说明某一IP路由是否可以分片这个IP包。为1表示不可以。第三位more fragments:用于说明源数据包是否还有其他片段。为1时表示其后还有被分割的包。
40 00;Fragment Offset偏移定位,13位,0 0000 0000 0000当一个大的数据包经过一些传输单元(MTU)较小的路径时,会被分割成片进行传送,由于链路情况和其他因素的影响,数据到达时可能会失序,所以在分片时,每个片做好偏移定位标记,便于重组。这里为0表示数据包没有被分片。
7f:Time-to-Live,生存时间TTL,在许多网络协议中都会碰到,它指定某个数据包在不能发送并被丢弃之前可以经过的最大跳数。这里是7f换成10进制就是127次。表示最多还可以跳127次,每跳一次就会减去1,如果这个值到达最终目的系统之前减到0,这个包会被认为不可发送并被丢弃。
06:Protocol这个字段用来识别嵌入到IP数据包中的上层协议类型:值为1表示ICMP,值为2表示IGMP,值为6表示TCP,值为17表示UDP。这里值为6表示TCP
57 39:首部校验和,用以储存该IP首部的校验和,使得中间设备能够验证首部的内容并检验出可能的数据损坏,只应用与IP首部的值
c0 a8 02 02:标识该数据包的源发送者,也就是源端系统使用的32位IP地址。换算成10进制就是192.168.2.2
c0 a8 03 02:标识目的地的IP地址。

IP协议

一次传输流程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章