网络原理
网络层
网络层的定位
- 解决经过多段链路的主机间端到端数据传输问题,实现网络互联。
- 向上层提供无连接的、尽最大努力交付的数据报服务。
- 分组之间无关联,不进行编号。
- 分组可能出错、丢失、重复和失序,不保证时限。
- 该定位的好处是硬件简单造价低廉。
网络互联
- 三层中继设备路由器连接起来的才是网络互联。
- 二层中继设备连接起来只是扩大一个网络。
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 地址
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设备需要维持会话,以便返回数据报能找到内网主机。