### 网络层数据包（IP数据包，packet）由两部分组成，首部加数据 
### 数据：大部分是由传输层传下来的数据段（Segment） 
<img width="716" alt="image" src="https://user-images.githubusercontent.com/39154923/136766714-6d100163-b1d3-4e84-a6fd-095c5e1cedfc.png">

### 字段含义
- 版本：4位，ipv4，ipv6
- 首部长度：4位，乘4表示首部长度，最大60，固定20 + 可变部分 40 
- 总长度：16位，最大65535字节，首部加数据部分长度总和
- 区分服务：设置标记，提高优先级，用于提高网络质量
- 标识：数据包的ID，占16位，当数据包过大超过数据链路层MTU进行分片时，同一个数据包的所有片的标识都是一样的，每发出一个数据包，ID就+1  
- 标志：占3位，第一位保留，第二位1代表不允许分片，0代表允许分片，第三位1代表不是最后一片，0代表是最后一片
- 片偏移：占13位，乘8代表字节偏移，可以是总共字节数量相比13位二进制扩大8倍
- TTL：占8位，每个路由器在转发之前会将TTL减一，一旦发现TTL为0，路由器就会返回错误报告，控制数据包在网络中的生存时间，可以防止路由死循环
<img width="626" alt="image" src="https://user-images.githubusercontent.com/39154923/137114270-36d3f732-10c4-49fc-89ec-ddd64b28fcc6.png">

- 协议：占8位，表明封装的数据使用了什么协议
<img width="935" alt="image" src="https://user-images.githubusercontent.com/39154923/136950247-149fad02-ec13-497a-8878-7f3c52919c8b.png">

- 首部检验和：检查首部是否有错误

### 协议以及所在的层
<img width="746" alt="image" src="https://user-images.githubusercontent.com/39154923/137065562-fc223eb9-7a99-4801-9985-38b98c97f30a.png">


### ping 命令
- ping /? 查看`ping`的用法
- ping ip -l 数据包大小
- ping ip -f 不允许网络层分片
- ping ip -i TTL 设置存活时间