计算机网络笔记 一.概述
计算机网络的起源
1954 年发明 transceiver, 终端到通讯线路到计算机的远程联机系统: 计算机网络的雏形
计算机网络的构建
直接连接: 硬件资源利用率低, 成本高, 线路利用率低
交换网: 先连接到交换机, 交换机再连接到硬件资源, 硬件资源和线路利用率高
交换机连交换机, 构成更复杂的网络
计算机网络的设计目标之一: 通过某种方式组建高效的网络系统, 提升计算机资源和线路的利用率.
计算机网络的定义
一系列计算机, 链路和网络设备的集合
- 物理上: 链路和网络设备将计算机连接起来, 确保拓扑上的连通性
- 功能上: 提供数据传输功能, 确保计算机之间能交换数据
实现:
- 信息服务
- 资源共享
通用性: 能在计算机上运行软件实现各种网络应用, 能传输多种类型数据
计算机网络的组成
- 硬件
- 计算机: 主机 Host, 包括用户终端和服务器
- 网络设备: 交换机, 路由器 (特殊的交换机)
- 链路: 连接节点的物理介质, 分为点对点链路和多路访问/共享链路
- 软件
- 操作系统: 对节点上的资源进行管理, 为软件提供运行环境, 包括计算机操作系统和网络操作系统 (Cisco, VRP)
- 协议: 定义了节点间的通信规则, 包括信息格式, 交互流程, 解释处理
计算机和网络设备统称节点.
计算机网络与互联网
一些独立的计算机网络互相连接形成 internet 互连网, 连接两个/多个计算机网络的节点称为路由器.
互连网经过网络嵌套可以形成任意规模的互连网, 将任意规模的互连网称为 networks 网络.
Internet 因特网/互联网是世界上最大的计算机网络. 是的它和互连网是靠大小写区分的, 翻译成中文靠同音字区分还真是信达雅啊.
概述
国际 Internet 发展史
四阶段: 原型验证 ARPANET, 扩展性验证 NSFNET, 商业化转型商业化的 Internet, 未来 Internet
不是我说这个真的要记吗.
中国 Internet 发展史
IPv6 发展史
IPv4 理论空间 2^32, 地址危机, 2011 年 IANA 宣布用完, 遂改用 IPv6, 2^128 位.
网络体系结构
目标是构建一个通用的, 高效的, 健壮的, 能够适应网络技术发展和应用需求变化的网络. 网络体系结构将为我们指导网络的设计, 降低网络构建的复杂度.
计算机网络=硬件+软件 (操作系统, 协议)
网络功能依赖于具体的协议来实现, 复杂的网络功能需要多个协议来实现, 网络体系结构定义了这些协议 (功能) 的集合和这些协议 (功能) 之间的组织结构.
目前, 大部分的计算机网络 (包括 Internet), 都使用分层的网络体系结构.
分层与协议
网络的总体设计: 层和协议的集合

在网络体系结构中, 采用分层的思想对网络构建问题进行分解, 分层.
每一层都建立在下一层的基础之上, 为上一层提供服务. 对于每一层, 在网络体系结构中都可以定义相应的协议实现该层所需的服务.
层和协议 (功能) 的集合称为网络体系结构, 层表示了网络协议 (功能) 的组织结构.
协议体系:
- 网络协议: 通信各方关于如何通信的一种约定.
- 协议分层: 为了降低设计的复杂度, 增加网络的可扩展性, 具有概念化, 结构化等优点, 利于导入新业务.
分层的原则: 将相似的功能集中在同一层内, 必要时可以将层的功能再分成子块, 层数不宜过多, 以避免层间接口开销变大. 功能差别较大时应分层处理, 各层只对相邻的上下层定义接口.
协议栈: 一个特定的系统所使用的一组协议, 每一层一个或几个协议.
例: 主机 1 通过网络向主机 2 可靠地发送文件

