「计算机网络笔记」第五章 网络层

  1. 「计算机网络笔记」第一章 概述
  2. 「计算机网络笔记」第二章 物理层
  3. 「计算机网络笔记」第三章 网络层
  4. 「计算机网络笔记」第四章 介质访问控制子层
  5. 「计算机网络笔记」第五章 网络层
  6. 「计算机网络笔记」第六章 传输层
  7. 「计算机网络笔记」第七章 应用层

5.1 网络层概述

功能

源端产生的数据包/数据分组,一路送达目的机

  • 信息封装
  • 目的机的识别
  • 找到路由(源机->目的机的路径)

被路由的协议

IP协议

  • IP地址:定位目的机
  • IP分组:信息的封装
  • IPv6协议:新一代IP协议

路由选择协议

找到源机和目的机之间的最优路径

  • 距离矢量路由选择协议
  • 链路状态路由选择协议

源机和目的机之间的网络

数据报子网 虚电路子网
电路 不需要建立 一定要建立
分组 包含完整的源地址和目的地址信息独立寻径 包含很短的一个标号
路由 不需要保留任何连接状态 都要保留连接状态
路由器
失效影响
基本没有影响 连接/数据传输中断
服务质量
拥塞控制
很难实现 容易实现

5.2 IP地址

  • 提供一种尽力而为best-effort地把数据从源端传输到接收方的方法
  • 为路由提供路由所需要的信息
  • IP协议 = 被路由协议

IP地址

  • 32位二进制位

  • 点分十进制

    • 32 => 4×8

    • 每个8位组,二进制 => 十进制,0~255

Example:IP地址体现了层次性
[.... ....] Internet
[130.1.0.0] 网络
[130.1.1.0] 子网1
[130.1.1.1] 主机

IP地址的两层结构

  • 网络部分:0~15位
  • 主机部分:16~31位

A类地址

0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • 1字节标识网络地址,2、3、4字节标识主机地址
  • 第1个字节 => [0,127]
  • 每个A类地址/A类网络,容纳 224-2 台主机
    • 减去的2:用于广播地址和网络地址

B类地址

10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • 1、2字节标识网络地址,3、4字节标识主机地址
  • 第1个字节 => [128,191]
  • 每个B类地址/B类网络,容纳 216-2 台主机

C类地址

110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • 1、2、3字节标识网络地址,4字节标识主机地址
  • 第1个字节 => [192,223]
  • 每个C类地址/C类网络,容纳 28-2 台主机

保留的IP地址

不能分配给某个接口/某个主机使用

  • D类:1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • E类:11110xxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • 网络地址:xxxxxxxx.xxxxxxxx.00000000.00000000

  • 广播地址:xxxxxxxx.xxxxxxxx.11111111.11111111

  • 0.0.0.0

    • 表示:这个主机、这个网络
    • 在路由表中,默认路由的目的地址
  • 255.255.255.255

    • 泛洪广播地址
  • 127.0.0.0

    • 环回地址Lookback Network
    • 127.0.0.1 => localhost
  • 169.254.0.0

    • 非正常地址
    • 不能对外正常通信

5.3 子网规划

将大网络分割成小网络

主路由器

  • 边界路由器

  • 负责和外部联系

  • 了解内部网络结构的机制:子网掩码

子网掩码

  • 决定分组往哪个子网转发

  • 点分十进制表示 => 连续的1(网络位) + 连续的0(主机位)

  • 按位操作

    • 目的IP地址 AND 子网掩码 = 目的网络地址
    • 按位操作后,主机位全为0
  • A、B、C类的缺省

A类 B类 C类
点分十进制表示 255.0.0.0 255.255.0.0 255.255.255.0
网络前缀表示 /8 /16 /24

子网位

  • 从IP地址的主机部分借位

    • 从高位开始借
    • 至少保留2位
  • Example:192.168.1.0/24,主机域借2位作为子网位

    子网的网络地址:

    192.168.1.00 000000 => 192.168.1.0/26

    192.168.1.01 000000 => 192.168.1.64/26

    192.168.1.10 000000 => 192.168.1.128/26

    192.168.1.11 000000 => 192.168.1.192/26

    • 第4个子网的网络地址:192.168.1.10 000000 => 192.168.1.64
    • 第4个子网的广播地址:192.168.1.10 111111 => 192.168.1.127

