29 lines
1.9 KiB
Markdown
29 lines
1.9 KiB
Markdown
|
### 网络层数据包(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 设置存活时间
|