分层的优点:
- 简化问题
- 各层之间独立
- 灵活
- 结构上可分割
- 易于实现和维护
- 能促进标准化工作
缺点: 有的功能会重复出现, 导致产生额外开销.
各层完成的主要功能
- 差错控制: 使相应层次对等方的通信更加可靠
- 流量控制
- 分段和重装: 发送端将要发送的数据块划分为更小的单位, 接收端将其还原
- 复用和分用: 发送端几个高层会话复用一条低层的连接, 在接收端再进行分用 (解复用)
- 连接建立和释放: 交换数据前先建立一条逻辑连接, 数据传送结束后释放连接
ISO-OSI 体系结构
| 主机 | 路由器 | 主机 |
|---|---|---|
| 应用进程 (应用层) | 应用层协议 | 应用进程 (应用层) |
| 表示层 | 表示层协议 | 表示层 |
| 会话层 | 会话层协议 | 会话层 |
| 传输层 | 传输层协议 | 传输层 |
| 网络层 | 路由器的网络层 | 网络层 |
| 数据链路层 | 路由器的数据链路层 | 数据链路层 |
| 物理层 | 路由器的物理层 | 物理层 |
应用层, 表示层, 会话层由网络软件实现, 传输层, 网络层, 数据链路层和物理层由操作系统实现.
Application
Presentation
Session
Transport
Network
Data link
Physical
-- All People Seem To Need Data Processing
Please Do Not Throw Sausage Pizza Away
物理层
主要功能:
- 激活物理连接以便传送数据 (准备好必要资源, 如缓存区等)
- 原始比特流传送, 分为同步传送/异步传送, 全双工传送/半双工传送
- 物理层连接去激活
相关协议:
- 接口物理规范
- 设备间信号的传送方式, 包括调制方式, 编码, 使用信号处理与传输线路的特性匹配
主要设备: 信号放大器, 集线器
传输介质: 电缆, 光纤, 无线电波
数据链路层
主要功能:
- 发送方成帧和接收方帧定界
- 处理帧破坏, 丢失和重复所出现的问题
- 流量控制, 避免接收方被快速发送方淹没
- 广播式网络中共享信道的访问控制 (广播式网络: 所有节点通过一条共享链路连接的网络)
相关协议:
- 高级数据链路控制规程 HLDCP
- 点对点协议 PPP
- CSMA/CD
- CSMA/CA
主要设备: 网桥, (L2) 交换机, 无线接入点
数据链路层的数据传输单元称为帧.
网络层
主要功能:
- 网络互连: 处理不同网络互连中存在的问题
- 路由: 根据数据目的地址, 确定到目的网络的「最佳」路径
- 拥塞控制: 网络中出现过多分组如何处理
主要协议:
- ATM: 发送数据之前需要在发送主机和接收主机之间建立连接, 数据单元为固定长度的信元, 信元中携带连接标识, 沿建立好的连接投递
- IP: 发送数据之前不需要建立连接, 数据单元称为分组, 大小可变, 分组中携带目标主机地址, 可沿不同路径到达目的主机
主要设备: 路由器/L3 交换机
传输层
主要功能:
- 向上层提供不同类型的传输服务
- 端到端, 在两个端点的主机上运行, 而非在中间路由器上运行. 注意, 物理层, 数据链路层和网络层是在网络中路由器上实现的
- 端到端流量控制
两种类型的传输层服务:
- 面向连接: 在数据传输开始之前, 通过连接建立过程在两个端点之间协商参数, 如流量控制参数, 最大传输单元等
- 无连接: 没有连接建立过程, 直接发送数据
网络中处理传输层及传输层以上协议数据的设备通称为网关 (Gateway)
会话层, 表示层和应用层
会话层:
- 允许不同主机上的用户之间建立会话
- 会话通常是指各种服务, 包括对话控制, 记录该由哪一方来传输数据, 令牌管理, 禁止双方同时执行同一个关键操作, 以及同步功能
表示层:
- 控制数据格式, 例如文本, 视频, 音频或者图像, 确保来自发送主机的数据能够被接收主机理解
- 数据加密和压缩相关
应用层: 定义了满足各种应用需求的协议
Internet 体系结构 (TCP/IP 结构)
基于 TCP/IP 参考模型
应用层: FTP Telnet HTTP
传输层: TCP UDP
互联网层: IP
主机到网络层 (网络接口层): Ethernet, Packet Radio, Point-to-Point
TCP/IP 协议栈

主机到网络层 (网络接口层)
主机通过某个协议连接到网络上, 以便将分组发送到网络上. TCP/IP 模型实际没有定义该层的具体协议, 它关注的是该层之上的内容.
在 Internet 中通常将一个广播域称为一条链路, 与一般 OSI 参考模型中的链路 (一对一) 不同.
在广播域内, 所有主机都能接收到目的地址为广播域地址的帧.
Internet 中数据传输的一跳 (One Hop) 指跨越一个广播域.
互联网层
功能上对应 OSI 参考模型的网络层, 主要是 IP 协议, 因此也称 IP 层.
它的任务是将分组投递到最终的目的地, 提供的是一种无连接的不可靠传输.
无连接指的是不建立端对端的专用路径, 每个数据包分开发送, 不可靠就是不可靠. 不可靠性由上层协议如 TCP, 应用层协议等弥补.
IP 的这种尽力服务 (Best Effort) 模型保证了 Internet 的可扩展性, 复杂的网络功能由用户终端设备实现, 网络只负责分组的投递.
传输层
对应 OSI 参考模型的传输层, 定义了两个协议:
- 传输控制协议 TCP (Transmission Control Protocol): 提供面向连接的可靠的传输服务
- 用户数据协议 UDP (User Datagram Protocol): 提供无连接的不可靠传输服务
应用层
包含所有高层协议, 无 ISO 模型中的会话层和表示层
- 域名系统 DNS, 域名对应 IP 地址
- HTTP 协议, www 应用
- FTP 协议, 文件传输应用
- Telnet 协议, 远程登录应用
- SMTP 协议, 发送电子邮件
应用层协议与应用层的关系: 应用层不仅需要实现应用层协议, 还要为用户提供操作界面等功能.

