Willson Chen

Stay Hungry, Stay Foolish.

OSI – 网络层

网络原理

网络层

网络层的定位

  • 解决经过多段链路的主机间端到端数据传输问题,实现网络互联。
  • 向上层提供无连接的、尽最大努力交付的数据报服务。
  • 分组之间无关联,不进行编号。
  • 分组可能出错、丢失、重复和失序,不保证时限。
  • 该定位的好处是硬件简单造价低廉。

网络互联

  • 三层中继设备路由器连接起来的才是网络互联。
  • 二层中继设备连接起来只是扩大一个网络。

ARP 协议

  • Address Resolution Protocol 地址解析协议
  • 在同个局域网内,根据已知 IP 地址获取 MAC 地址。
  • 源设备需要解析一个 IP 地址时发出广播桢。
  • 目的设备收到广播桢后应答单播桢,应答数据中包含目的设备的 MAC 地址。

STP 协议

  • Spanning Tree Protocal 生成树协议
  • 避免环路产生广播风暴。
  • 允许环路存在,因为可以提高网络可靠性。
  • 原理是,选举根桥,构造最小生成树,确保非根与根之间路径的唯一性和最优性。
  • 确定根桥和最小生成树指定端口后,剩余备用端口进行阻塞。

IP 地址

  • 32 位,分为网络号和主机号。
  • 分类
    • A 类 1.0.0.0-126.255.255.255,网络号 8 位,主机号 24 位。
    • B 类 128.0.0.0-191.255.255.255,网络号 16 位,主机号 16 位。
    • C 类 192.0.0.0-223.255.255.255,网络号 24 位,主机号 8 位。
    • D 类 224.0.0.0-239.255.255.255,多播地址
    • E 类 240.0.0.0-255.255.255.255,保留地址
    • 127.0.0.1 回环地址
  • 私有 IP 地址
    • A 类:10.0.0.0-10.255.255.255
    • B 类:172.16.0.0-172.31.255.255
    • C 类:192.168.0.0-192.168.255.255
    • 私有 IP 地址可以复用,极大避免了 IP 枯竭
  • 划分子网
    • 将主机号借用若干位作为子网号。
    • 子网掩码与 IP 地址进行位与运算,可以得到网络号。
    • 划分后对外仍然是一个网络。
  • CIDR 无类域间路由选择
    • 是 IP 地址分配和路由选择技术,解决 IP 地址浪费和路由表过大问题。
    • 不使用传统分类,通过网络前缀+主机号来构成 IP 地址。
    • 网络前缀表示,如 192.168.0.0/24 表示 24 位网络前缀。
    • 采用最长前缀匹配进行路由选择。

IPv4 数据报

  • 包含头部和数据
  • 头部包含固定长度 20 字节,和可变长度部分(一般不用)
  • 固定长度 20 字节中包含:
    • 0+4 位为版本号,IPv4 的值位 4(0100)
    • 4+4 位为 IP 头部长度,单位为 4 字节,最大值 15(1111)表示 60 字节
    • 8+8 位为服务类型,一般不用,值为 0
    • 16+16 位为总长度,单位为字节,不能超过 MTU
    • 32+16 位为标识,由计数器生成,用来识别那些分组属于同一个数据报
    • 48+3 位为标志,48为 MF(More Flag更多分片),49 为 DF(Dont Flag不分片)
    • 51+13 位为片偏移,单位为 8 字节,表示本分片在原数据报中的偏移
    • 64+8 位为 TTL,表示数据报在网络中的寿命,每经过一个路由器减1,为 0 将被丢弃
    • ping命令可查看 ttl
    • 72+8 位为协议,表示数据的上层协议
    • 80+16 位为首部校验和,校验头部数据,采用反码求和运算
    • 96+32 位为源 IP 地址
    • 128+32 位为目的 IP 地址

image

IPv6

  • IPv6 地址扩大到128 位。
  • 去除校验和,减少处理时间。
  • 去除可选字段,变成扩展首部。
  • 支持即插即用,不需要 DHCP 协议。
  • 只能主机分片,不支持路由器分片。

ICMP 协议

  • 互联网控制消息协议。
  • 用于在 IP 网络中传递控制消息,诊断网络连接问题、跟踪路由路径等。
  • ping 和 traceroute 命令采用 ICMP 协议。

路由器

  • 至少连接两个网络,才能起到转发作用。
  • 原理,根据路由表转发:
  • 路由表
    • 包含目的网络地址和下一跳地址。
    • 下一跳地址可能是接口或者是某个 IP。
    • 默认路由:路由表查找不到时转发默认路由。
  • 路由器不会转发私有 IP 地址的数据包,无论来源或者是目的地址。
  • 路由表更新机制,包含静态和动态,动态更新通过路由协议。

自治域

  • 一组由同一组织管理运行的路由器集合。
  • 内部采用相同的路由策略。
  • 是互联网系统中的独立区域。
  • 自治域内采用 IGP 内部网关协议。
  • 自治域间采用 EGP 外部网关协议。

路由协议

  • 用于让路由器之间相互学习使得到达目标网络路径最优的协议。

内部网关协议 IGP:

  • RIP,路由信息协议
    • 距离=跳数
    • 允许一条路径最多 15 跳,大于视为不可达。
    • 只选择最少跳数的路径,不考虑带宽时延。
    • 原理,仅和相邻路由器交换路由表,每隔 30 秒更新一次路由表。
    • 经过一段时间收敛,所有路由器都会包含自治域内网络的最短路径。
  • OSPF,开放式最短路径优先
    • 使用带宽决定路径成本。
    • 每个路由器维护自己的路由表,不交换路由表,只交换链路状态。
    • 链路发生变化时才通过泛洪向所有路由器发送信息。
    • 收敛速度非常快,小型网络在 5s 内。

外部网关协议 EGP:

  • BGP,边界网关协议
  • 用于在不同自治域间交换路由信息。

NAT

  • 网络地址转换,用于在公网和私网间转发数据包。
  • 分为静态 NAT 和动态 NAT。
  • 静态 NAT:公网IP与私网IP固定映射。
  • 动态 NAT:池化公网IP动态映射到私网IP。
  • 端口多路复用 PAT:一个公网IP对多个私网IP,使用端口作为索引。
  • 作用:
    • 减少占用公有 IP。
    • 隐藏内网主机,提高安全性。
  • 局限性:
    • 违反分层原则,网络层需要修改传输层的报头内容。
    • NAT设备需要维持会话,以便返回数据报能找到内网主机。