网络协议(六)-网络层

以下内容来自于小码哥"网络协议从入门到底层原理"

网络层(Network)
  • 网络层数据包(IP数据包, Packet)由首部, 数据2部分组成
    -- 数据: 一般是由传输层传递下来的数据段(Segment)
    image.png
网络层首部-版本, 首部长度, 区分服务
  • 版本(Version)
    -- 占4
    -- 0b0100: IPv4
    -- 0b0110: IPv6

  • 首部长度(Header Length)
    -- 占4位, 二进制乘以4才是最终长度
    -- 0b0101: 20(最小值)
    -- 0b1111: 60(最小值)

  • 区分服务(Differentiated Services Field)
    -- 占8
    -- 可以提高网络的服务质量

网络层首部- 总长度
  • 总长度(Total Length)
    -- 占16
    -- 首部 + 数据的长度之和, 最大值是65535

  • 由于帧的数据不能超过1500字节, 所以过大的IP数据包, 需要分成片(fragments)传输给数据链路层
    -- 每一个片都有自己的网络层首部(IP首部)

网络层首部- 标识, 标志
  • 标识(Identification)
    -- 占16
    -- 首部 + 数据的长度之和, 最大值是65535
    image.png
  • 由于帧的数据不能超过1500字节, 所以过大的IP数据包, 需要分成片(fragments)传输给数据链路层
  • 每一片都有自己的网络层首部(IP首部)
网络层首部 - 标识, 标志
  • 标识(Identification)

  • 16

  • 数据包的ID, 当数据包过大进行分片时, 同一个数据包的所有片的标识都是一样的

  • 有一个计数器专门管理数据包的ID, 每发出一个数据包, ID就加1

  • 标志(flags)
    -- 占3
    -- 第1(Reserved Bit): 保留
    -- 第2(Don't Fragment)DF: 1代表不允许分片, 0代表允许分片
    -- 第3(More Fragments)MF: 1代表不是最后一片, 0代表是最后一片

ping的几个用法
  • ping /?
    -- 查看ping的用法

  • ping ip地址 -l 数据包大小
    -- 发送指定大小的数据包

  • ping ip地址 -f
    -- 不允许网络层分片

  • ping ip地址 -I TTL
    -- 设置TTL的值

  • 通过tracert, pathping命令, 可以跟踪数据包经过了哪些路由器

网络层首部 - 片偏移
  • 片偏移(Fragment Offset)
    -- 占13
    -- 片偏移乘以8: 字节
    -- 每一片的长度一定是8的整数倍

    image.png

  • ping ke.qq.com -l 4000

    image.png

网络层首部 - 协议, 首部校验和
  • 协议(Protocol)
    -- 占8
    -- 表明所封装的数据是使用了什么协议(传输层用了什么协议)
    image.png
  • 首部检验和(Header Checksum)
    -- 用于检查首部是否有错误
网络层首部-生存时间
  • 生存时间(Time To Live)
    -- 占8
    -- 每个路由器在转发之前会将TTL1, 一旦发现TTL减为0, 路由器会返回错误报告
    -- 观察使用ping命令后的TTL, 能够推测出对方的操作系统, 中间经过了多少个路由器
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。