
实际上只有两个取值
4 ==> IPv4(主流)6 ==> IPv6
IPv2,IPv5在实际中是没有的,可能是理论上/实验室中存在

IP 协议报头也是变长的,因为选项个数不确定,所以报头长度也不确定。因此就需要使用 4 位首部长度进行区分
4 位首部长度范围:0~15,所以报头长度 *4 才是实际的长度
15*4=60type of service

3位优先权字段(已经弃⽤),4位 TOS 字段,和 1位保留字段(必须置为 0)。4位 TOS 分别表⽰:
IP 数据报的长度

UDP 也是 16 位(2 个字节,64KB)。但并非 IP 协议报头最多能携带的数据就是 64KB
IP 协议内置了拆包组包机制,单个 IP 数据报确实没法超过 64KB,但是不代表 IP 协议不能传输超过 64KB 的数据。IP 协议会自动把大的数据包,拆成多个 IP 数据报携带传输,在接收方再进行拼装
装修的时候,装柜子/床,进不了电梯,也进不了房门,怎么办?

IP 协议会自动拆包,统一个载荷的数据,会被分成多分,交给多个 IP 数据报来携带。多个 IP 数据包之间:
最后组包的时候,根据 16 位标识 确定哪些数据包放在一组,然后根据 13位片偏移 决定顺序,最后根据 3位标志位 决定是不是最后一个
如果就是想使用 UDP 实现传输找过 64KB 的数据,该怎么做呢?

描述了一个数据包在网络上存活的最长时间
TTL 就是约定了一个传输时间的上限,当达到上限之后,数据包就会被自动丢弃掉
s 或者 min,而是次数(经过路由器转发的次数)发送一个 IP 数据报的时候,会有一个初识的 TTL 的值(32,64,128…)。数据包每次经过一个路由器转发,TTL 就会 -1(经过交换机不减)。一旦 TTL 减到 0 了,此时这个数据包就会被当前的路由器直接丢弃掉

ping命令:用来检测网络的连通性
64这样的TTL够用吗?
64 这样的 TTL 是非常充裕的 128 这样的 TTL
IP 数据包中,携带的载荷,是哪种传输层协议的数据包
通过这里的不同数值,感知到接下来要把数据给 TCP 解析,还是 UDP 解析,还是其他协议解析
具体的数值这里不谈,这里暂时只聊作用

验证数据在传输中是否出错(只是针对首部,IP 报头)
TCP/UDP 都有自己的校验和,此处就不需要再次进行验证了
IP 数据报中最关键的信息:数据包从哪里来,到哪里去
ipconfig,就可以看到当前机器的 ip 地址 
0-255(只要有一个部分不在这个范围,就可以认为是一个非法/错误的 IP)IP 地址,用来标识网络上的一个设备。期望 IP 地址是唯一的