5.4 IP寻址

根据目的IP地址,找到目的网络

路由器

  • 执行IP寻址的主要设备

  • 1个路由器Router = 1跳Hop

  • 收到一个分组

    • 打开分组

      • 提取到目的IP地址
    • 确定网络,查找路由表

      • 目的IP地址和子网掩码按位与运算,得到目的网络

      • 用目的网络查找路由表

    • 重新封装,转发next hop

  • 到达最后一个网络目的网络,MAC寻址(交换机执行)

不同 MAC地址 IP地址
网络范围使用 小型网络 互联网
依赖的地址结构 平面地址 结构化地址
所处OSI模型的层 数据链路层 网络层
地址的格式 十六进制 点分十进制

5.5 IP分组

  • IP分组包含12个基本的字段和选项字段
  • IP分组分为:头部、数据

报头长度

  • 大小:4bit
  • 单位:4Byte
  • 0101 ~ 1111

数据报总长

  • 大小:16bit
  • 单位:Byte

生存时间 TTL

  • 大小:8bit
  • 单位:hop
  • 每经过一个路由器,TTL-1
  • 当TTL-1=0时,路由器丢弃该分组,向源发回一个超时消息
  • 防止分组在网络无限循环

用户协议

  • 大小:8bit
  • 指明传输层采用的协议
    • UDP:17
    • TCP:6

目的IP地址

  • 大小:32bit

5.6 IPv6概述

IPv4存在问题

  • 地址数
  • 端到端模式收到破坏
    • 地址数匮乏,使用了私人地址
    • 私人地址不具有唯一性,和互联网通讯,必须进行转换
    • NAT转换器
  • 配置复杂
  • 安全问题
  • 路由表膨胀
    • 增加了每一个分组的延迟
  • QoS和性能问题

IPv6的目标

  • 支持几十亿台主机
  • 缩减路由表的规模
  • 简化协议,路由器处理分组更快
  • 更好的安全性
  • ... ...

5.7 IPv6地址

基本概念

  • 局域网段:LAN段,最小单位交换机一个接口下的这一条链路
  • 链路:路由器一个接口下的,若干个局域网段构成的
  • 邻接点:一条链路上的两台主机
IPv6基本概念

冒分十六进制

  • IPv6地址:128位(v4仅有32位)
  • 128 => 8组 × 16位
  • 简化规则
    • 忽略前导0
    • 省略全0 => 双冒号,一个地址里最多只能出现一次双冒号

IPv6地址分类

  • 单播地址Unicast Address
    • 一对一通信
  • 组播地址Multicast Address
    • 特定组内通信
  • 任播地址Anycast Address
    • 特定组内,任意一台计算机

特殊地址

  • 未指定
    • 二进制前缀:000...0(128bit)
    • IPv6:::/128
    • 一台设备未正式的获得地址时,以此代替
    • 路由表中目的网络,表示默认路由
  • 环回地址
    • 二进制前缀:000...1(128bit)
    • IPv6:::1/128
    • 类似IPv4中的127.0.0.1
  • 组播
    • 二进制前缀:11111111
    • IPv6:FF00::/8
  • 链路本地地址
    • 二进制前缀:1111111010
    • IPv6:FE80::/10
    • 属于单播地址
  • 网点本地地址
    • 二进制前缀:1111111111
    • IPv6:FEC0::/10

链路本地地址

属于单播地址

  • 用在单一的链路上
  • 如果一个分组的目的地址||源地址是链路本地地址,分组不回转发到其他链路
  • IPv6设备启动时,首先生成一个链路本地地址,此时就可以和链路上的其他节点通信
  • FE80:0:0:0 + EUI64位地址(合128bit)
  • EUI64地址
    • 将MAC地址转化成二进制的48位
    • 在前24位和后24位中间加上16位11111111 11111110
    • 从高位起的第7位,0 => 1(U/L位:用于确定该地址是全局管理的还是本地管理的)

可聚合全球单播地址

