网络层

网络层(NetWork)

◼ 网络层数据包(IP数据包,Packet)由首部、数据2部分组成

数据:很多时候是由传输层传递下来的数据段(Segment)

网络层首部 - 版本、首部长度、区分服务

◼ 版本(Version)

  • 占4位
  • 0b0100:IPv4
  • 0b0110:IPv6

◼ 首部长度(Header Length)

  • 占4位,二进制乘以4才是最终长度

  • **0b0101:20(最小值)**5 * 4 = 20

  • **0b1111:60(最大值)**15 * 4 = 60 所以首部最长为60字节, 所以可变部分最多40字节

◼ 区分服务(Differentiated Services Field)

  • 占8位
  • 可以用于提高网络的服务质量(QoS,Quality of Service)

网络层首部 - 总长度

◼ 总长度(Total Length)

  • 占16位

  • 首部 + 数据的长度之和,最大值是65535

由于帧的数据不能超过1500字节,所以过大的IP数据包,需要分成片(fragments)传输给数据链路层

每一片都有自己的网络层首部(IP首部)

网络层首部 - 标识、标志

◼ 标识(Identification)

  • 占16位
  • 数据包的ID,当数据包过大进行分片时,同一个数据包的所有片的标识都是一样的
  • 有一个计数器专门管理数据包的ID,每发出一个数据包,ID就加1

◼ 标志(Flags)

  • 占3位
  • 第1位(Reserved Bit):保留
  • 第2位(Don’t Fragment):1代表不允许分片,0代表允许分片
  • 第3位(More Fragments):1代表不是最后一片,0代表是最后一片

ping - 几个用法

以下为Linux命令用法与Windows不同

ping -help

查看ping的用法

ping ip地址 -s 数据包大小

发送指定大小的数据包

ping ip地址 -M do

不允许网络层分片, 设置 DF(Don’t fragment)

ping xxx.com -s 4000 -M do

错误信息:

ping: local error: message too long, mtu=1500

ping ip地址 -t TTL

设置TTL的值

◼ 通过traceroute、tracepath命令,可以跟踪数据包经过了哪些路由器

网络层首部 - 片偏移

◼ 片偏移(Fragment Offset)

  • 占13位
  • 片偏移乘以8:字节偏移
  • 每一片的长度一定是8的整数倍

ping xxx.com -s 4000

网络层首部 - 生存时间

◼ 生存时间(Time to Live, TTL)

  • 占8位
  • 每个路由器在转发之前会将TTL减1, 一旦发现TTL减为0, 路由器会返回错误报告
  • 作用之一: 防止路由死循环
  • 观察使用ping命令后的TTL, 能够推测出对方的操作系统、中间经过了多少个路由

image-20210416133314351

网络层首部 - 协议、首部校验和

◼ 协议(Protocol)

  • 占8位
  • 表明所封装的数据是使用了什么协议

◼ 首部校验和(Header Checksum)

将首部数据根据一定的算法算出一个值填充到首部校验和位置

用于检查首部是否有错误

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值