互联网架构
互联网架构
1969,在ARPAnet上第一个数据包从UCLA发送到SRI
概念与需求
互联网架构:设计原则
对互联网的需求
- 尽力而为地将一个包从任意源传递给一个IP地址所指定的目的
- 通用化:不为具体目标
- 长久
- 安全
- 可用性与弹性
- 可管理:FCAPS(故障/配置/记账/性能/安全管理)
- 经济可行:网络设备昂贵,如何投资与盈利
- 社会需求:数字化、贸易、言论自由…
要素与原则
1. 共识
- 为了系统工作需要一致同意的:
- 数据组织为“包”,包头部格式
- 假设单一全局地址空间(但NAT打破该假设)
- 网络与网络之间:AS号、BGP
- 便于达成一致的
- 应用标识与网络标识之间:DNS
- 应用传输与网络传输之间:TCP
2. 接口
- 系统的基本模块,模块通过接口(interface)来定义
- 模块化方式:如何切分系统。分层,底层模块不依赖于上层模块。
- 典型的例子就是互联网的分层结构。AS也体现了一种模块化方式,网络内部自行管理,无需外界干预。
- 功能依赖关系:“最小化依赖”
- 什么是持久不变的:设置设计中的稳定点,系统围绕该点演进,系统更长寿
核心原则
- 数据报
- 共识:数据组织为“包”,包头部格式
- 模块化方式:网路提供基本传输服务(尽力而为)
- 功能依赖:只需指定IP地址即可通信
- 端到端:在端实现应用功能,而不是在网络中
- 网络中立性:网络平等对待所有包
- 命运共享:流状态与流的端节点在一起,状态与节点一起损失是可接受的
- 模块化方式:路由器指根据包头做转发决策
- 功能依赖:对网络服务功能和性能的假设最小化
- 可靠性依赖端节点来保证
- TCP基于字节
架构与功能的关系
表达力(Expressive Power)
emmm….有点抽象(先跳过)
逐跳行为(Per-Hop Behaviors)
- 表达力影响功能,不决定功能
网络功能由一系列逐跳行为构成,应用关心的是由一条路径上路由器的PHB所得到的端到端结果
- 路由器基本的PHB:转发包,或丢弃包
- 架构期望的PHB:转发,最终传递给目的
- 架构并不关心如何路由,即经过哪一条路径
- 架构期望之外的PHB:防火墙、NAT
This post is licensed under CC BY 4.0 by the author.