网络层(NetWork)
- 网络层数据包(IP数据包,Packet)由首部,数据两部分组成
- 很多时候是由传输层传递下来的数据段
网络层首部
版本(version)
- 占四位
- 0b0100:IPv4
- 0b0110:IPv6
首部长度(Header Length)
- 占四位 二进制乘以四才是最终长度
- 0b0101:20字节(最小值)
- 0b1111:60字节(最大值)
区分服务
- 占八位
- 可以用于提高网络的服务质量(Qos)
- 可在操作系统中配置
总长度
- 占16位
- 首部+数据的长度之和 最大值是65535
- 数据要传输给数据链路层 然而数据链路层的帧的数据部分不能超过1500字节 所以过大的IP数据包 需要分成片(fragments)传输给数据链路层
- 每一片 都有自己的网络层首部(IP首部)
标识,标志
标识
- 占16位
- 数据包的ID 当数据包过大进行分片时,同一个数据包的所有片的标识都是一样的
- 有一个计数器专门管理数据包的ID 每发出一个数据包 ID+1
标志
- 占三位
- 第一位(Reserved Bit): 保留
- 第二位 (Don’t fragment): 1代表不允许分片 0代表允许分片
- 第三位(More Fragments): 1代表不是最后一片 0代表是最后一片
片偏移(Fragment Offset)
- 占13位
- 片偏移乘以8:字节偏移 代表这一片是整个IP数据段的第几个字节
协议
- 占8位
- 表明封装的数据使用了什么协议
首部检验和
将首部进行计算用于检查首部是否有错误
生存时间(Time To Live)
- 占八位
- 每个路由器在转发之前会将TTL减一 一旦发现TTL减为零 路由器会返回错误报告
- 作用:
- 路由表设置默认路由 如果路由表有问题 会一直占用网络资源 TTL可以防止路由死循环
- 观察使用ping 命令后的TTL 能够推测对方的操作系统中间经过了多少个路由器
ping的用法
- ping/?
- 查看ping的用法
- ping ip地址数据包大小
- 发送指定大小的数据包
- ping ip 地址 -f
- 不允许网络层分片
- ping ip -ip地址 -i TTL
- 设置TTL的值
- 通过 tracert、 pathping (mac 使用traceroute )命令,可以跟踪数据包经过了哪些路由器