3bit 13bit 8bit 24bit 16bit 64bit
001 TLA
顶级聚类地址
RES
保留位
NLA
次级聚类地址
SLA
站点级聚类地址
InterfaceID
  • SLA可用作子网规划
  • 如果主机可以和默认网关通讯,就可以从默认网关获取全球IPv6地址的前缀
  • 默认网关:和主机直接相连的路由器
  • 前缀 + InterfaceID => 全球单播地址

5.8 IPv6分组

IPv6的报头

  • 协议版本(4bit):0110 => IPv6

  • 流标记(20bit):为源端和目的端提供了建立伪连接的方式

  • 净荷长度(16bit):固定头之后的字节数

  • 下一个头Next Header(8位)

    • 指明当前头之后,扩展头的类型
    • 若当前头为最后一个头,则用于指明上层传输层指定的用户协议(与IPv4中相同)
  • 跳数限制Hop Limit:等同于IPv4中的TTL

与IPv4的不同

  • 删除校验和

    • 上层传输层和下层数据链路层都有自己的校验和
  • 删除分段/分片

    • 源端在一开始必须知道全部路径/网络的最小MTU

    • MTU:最大传输单元,Maximum Transmission Unit

    • PMTU算法

5.9 IPv6过渡技术

  • 双栈
  • 隧道
  • 地址转换

5.10 路由表

路由表的结构

  • 目的网络/子网掩码
  • 路径代价
  • 下一跳(网关)
  • 转出接口
  • ...

路由信息

直连路由 静态路由 动态路由
路由器学习感知 管理人员人工配置 路由选择协议
  • 直连路由

    • 路由器开启了接口,自动发现接口对应的子网,并记录到路由表
  • 静态路由

    • 常见的静态路由:缺省/默认路由
    • 默认路由
      • 避免错误丢包
      • 缩减路由表的规模
      • 减少路由器的运行负担
    • 优点
      • 适用小型网络
      • 安全,不会发送通告
      • 稳定,通过同一路径总是到达同一网络
      • 不需要CPU、RAM、带宽等开销
    • 缺点
      • 网络规模增大,配置复杂性增长
      • 人工更新维护繁琐
  • 动态路由(多数)

    • 路由选择协议动态地建立、更新和维护的路由
    • 适合大型网络
    • 不受网络规模的限制
    • 自动更新、维护路由信息
    • 量度路径最优
      • 跳数
      • 带宽
      • ...

5.11 距离矢量路由选择协议

Distance Vector

  • 常用于小型网络
  • 典型DV算法:路由选择信息协议
    • RIPRouteing Information Protocol
    • 早期互联网使用
  • 矢量/向量:一个有序数组,n维向量中存了n个数,有先后次序之分。

DV的工作原理

  • 每个路由器维护两个矢量,Di和Si

    • Di:该路由器到所有其他路由器的距离,{ di1,di2,... ... ,din}
    • Si:该路由器到所有其他路由器的下一跳,{ si1,si2,... ... ,sin}
    • di1:从节点i节点1的度量/代价
    • si1:从节点i节点1的最优路几个上的下一跳
    • n:网络中路由器的个数
  • 邻居路由器交换路由信息(矢量信息)

  • 每个路由器根据收到的路由信息,更新路由表

DV算法的特点

  • 优点
    • 简单
  • 缺点
    • 交换信息大
    • 路由信息传播缓慢,可能导致路径信息不一致
    • 不适合大型网络

5.12 路由选择信息协议 RIP

特点

  • 采用跳数作为Si量度
  • 当量度超过15跳,目的网络即作不可达
    • 解决路由环问题
    • 完全相信邻居路由器,导致的路由环/无穷计数问题
  • 30秒交换一次路由信息

5.14 链路状态路由选择

Link State Routing

主要思路

  • 发现
  • 设置
  • 构造
  • 发送
  • 计算

发现

  • 发现邻居节点,了解它们的网络地址
  • 路由器启动时,向每个邻居路由器发送Hello数据包

设置

  • 到每个邻居的成本度量
  • 常见度量:链路带宽(反比),延迟
  • 发送特别的Echo分组,另一端立即回送应答,通过测量往返时间RTT,得到延迟估计值

