网络层

作者: 张_何 | 来源:发表于2021-08-04 10:33 被阅读0次

    网络层

    • 网络层数据包(IP 数据包,Packet) 由首部、数据 2 部分组成, 数据部分很多时候是由传输层传递下来的数据段(Segment)

    网络层首部

    版本、首部长度、区分服务
    • 版本(Version)
    • 占 4 位
    • 0b0100: IPv4
    • 0b0110: IPv6
    • 首部长度
    • 占 4 位,二进制乘以 4 才是最终长度
    • 0b0101: 20 (最小值)
    • 0b1111: 60 (最大值)
    • 区分服务(Differentiated Services Field)
    • 占 8 位
    • 可以用于提高网络的服务质量(QoS,Quality of Service)
    总长度
    • 总长度(Total Length)
    • 占 16 位
    • 首部 + 数据的长度之和,最大值是 65535
    • 由于帧的数据不能超过 1500 字节,所以过大的 IP 数据包,需要分成片(fragments)传输给数据链路层, 每一片都有自己的网络首部(IP首部)
    标识、标志
    • 标识(Identification)
    • 占 16 位
    • 数据包的 ID,当数据包过大进行分片时,同一个数据包的所有片的标识都是一样的
    • 有一个计数器专门管理数据包的 ID,每发出一个数据包,ID 就加 1
    • 标志
    • 占 3 位
    • 第1 位(Reserved):保留
    • 第2 位(Don't Fragment): 1 代表不允许分片,0 代表允许分片
    • 第3 位(More Fragment): 1 代表不是最后一片,0 代表是最后一片
    片偏移
    • 片偏移(Fragment Offset)
    • 占 13 位
    • 片偏移乘以 8:字节偏移
    • 每一片的长度一定是 8 的整数倍
    • ping ke.qq.com -| 4000
    生存时间
    • 生存时间(Time To Live, TTL)
    • 占 8 位
    • 每个路由器在转发之前会将 TTL 减 1,一旦发现 TTL 减为 0,路由器会返回错误报告
    • 观察使用ping命令后的 TTL,能够推测出对方的操作系统、中间经过了多少个路由器
    • 不同的操作系统默认的 TTL 是不一样的


    • TTL 的作用,假设有两个路由器 A和 B, A 的默认路由是 B,B的默认路由又是 A, 如果一个数据包到 A,A不知道发给谁,那么就会给 B,B 也不知道发给谁,又会发给 A,这样就会一直循环占用着资源,TTL 就可以解决这个问题

    协议、首部校验和
    • 协议: 占 8 位,表明所有封装的数据是使用了什么协议
    • 首部校验和(Header Checksum): 用于检查首部是否有错误

    ping 的几个用法

    • ping /? : 查看 ping 的用法
    • ping ip 地址 -| 数据包大小 : 发送指定大小的数据包
    • ping ip 地址 -f : 不允许网络分层
    • ping ip 地址 -i TTL :设置 TTL 的值
    • 通过 tracert、pathping 命令,可以跟踪数据包经过哪些路由器

    相关文章

      网友评论

          本文标题:网络层

          本文链接:https://www.haomeiwen.com/subject/xtijvltx.html