在复杂的网络环境中确定一个合适的路径
协议头格式如下:
4位版本号(version)
指定协议的版本(IPV4-4,IPV6-6)
4位首部长度(header length)
IP头部的长度是多少个32bit,也就是length*4的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节
8位服务类型(Type Of Service)
3位优先权字段(已经弃用),4位TOS字段和1位保留字段(必须置为0)。
4位TOS不同的位设1分别表示不同的形态:最小延时、最大吞吐量、最高可靠性、最小成本。
这四者相互冲突,只能选择一个。对于SSH/Telnet这样的应用程序,最小延时比较重要;对于FTP这样的程序,最大吞吐量比较重要
16位总长度(total length)
IP数据报整体占多少个字节
IP协议确实也存在64KB这样的限制,但是IP协议自身支持”拆包组包“功能
通过以下这三个属性来支持IP协议的拆包和组包:
8位生存时间(Time To Live,TTL)
数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL-=1,一直减到0还没到达那么就丢弃了。这个字段主要是用来防止出现路由循环。
8位协议
表示上层协议(传输层)的类型:IP数据包的载荷部分是一个UDP数据包还是一个TCP数据包
16位头部校验和
使用CRC进行校验,来鉴别头部是否损坏(不负责校验IP数据的载荷,UDP/TCP自身都是有校验和的)
32位源地址和32位目标地址
表示发送端和接收端IP地址,IP地址本身是一个32位整数,为了方便理解,写作点分十进制方式
IPV4版本的地址格式是:a.b.c.d,其中abcd表示的是0~255的数字,如192.168.88.101就是一个标准的IP地址
选项字段
(不定长,最多40字节)