构造

  • 构造链路状态分组LSPLink State Packet

  • LSP分组

    • 发送方的标识ID of the sender
    • 序列号sequence number
      • 32bit的序列号,解决序列号回转问题
    • 年龄age
      • 每经过1秒,age-1 => age=0时,丢弃
      • 每隔很短的时间(通常大于age),新分组就会到来
    • 邻居列表list of neighbors
    • 度量delay to each neighbor
  • 周期性的构造

  • 特殊事件发生时构造

    • 线路/邻居down掉
    • 出现新的接口

发送

  • 这个分组发给所有其他的路由器
  • LSP分组的序列号随着新分组的产生,递增
  • 路由器记录下所有看见的LSP
  • 当新分组到达
    • 先放于保留区
    • 新分组(不存在记录中),则泛洪广播
    • 保留区的分组和新分组比较序列号
      • 相等 => 丢弃
      • 不相等 => 保留新的

计算

  • 分组分发完全,构造全网拓扑图
  • 基于完整的网络图,计算到每个目标的最短路径(如:最短路径算法)

LS算法特点

  • 优点
    • 路由器认识一致
    • LSP构造的图完全一致
    • 收敛快
    • 适合大型网络
  • 缺点
    • 路由器需要较大存储空间
    • 计算负担大

5.15 单区域OSPF

  • 开放的最短路径优先
  • Open Shortest Path First
  • 链路状态路由的典型实例

特点

  • 适用大型网络
  • 解决路由自环问题
  • 度量:108÷带宽
  • 收敛快

相关概念

  • RouterID:32位,自治系统内唯一,路由器的唯一标识
  • 协议号:89 => OSPF报文
  • TTL=1:OSPF通常只传给邻居路由器

OSPF分组的类型

OSPF数据包类型 描述
Hello 与邻居建立和维护邻居关系keep alive
数据库描述包DD 描述一个OSPF路由器的链路状态数据库的内容
链路状态请求LSR 请求相邻路由器,发送其链路状态数据库中的具体条目
链路状态更新LSU 向邻居路由器发送链路状态通告
链路状态确认LSAck 确认收到了邻居路由器的LSU
  • LSU的使用

    • 作为LSR的应答

    • 特殊事件发生时

      • 线路/邻居down掉
      • 出现新的接口
  • LSAck

    • 任何时候收到LSU都需要回发LSAck

建立全毗邻关系

  • 通过发送问候Hello包确认是否连接
  • 为了同步路由控制信息,利用数据库描述Database Description包相互发送路由摘要信息和版本信息
  • 通过DD和自己的数据库比对发现版本老旧,发送链路状态请求Link State Request包,请求完整的路由控制信息
  • 对面会回发链路状态更新Link State Update包,包含完整的路由状态信息
  • 最后发送链路状态确认Link State Acknowledgment包通知大家,本地已经接收到了路由状态信息

