当连接多个异构的局域网形成强烈需求时,用户不满足于仅在一个局域网内进行通信,他们希望通过更高一层协议最终实现异构网络之间的连接。既然需要通过更高一层的协议将多个局域网进行互联,那么这个协议就必须为不同的局域网环境定义统一的寻址标准,这样才能在逻辑上真正实现设备之间跨越局域网的全局信息互通。于是IP协议出现了。
IP的目的就是在全局范围内实现跨越异构网络的寻址,所有与此无关的服务都不在IP定义的考量范畴之内,这就形成了IP的特点。为了跨越不同类型网络实现互联,IP需要忽略底层的传输介质,将使用不同介质的局域网连接起来,所以IP可以在任何技术上运行也可以说IP独立于底层介质。
IP的宗旨就是提供最简单的服务:实现从源到目的的数据转发。因此,IP既不会在传输数据之前与接收方建立连接,也不保障传输的可靠性,他只提供尽力而为的服务。
报文格式
1.版本:IPV4或IPV6,两个版本的IP采用的数据包封装格式也不相同。由于是4比特位,所以0100代表IPV4,0110代表IPV6。
2.首部长度:因为ip数据包首部有可选项字段,所以报头长度不固定。所以需要首部长度明确确分报头与数据载荷,它为4比特位,单位是4字节。也就是说报头最大是60字节。
3.服务类型:8比特位,利用该字段的不同取值可提供不同等级的服务质量,只有在使用区分服务时该字段才起作用。一般情况下不适用该字段。
4.数据长度:用来表示整个报文的大小,因为是16比特位,所以最大为65535字节。不过实际应用中很少传输这么长的数据报。
5.标识、标志、片偏移:标识、标志、片偏移这三个字段共同用于IPV4数据报分片。数据报会向下交付给数据链路层封装成帧,每一种数据链路层协议都规定了帧的数据载荷的最大长度,即最大传输单元(MTU)。例如以太网的数据链路层规定MTU的值为1500字节。如果某个数据报的总长度超过MTU,将无法封装成帧。需要将原数据报分片为更小的IPV4数据报,再将各分片的数据报封装成帧。
标识字段长度为16比特,属于同一个数据报的各个分片应该具有相同的标识。IP软件会维持一个计数器,每产生一个数据报,计数器就加1,并将此值付给标识字段。
标志字段长度为3比特,各比特位含义如下:最低位表示本分片后面是否还有分片。1表示有,0表示无。中间位表示是否允许分片。最高位为保留位,必须设置为0。
片偏移长度为13比特,以8字节为单位,表示分片数据报的数据载荷部分偏移在原数据报的位置有多远。
这三个字段是用于分片被对方网络层接收到后组装的,如果其中一片丢失那么所有分片都会被丢弃,不会继续组装并向上交付。
6.生存时间:长度为8比特,缩写为TTL(Time To Live)。最初以秒为单位,后来改以跳数为单位,路由器收到待转发的数据报时,将其首部中的该字段减1,若不为0就转发,否则就丢弃。
7.协议:长度为8比特,用来指明IP数据报的数据载荷属于何种协议。6为TCP,17为UDP,1为ICMP。
8.首部校验和:长度为16比特,用于检测IP数据报在传输过程中首部是否出现差错。
9.源ip与目的ip:长度为32比特。填写发送方IP和接收方IP。