计算机网络概述
计算机网络基础
从计算到计算机网络
计算机网络是用通信设备将计算机通过通信线路连接起来,在计算机之间传输数据(信息)的系统。
- 计算:数据存储、处理的电子设备
- 网络:数据(信息)共享的系统
- 核心功能:计算资源及数据的共享
典型应用:文件传输、电子邮件、网络新闻、即时通信、信息检索、导航定位、电子商务、网络教育等。
计算机网络的组成要素
| 要素 | 功能 | 典型设备/技术 |
|---|---|---|
| 通信设备 | 负责转发数据 | 网络接口卡(NIC)、调制解调器、中继器、交换机、路由器 |
| 通信线路 | 计算机与设备/计算机之间的连接 | 有线(双绞线、光纤)或无线(无线电波) |
| 通信协议 | 数据交换的规则、标准或约定 | TCP/IP、IEEE 802.3(以太网)、IEEE 802.11(WiFi) |
互联网
定义
互联网(Internet) 特指全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,采用 TCP/IP 协议族 作为通信规则,前身是美国的 ARPANET。
注:
- internet(互连网):通用名词,泛指多个计算机网络互连而成的网络(可使用任何协议)
- Internet(互联网/因特网):专用名词,特指遵循TCP/IP标准的全球互联网
互联网的发展
| 阶段 | 时间 | 特征 | 结构 |
|---|---|---|---|
| 第一阶段 | 1969-1983 | 从ARPANET到互联网 | 单个网络 |
| 第二阶段 | 1983-1990s | 三级结构互联网 | 树结构 |
| 第三阶段 | 1990s-至今 | 多层次ISP结构 | 在树结构的基础上,连接不同节点 |
互联网的组成
- 边缘部分(端系统/主机):个人电脑、智能手机、服务器、网络摄像头
- 核心部分(路由器/网络)
端系统通信方式
| 方式 | 英文 | 特征 | 应用场景 |
|---|---|---|---|
| 客户/服务器 | C/S (Client/Server) | 服务请求方/服务提供方明确区分,服务器被动等待 | Web浏览、邮件服务 |
| 对等连接 | P2P (Peer-to-Peer) | 不区分服务请求方和提供方,每个主机既是客户又是服务器 | 文件共享、区块链 |
Socket API 编程接口
核心原语:
| 原语 | 语义 |
|---|---|
SOCKET | 创建新的通信端点 |
BIND | 关联本地地址与套接字 |
LISTEN | 待命接收连接请求(阻塞等待) |
CONNECT | 主动向服务器发起连接 |
ACCEPT | 被动建立与客户端的连接 |
SEND | 发送数据至对端 |
RECEIVE | 接收对端数据 |
CLOSE | 关闭连接,释放资源 |
客户端流程:
socket() → getaddrinfo() → connect() [阻塞] → send() → recv() [阻塞] → close()
服务器端流程:
socket() → getaddrinfo() → bind() → listen() → accept() [阻塞] → recv() → send() → close()
接入网
定义:接入网(Access Network)是从用户端系统到互联网中第一个路由器(边缘路由器)之间的网络。
| 接入技术 | 介质 | 典型速率 | 应用场景 |
|---|---|---|---|
| DSL | 电话线 | 下行<24Mbps,上行<2.5Mbps | 家庭宽带 |
| Cable | 同轴电缆 | 下行30Mbps,上行2Mbps | 家庭宽带(HFC) |
| 以太网 | 双绞线/光纤 | 10Mbps-10Gbps | 企业、校园 |
| WiFi (WLAN) | 无线 | 11-450Mbps | 建筑物内部 |
| 蜂窝网络(3G/4G/LTE) | 无线 | 1-10Mbps | 广域无线接入 |
核心网与分组交换
核心功能:由大量网络和路由器组成,为边缘部分提供连通性和交换服务。
三种交换技术对比:
| 特性 | 电路交换 | 报文1交换 | 分组2交换 |
|---|---|---|---|
| 建立连接 | 需要(专用物理通路) | 不需要 | 不需要 |
| 传输单位 | 比特流直达 | 整个报文 | 分组(Packet) |
| 存储转发 | 否 | 是 | 是 |
| 时延 | 小(建立连接后) | 大(几分钟到几小时) | 较小 |
| 线路利用率 | 低(独占) | 高 | 高(统计复用) |
| 适用场景 | 连续大量数据传输 | 早期电报 | 互联网(突发数据) |
分组交换的关键机制:
- 发送端:报文 → 划分数据段 → 添加首部 → 分组 → 发送
- 接收端:接收分组 → 去除首部 → 还原数据段 → 重组报文
路由器工作原理:
- 接收分组 → 放入缓存
- 查找转发表(Forwarding Table)→ 确定输出端口
- 转发分组 → 发送到下一跳
计算机网络体系结构
计算机网络的体系结构 (architecture) 是计算机网络的各层及其协议的集合。实现 (implementation) 是遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题。
分层思想
分层的目的:将庞大复杂的问题转化为若干较小的局部问题,降低复杂度,易于研究和处理。
分层的好处:
- 各层独立,灵活性好
- 结构上可分割,易于实现和维护
- 促进标准化工作
分层的缺点:
- 降低效率
- 功能可能在不同层次重复出现(额外开销)
两种国际标准
| 标准 | 性质 | 状态 |
|---|---|---|
| OSI/RM(开放系统互连参考模型) | 法律上的国际标准(de jure) | 理论完整但市场化失败 |
| TCP/IP | 事实上的国际标准(de facto) | 广泛应用,获得市场认可 |
OSI 失败原因:
- 缺乏商业驱动力
- 协议实现复杂,运行效率低
- 制定周期太长
- 层次划分不合理,功能重复
网络协议的组成要素
- 语法:数据与控制信息的结构或格式。
- 语义:需要发出何种控制信息,完成何种动作以及做出何种响应。
- 同步:事件实现顺序的详细说明。
五层协议体系结构
综合OSI和TCP/IP的优点,采用五层协议体系结构:
+---------------------+
| 5 Application | ← HTTP, FTP, SMTP, DNS
+---------------------+
| 4 Transport | ← TCP, UDP
+---------------------+
| 3 Network | ← IP, ICMP, OSPF, BGP
+---------------------+
| 2 Data Link | ← Ethernet, PPP
+---------------------+
| 1 Physical | ← raw bit stream
+---------------------+
ATNDP:
Always Think New, Dream Passionately.
A Tiny Ninja Does Parkour.
与OSI七层和TCP/IP四层的对应关系:
| OSI七层 | TCP/IP四层 | 五层结构 | 数据单位 |
|---|---|---|---|
| 应用层 | |||
| 表示层 | 应用层 | 应用层 | 报文(Message) |
| 会话层 | |||
| 传输层 | 传输层 | 传输层 | 报文段(Segment) |
| 网络层 | 网际层 | 网络层 | 数据报/分组(Datagram/Packet) |
| 数据链路层 | 网络接口层 | 数据链路层 | 帧(Frame) |
| 物理层 | 物理层 | 比特(Bit) |
数据封装与解封装过程
发送端(自上而下封装):
应用层数据
↓ + 应用层首部 = 应用层PDU
传输层
↓ + 传输层首部 = 报文段
网络层
↓ + 网络层首部 = IP数据报/分组
数据链路层
↓ + 链路层首部和尾部 = 帧
物理层
↓ 比特流传输(可能会封装一些物理层的控制信息)
物理媒体
接收端(自下而上解封装):
比特流
↓ 去除物理层信号
数据链路层
↓ 去除首尾部,提取数据部分
网络层
↓ 去除首部,提取数据部分
传输层
↓ 去除首部,提取数据部分
应用层
↓ 去除首部,交给应用进程
注:
- 路由器在转发分组时最高只用到网络层而没有使用传输层和应用层。
- 在 TCP/IP 体系结构中,现有的一些应用已经可以直接使用更底层了。如直接在 IP 层发送 ICMP 的 Ping, Traceroute;直接在网络接口层的 Wireshark
核心概念
| 概念 | 定义 |
|---|---|
| 实体(Entity) | 任何可发送或接收信息的硬件或软件进程 |
| 协议(Protocol) | 控制两个对等实体进行通信的规则的集合(水平的) |
| 服务(Service) | 下层为上层通过层间接口提供的功能(垂直的) |
| 服务访问点(SAP) | 同一系统相邻两层实体交互的地方(逻辑接口) |
| 服务原语 | 上层使用下层服务时使用的接口命令 |
| PDU(协议数据单元) | 对等层次之间传送的数据单位 |
| SDU(服务数据单元) | 层与层之间交换的数据单位 |
计算机网络的性能指标
主要性能指标
| 指标 | 定义 | 单位/说明 |
|---|---|---|
| 速率 | 数据的传送速率(数据率/比特率) | bit/s(bps),kbps, Mbps, Gbps |
| 带宽 | 频域带宽(频带宽度)或时域带宽(最高数据率) | Hz 或 bit/s |
| 利用率 | 信道利用率或网络利用率 | 0-1 |
注:
- 时域带宽与频域带宽之间有一定关系。
- 信道利用率和网络利用率是不同的。
- 对于静态网络,窗口大小就应该设置为 BDP,小于 BDP 时发送端的网络带宽无法被充分利用;大于 BDP 时,下层的缓冲区开始堆积,产生排队延迟。
计算公式
| 概念 | 符号 | 公式 | 说明 |
|---|---|---|---|
| 单向时延 | 数据从发送端到接收端的传输时间(不含发送时延) | ||
| 往返时间 | 从发出数据第一个比特到收到确认第一个比特的总时间 | ||
| 发送时延 | , 为帧长, 为链路速率 | 数据帧全部比特推入链路所需时间 | |
| 传播时延 | , 为信道长度, 为传播速率 | 信号在介质上传播的时间 | |
| 处理时延 | — | 结点处理数据的时间(如查表、校验) | |
| 排队时延 | — | 数据在队列中等待转发的时间 | |
| 时延带宽积 | 在途数据量,即已发出但未确认的最大比特数 | ||
| 吞吐量 | 平均每秒成功传输的有效数据量 | ||
| 信道利用率 | 链路被有效占用的时间比例 |
重要区分:
- 发送时延:发生在发送器内部,与传输信道长度无关
- 传播时延:发生在传输媒体上,与信号发送速率无关
- 服务时延:包含发送时延、传播时延、处理时延
高速链路(高带宽链路):提高的是数据发送速率(减小发送时延),而非比特传播速率,类似更多的车道,上高速更快。
时延与路由器利用率的关系
公式:
其中:
- :网络当前时延,即
- :网络空闲时延,即
- :路由器利用率,新定义的一个玩意,和前面的信道利用率不同。
推导:
假设数据包到达路由器服从泊松过程,到达率为 ,单位时间到包数为 。 数据包的服务时延服从指数分布,服务率为 ,每个包服务时间为 。 定义路由器利用率为单位时间内有效服务时间,也即 .
考虑传输中的队列情况,系统中的包数(状态)为 (包括正在被服务的包)时的概率记为 ,则系统到达稳态时,由于流入某状态的概率应当等于流出该状态的概率:
平均队列长度为:
由 Little’s Law:
化简得:
结论:当利用率接近1时,时延急剧增加。(路由器)利用率并非越高越好。
计算机网络的分类
按作用范围分类
| 类别 | 英文 | 作用范围 | 典型技术/应用 |
|---|---|---|---|
| 个人区域网 | PAN | ~10米 | 蓝牙(Bluetooth) |
| 局域网 | LAN | ~1公里 | WiFi, 以太网, 电力线网络 |
| 城域网 | MAN | ~5-50公里 | Cable, DSL, 蜂窝网络 |
| 广域网 | WAN | 几十到几千公里 | 大型ISP, VPN |
| 互联网 | Internet | 全球 | 因特网 |
注: 若中央处理机之间的距离非常近(如仅 1 米的数量级甚至更小些),则一般就称之为多处理机系统,而不称它为计算机网络。
按使用者分类
| 类别 | 定义 | 特点 |
|---|---|---|
| 公用网(Public Network) | 按规定交费即可使用的网络 | 面向公众,如电信网络 |
| 专用网(Private Network) | 为特殊业务工作需要建造的网络 | 特定机构内部使用,如军队、铁路网络 |
计算机网络的历史
互联网发展时间线
| 时间 | 事件 | 意义 |
|---|---|---|
| 1961-1972 | 早期分组交换原理 | Kleinrock排队论,Baran军事网,ARPANET诞生(1969,4个节点) |
| 1972-1980 | 网络互联,新网络出现 | ALOHAnet(1970),Cerf & Kahn提出网络互联架构(1974),以太网诞生(1976) |
| 1980-1990 | 新协议,网络激增 | TCP/IP部署(1983),DNS定义(1983),TCP拥塞控制(1988) |
| 1990-2000s | 商业化,万维网 | Web诞生(1993),Mosaic/Netscape浏览器,P2P文件共享,即时通讯 |
| 2005-至今 | 移动互联网,云计算 | ~10亿主机,数十亿手机,宽带普及,社交网络,云服务 |
计算机网络在中国的发展
| 时间 | 事件 |
|---|---|
| 1980年 | 铁道部开始计算机联网实验 |
| 1989年11月 | 第一个公用分组交换网CNPAC建成 |
| 1994年4月20日 | 中国用64kbit/s专线正式连入互联网,被国际正式承认 |
| 1994年5月 | 中国科学院高能物理研究所设立第一个万维网服务器 |
| 1994年9月 | 中国公用计算机互联网CHINANET启动 |
中国五大公用计算机网络:
- CHINANET(中国电信互联网)
- UNINET(中国联通互联网)
- CMNET(中国移动互联网)
- CERNET(中国教育和科研计算机网,1994年,首个IPv4主干网)
- CSTNET(中国科学技术网)
计算机网络的标准
主要标准化组织
| 组织 | 领域 | 典型标准 |
|---|---|---|
| ITU(国际电信联盟) | 电信 | G.992(ADSL), H.264/MPEG4, 3G/4G/5G |
| 3GPP | 移动通信 | GSM, GPRS, EDGE, UMTS, LTE, 5G |
| IEEE(电气和电子工程师协会) | 通信 | 802.3(以太网), 802.11(WiFi), 802.16e(WiMAX) |
| IETF(互联网工程任务组) | 互联网 | RFC文档(HTTP, DNS, TCP/IP等) |
| W3C(万维网联盟) | Web技术 | HTML5, CSS |
互联网标准化流程
RFC(Request for Comments):互联网标准的文档形式
成为标准的阶段(简化后):
- 互联网草案(Internet Draft):有效期6个月,还不是RFC
- 建议标准(Proposed Standard):成为RFC文档
- 互联网标准(Internet Standard):分配STD编号
RFC文档类型:
- 建议标准、互联网标准
- 历史的(Historical)、实验的(Experimental)、提供信息的(Informational)
重要RFC示例:
| 协议 | RFC编号 | 年份 |
|---|---|---|
| UDP | RFC 768 | 1980 |
| IP | RFC 791 | 1981 |
| ICMP | RFC 792 | 1981 |
| TCP | RFC 793 | 1981 |
| SMTP | RFC 821 | 1982 |
| ARP | RFC 826 | 1982 |
| FTP | RFC 959 | 1985 |
| DNS | RFC 1034/1035 | 1987 |
| HTTP/1.0 | RFC 1945 | 1996 |
| BGP-4 | RFC 1654 | 1994 |
计算机网络的安全
安全威胁与攻击方式
最初设计的互联网:相互信任的群体接入透明网络,数据明文传输,协议公开。
各层安全考虑:
- 应用层
- 传输层(TCP/UDP)
- 网络层(IP)
- 链路层(Ethernet)
- 物理层
典型案例
| 案例 | 攻击方式 | 描述 | 应对措施 |
|---|---|---|---|
| 1. 数据嗅探 | Packet Sniffing | 混杂模式网卡捕获所有经过的以太网帧(如Wireshark) | 数据加密 |
| 2. IP欺骗 | IP Spoofing | 以信任地址发送分组,伪装身份 | 用户认证 |
| 3. 恶意软件 | Malware | 病毒(自我复制)、蠕虫(被动接收执行)、僵尸网络(Botnet) | 杀毒软件、防火墙 |
| 4. DDoS攻击 | 分布式拒绝服务 | 利用虚假流量占用资源,多点攻击难以追踪 | 流量清洗、源地址验证 |
DDoS攻击特点:
- 采用分布式多点攻击(突破单点带宽限制)
- 假冒源IP(网络基于目的IP转发,不检查源IP)
- 利用响应报文远大于查询报文的协议放大攻击效果