ip归于网络层协议,其含义在于确认设备的方位,即ip地址。但又和arp与tcp不同,它是为传输层服务的,一般将tcp和udp架在ip协议之上。所以他只不过是一个数据的载体,自身并没有自己的问询与回复功用。他在程序中,只起到确认传输的功用。
以上是ip头的内容,
版别一般为4,即ipv4,假如是ipv6,则可能为6,
首部长度:首部长度应该为 数量*4 一般为20字节,通过抓包东西抓包,根本都是20字节无一例外。
tos服务类型:应该是对应路由器的,当终端接纳到数据后,应该就不关怀这个的值了。包括进程字段(3位,设置了数据包的重要性,取值越大数据越重要),推迟字段(1位),流量字段(1位),可靠性字段(1位), 本钱字段(1位),未运用(1位)
16位总长度:即ip总长
16位标识:占16位。IP软件在存储器中保持一个计数器,每发生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,由于IP是无衔接服务,数据报不存在按序接纳的问题。当数据报由于长度超越网络的MTU而有必要分片时,这个标识字段的值就被复制到一切的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最终能正确地重装成为本来的数据报。
ip头部标识与片偏移:
ip数据头中的3位标识最低位为mf,为1时阐明这个ip数据包是分片的,而且后续还有数据包,为0时阐明这个ip数据包是分片的,但已经是最终一个数据了。中间位为df,df为1时,阐明这个数据包是不分片的,为零时才答应数据包分片。
片偏移 :占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对方位。也便是说,相关于用户数据字段的起点,该片从何处开端。片偏移以8个字节为偏移单位。也便是说,每个分片的长度一定是8字节(64位)的整数倍。
8位ttl生计时刻,表明的是数据从一个设备发向另一个设备,通过一个中转站,则减1,当ttl为0时,即便收端收到,则确定该数据超时,则丢掉该数据。也便是一个避免超时的设置,不过网上还有另一种说法,便是表明自己的设备运用的是什么体系,详细表明什么,没有试过。不过一般ttl的数值为64.
8位协议:%&&&&&%MP(1)、TCP(6)、UDP(17)。
校验和:为头部校验。
32位源ip和32为方针ip
还有一个是选项,至于选项的内容是什么,由于没见过,详细我也不知道。
假如没有选项或选项的后边,那便是数据,数据包括这tcp数据和udp数据。
关于程序而言,先倒置ip,然后把那些死的东西写进去,乃至是不处理,只处理那些可变的部分即可。