指定路由器

  • Designated Router
  • 在一个比较复杂的网络中,在同一个链路加入新的路由器,不需要在所有相邻的路由器之间都进行控制信息`的交换,而是指定一个DR,并以它作为中心交换路由信息

5.16 无类域间路由 CIDR

  • Classless Inter Domain Routing
  • 缓解地址枯竭的趋势(尤其是B类地址)
  • 缩减了路由表的开销
    • 可以进行路由聚合,形成超网SuperNet
    • 路由聚合和子网规划是相反的行为
  • 隔离了路由翻动

IP面临的问题

  • 分类造成地址的浪费
  • 路由表的膨胀
    • 路由表动辄几万条
    • 分组到达时,查找路由表的时间会增加 => 通信的端到端延迟

基本思想

  • 分配IP地址时,不再以A、B、C的类别分类,按照可变长地址块分配

举例:用户需要2000个IP地址

  • CIDR之前,只能分配一个B类地址
  • CIDR之后,分配一个x.x.x.x/21的块地址
    • 网络位:21位
    • 主机位:11位 => 211-2,2046个地址

IP地址的最长匹配前缀

  • 当一个分组到达路由器
  • 匹配到多个目标网络时,选取网络位最长的(子网掩码1最多的)

路由聚合

  • 要求直连路由地址连续
  • 子网的下一跳是相同的

举例:路由器RTA有4条直连路由,对应4个子网,形成连续的地址空间

  • 200.199.48.0/24 => x.x.001100 00.x
  • 200.199.49.0/24 => x.x.001100 01.x
  • 200.199.50.0/24 => x.x.001100 10.x
  • 200.199.51.0/24 => x.x.001100 11.x

第三段里的001100是不变的

=> 聚合结果:200.199.48.0/22(超网)

5.17 网络地址翻译 NAT

  • Net Address Translate
  • 私人地址和共有IP地址之间的转换
  • IP地址枯竭的快速修补方案

私人地址空间

  • 不可路由
  • 全球不唯一
地址类别 RFC 1918 Internal Address Range CIDR前缀
A 10.0.0.0 ~ 10.255.255.255 10.0.0.0/8
B 172.16.0.0 ~ 172.31.255.255 172.16.0.0/12
C 192.168.0.0 ~ 192.168.255.255 192.168.0.0/16

NAT转换器的工作原理

NAT的缺点

  • 影响部分协议和应用的同学
  • 增加了网络延时
  • NAT转换器可能成为网络的瓶颈

5.18 互联网控制消息协议 ICMP

Internet Control Message Protocol

  • 一般来说,ICMP消息仅发送给源机
  • ICMP消息不生成自己的差错报告
  • ICMP消息封装在IP分组中

主要功能

  • 确认IP包是否成功送达目标地址
  • 通知在发送过程当中IP包被丢弃的具体原因
  • 改善网络设置

ICMP的具体应用

  • Ping
    • 源机向目的站点发送ICMP回声请求报文
    • 目的站点接收到,必须向源机站点发回一个ICMP回声应答报文
    • 源机站点收到应答报文,且其中的任选数据和发出去的相同,则判断目的站点可达,否则为不可达
  • TraceRoute
  • 路径MTU(最大传输单元)

Ping的应用

  • 测试TCP/IP是否正常工作

    ping 127.0.0.1
    
  • 测试网络设备是否正常

    ping <本机的IP地址>
    
  • 检查对外连接的路由器

    ping <默认网关IP>
    
  • 检查与某台设备的畅通情况

    ping <设备的IP>
    

5.19 地址解析协议 ARP

Address Resolution Protocol

  • 运行在局域网的协议
  • 将目标机的IP地址映射到MAC地址上

工作原理

  • ARP借助ARP请求ARP响应,两种对应的包来确定MAC地址
  • ARP表缓存ARP的结果
  • 收到ARP请求,通过源机的IP地址和MAC地址的映射对,更新自己的ARP表
  • 免费ARP:每台机器启动时,广播自己的IP-MAC地址对
    • Source IP = Target IP
    • 如果收到应答,说明自己的IP已被使用

举例:主机A想要获得同局域网下的主机B的MAC地址

A通过广播发送一个ARP请求包

  • 请求包:包含请求通信的目标IP地址
  • 广播的包可以被同一个链路上所有的主机/路由器接收

主机B接收到广播的ARP请求包,并解析,发现包中的IP地址与自己的一致,则将自己的MAC地址封装到ARP响应中发回。

其余主机解析后,发现目标IP地址不一致,则

  • 不做应答
  • 用ARP请求中的源信息来更新ARP表

5.20 拥塞控制

  • Congestion

  • 当一个子网或子网的一部分出现太多分组的时候,网络的性能急剧下降。

  • 拥塞控制的措施

    • 开环:提前考虑
    • 闭环
  • 抑制分组生效时间慢,逐跳抑制可以快速缓解拥塞点压力

  • 载荷脱落 => 丢弃分组,根据应用场景选择不同的脱落策略

  • 随机早期检测可以防范于未然

5.20 流量整形

漏桶算法

  • 可以让一个不稳定的流,整为一个稳定的流
  • 无法突发
  • 桶满时,丢弃分组

令牌桶算法

  • 当一个分组要发送时,必须从桶中取出获取到一个令牌
  • 令牌桶可以累计令牌,允许有上限的突发
  • 桶满时,丢弃令牌
  • 有时候,可以在令牌桶后,再串接一个漏桶
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342