关键的网络设备:
- L2 交换机: 网络内设备互连
- 路由器 (L3 交换机): 不同网络互连

主机 1 向主机 2 发送数据

网络中数据处理流程

OSI 与 TCP/IP 模型的比较
相同点:
- 都基于独立的协议栈概念
- 都有功能相似的应用层, 传输层, 网络层
不同点:
- OSI 模型中严格定义了服务, 接口, 协议, 但 TCP/IP 模型中没有严格区分服务, 接口与协议.
- OSI 模型支持非连接和面向连接的网络层通信, 但在传输层只支持面向连接的通信; TCP/IP模型只支持非连接的网络层通信, 但在传输层有支持非连接和面向连接的两种协议可供用户选择.
- TCP/IP 模型中不区分, 甚至不提起物理层和数据链路层.
网络标准化
国际电信联盟 ITU
International Telecommunication Union
国际标准化组织 ISO
International Standards Organization, 制定了 OSI 标准
电气和电子工程师协会 IEEE
Institute of Electrical and Electronics Engineers
Internet 社区
- Internet 体系结构委员会 IAB (Internet Architecture Board): 负责定义整个 Internet 体系结构, 为 IETF 提供指导和主要方向
- Internet 工程任务组 IETF(Internet Engineering Task Force): Internet 协议工程化和开发力量
- Internet 工程指导组 IESG (Internet Engineering Steering Group): 负责 IETF 活动的技术管理和 Internet 标准化过程
与 ITU, ISO, IEEE 等组织的标准不同, Internet 社区的协议是开放的.
第三代合作伙伴计划 3GPP
说真的, 我感觉要背这个真的很弱智.
网络性能度量
度量单位
网络容量 (速率) 单位: 1kbps=1000bps,1Mbps=1000kbps,1Gbps=1000Mbps, 1Tbps=1000Gbps
数据量 (存储容量) 单位: 1kB=2^10B, 1MB=2^10KB, 1GB=2^10M, 1TB=2^10G
k 代表十进制计数 1000 (常用于存储器制造商), K 代表二进制计数 1024 (常用于操作系统和软件中), b 代表 bit, B 代表 Byte, QB 代表想出这种东西的人应该枪毙.
速率和带宽
速率即数据率 data rate 或比特率 bit rate, 定义为一段时间内能传输的比特数, 常见单位是是 bps (b/s), kbps (kb/s), Mbps (Mb/s), Gbps (Gb/s) 等.
带宽有两种含义:
- 信号具有的频带宽度, 单位是 Hz (赫兹)
- 数字信道或者网络所能传送的「最大数据率」, 即信道或者网络的实际容量, 单位是 bps
二者的本质是相同的, 通信链路的「带宽」越宽, 其所能传输的「最高数据率」也越高. 在网络性能度量时, 带宽和速率常常互相通用, 不加区分.
吞吐量
吞吐量指网络的可用带宽, 应用感受到的有用带宽, 与带宽相比用吞吐量度量网络性能更有意义.
原因: 协议栈每一层协议都有头标尾部等开销, 和协议实现机制的开销. 因此准确的吞吐量应当指明是哪个协议的吞吐量.
网络延迟 Latency/Delay包括:
- 发送延迟 Transmit: 与发送分组的大小和带宽有关
- 传播延迟 Propagation: 与距离和电磁波传播速度有关
- 处理延迟 Process: 节点对分组进行处理导致的延迟, 一般相对固定, 不予考虑
- 排队延迟 Queue: 中间路由器或交换机将分组转发出去之前将其存储的时间
延迟抖动 delay jitter: 由延迟的可变部分变化导致, 主要由中间路由器上的排队延迟的不确定性导致
对大文件传输, 带宽更重要; 对小消息 (HTTP, NFS), 延迟更重要.
往返时间 Round-Trip Time (RTT): 发送方发送完数据, 到发送方收到来自接收方确认所需时间.
RTT = A 到 B 的传播延迟+B 的处理和排队延迟+B 的发送延迟+B 到 A 的传播延迟, 注意 A 到 B 和 B 到 A 传播延迟相等.
延迟带宽乘积: 传播延迟×带宽.
单项延迟×带宽: 第一个比特到达接收端之前, 发送者能发送的比特数
RTT×带宽: 发送端在接收到接收端给出的确认之前能够发送的比特数
链路的延迟带宽积又称为以比特为单位的链路长度.