计算机网络

0. 要点汇总

本篇文章的要点整理如下

  • 计算机网络:多台计算机互联实现资源共享和信息传递的系统

  • 网络拓扑:网络的物理连接方式,如总线型、星型、环型、网状型

  • 协议:网络通信的规则和约定,规定数据格式、传输顺序、错误处理等

  • 分层模型:将网络功能划分为多个层次,便于设计和实现

  • OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

  • TCP/IP四层模型:网络接口层、网络层、传输层、应用层

  • IP地址:标识网络中设备的唯一地址,分为IPv4和IPv6

  • 子网掩码:用于划分网络和主机部分

  • 路由:将数据包从源主机转发到目标主机的过程

  • 交换机:数据链路层设备,根据MAC地址转发数据帧

  • 路由器:网络层设备,根据IP地址转发数据包

  • TCP:面向连接的可靠传输协议,提供流量控制和拥塞控制

  • UDP:无连接的不可靠传输协议,适用于实时应用

  • HTTP:超文本传输协议,基于请求-响应模型

  • HTTPS:安全的HTTP协议,通过SSL/TLS加密传输

  • DNS:域名系统,将域名解析为IP地址

  • 带宽:网络的传输能力,单位是bps(比特每秒)

  • 延迟:数据从源到目的所需的时间,包括传播延迟、传输延迟、处理延迟、排队延迟

  • 丢包:数据包在传输过程中丢失的现象

  • 拥塞控制:防止网络拥塞的机制

  • 流量控制:控制发送方发送速率的机制

1. 计算机网络基础

1.1 网络概述

计算机网络的定义

计算机网络是将地理位置不同的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的系统。

网络的基本功能

  • 资源共享:硬件、软件、数据资源的共享

  • 信息传递:电子邮件、即时通讯、视频会议等

  • 分布式处理:将复杂任务分配到多台计算机上处理

  • 集中管理:对网络资源进行统一管理和监控

网络的分类

  1. 按地理范围分类: - 局域网(LAN):范围通常在几公里内,如办公室、校园 - 城域网(MAN):范围通常在城市范围内,如城市光纤网 - 广域网(WAN):范围通常跨越多个城市甚至国家,如互联网

  2. 按传输介质分类: - 有线网络:双绞线、光纤、同轴电缆 - 无线网络:Wi-Fi、蓝牙、移动通信网络

  3. 按使用范围分类: - 公用网:面向公众提供服务的网络 - 专用网:特定机构内部使用的网络

网络拓扑结构

  1. 总线型拓扑:所有设备连接到一条公共总线上

  2. 星型拓扑:所有设备连接到中心设备(交换机)

  3. 环型拓扑:设备首尾相连形成环形

  4. 网状拓扑:设备之间有多条连接路径

  5. 树型拓扑:星型拓扑的扩展,形成层次结构

1.2 网络协议

协议的定义

协议是为网络通信制定的规则和约定,规定了数据格式、传输顺序、错误处理等。

协议的三要素

  1. 语法:数据与控制信息的结构或格式

  2. 语义:需要发出何种控制信息,完成何种动作以及做出何种响应

  3. 时序:事件实现顺序的详细说明

协议的分层

将网络功能划分为多个层次,每层通过接口向上一层提供服务。

分层的好处

  • 各层独立:各层可以独立修改和实现

  • 灵活性好:各层可以选择不同的实现技术

  • 易于实现和维护:复杂的系统分解为多个相对简单的子系统

  • 促进标准化:各层接口明确,便于标准化

1.3 性能指标

速率

速率是数据传输的速率,单位是比特每秒(b/s, bps)。

常见的速率:
  • 1 Mbps = 10^6 bps

  • 1 Gbps = 10^9 bps

  • 1 Tbps = 10^12 bps

带宽

带宽原指信号具有的频带宽度,现在常用来表示网络的最大数据传输速率。

吞吐量

吞吐量是单位时间内实际通过网络的数据量,通常小于带宽。

时延

时延是数据从源到目的所需的时间,包括:

  1. 传播延迟:电磁波在介质中传播的时间

  2. 传输延迟:发送数据所需的时间

  3. 处理延迟:路由器处理数据包的时间

  4. 排队延迟:数据包在路由器队列中等待的时间

总时延 = 传播延迟 + 传输延迟 + 处理延迟 + 排队延迟

往返时间(RTT)

往返时间是数据从源到目的再返回源所需的时间。

带宽时延积

带宽时延积 = 带宽 × 往返时间

表示链路中能够容纳的数据量。

丢包率

丢包率是丢失的数据包占总数据包的比例。

利用率

利用率是网络实际使用的带宽占总带宽的比例。

2. 网络体系结构

2.1 OSI七层模型

物理层(Physical Layer - Layer 1)

功能
  • 传输比特流

  • 规定电气特性、机械特性、功能特性、规程特性

设备
  • 中继器:放大和再生信号

  • 集线器:多端口中继器

协议
  • RS-232

  • RJ-45

数据链路层(Data Link Layer - Layer 2)

功能
  • 将比特流组织成帧

  • 提供差错控制

  • 提供流量控制

  • 实现介质访问控制

设备
  • 网桥:连接两个网段

  • 交换机:多端口网桥,根据MAC地址转发

协议
  • 以太网(Ethernet)

  • PPP(Point-to-Point Protocol)

  • HDLC

网络层(Network Layer - Layer 3)

功能
  • 提供逻辑寻址(IP地址)

  • 路由选择

  • 拥塞控制

设备
  • 路由器:连接不同网络

协议
  • IP(Internet Protocol)

  • ICMP(Internet Control Message Protocol)

  • ARP(Address Resolution Protocol)

  • OSPF(Open Shortest Path First)

传输层(Transport Layer - Layer 4)

功能
  • 提供端到端通信

  • 提供可靠传输

  • 流量控制

  • 拥塞控制

协议
  • TCP(Transmission Control Protocol)

  • UDP(User Datagram Protocol)

会话层(Session Layer - Layer 5)

功能
  • 建立、管理和终止会话

  • 提供会话同步

协议
  • RPC(Remote Procedure Call)

  • NFS(Network File System)

表示层(Presentation Layer - Layer 6)

功能
  • 数据格式转换

  • 数据加密解密

  • 数据压缩解压缩

协议
  • SSL/TLS

  • JPEG、MPEG

应用层(Application Layer - Layer 7)

功能
  • 为用户应用程序提供网络服务

协议
  • HTTP/HTTPS

  • FTP(File Transfer Protocol)

  • SMTP(Simple Mail Transfer Protocol)

  • DNS(Domain Name System)

  • Telnet

  • SSH

2.2 TCP/IP四层模型

网络接口层(Network Interface Layer)

对应OSI模型的物理层和数据链路层。

功能
  • 处理物理传输介质

  • 实现数据链路层功能

协议
  • 以太网

  • Wi-Fi

  • ARP

  • RARP

网络层(Internet Layer)

对应OSI模型的网络层。

功能
  • 提供逻辑寻址

  • 路由选择

协议
  • IP

  • ICMP

  • IGMP

  • 路由协议(RIP、OSPF、BGP)

传输层(Transport Layer)

对应OSI模型的传输层。

功能
  • 提供端到端通信

  • 提供可靠或不可靠传输

协议
  • TCP

  • UDP

应用层(Application Layer)

对应OSI模型的会话层、表示层和应用层。

功能
  • 为应用程序提供网络服务

协议
  • HTTP/HTTPS

  • FTP

  • SMTP

  • DNS

  • Telnet

  • SSH

2.3 数据封装与解封装

数据封装

从应用层到物理层,每层添加自己的协议头和尾:

应用层:数据 ↓ 传输层:TCP/UDP头 + 数据 ↓ 网络层:IP头 + TCP/UDP头 + 数据 ↓ 数据链路层:帧头 + IP头 + TCP/UDP头 + 数据 + 帧尾 ↓ 物理层:比特流

数据解封装

从物理层到应用层,每层剥离自己的协议头和尾,提取数据。

3. 网络层

3.1 IP协议

IPv4地址

IPv4地址是32位二进制数,通常表示为点分十进制,如192.168.1.1。

地址分类

  1. A类地址: - 范围:1.0.0.0 ~ 126.255.255.255 - 网络位:8位 - 主机位:24位 - 首字节范围:1 ~ 126

  2. B类地址: - 范围:128.0.0.0 ~ 191.255.255.255 - 网络位:16位 - 主机位:16位 - 首字节范围:128 ~ 191

  3. C类地址: - 范围:192.0.0.0 ~ 223.255.255.255 - 网络位:24位 - 主机位:8位 - 首字节范围:192 ~ 223

  4. D类地址 (组播地址): - 范围:224.0.0.0 ~ 239.255.255.255 - 首字节范围:224 ~ 239

  5. E类地址 (保留地址): - 范围:240.0.0.0 ~ 255.255.255.255 - 首字节范围:240 ~ 255

特殊地址

  • 0.0.0.0:表示本机

  • 255.255.255.255:广播地址

  • 127.0.0.1:环回地址

  • 10.0.0.0 ~ 10.255.255.255:私有地址

  • 172.16.0.0 ~ 172.31.255.255:私有地址

  • 192.168.0.0 ~ 192.168.255.255:私有地址

IPv6地址

IPv6地址是128位二进制数,表示为8组十六进制数,每组4位,如2001:0db8:85a3:0000:0000:8a2e:0370:7334。

IPv6的优势

  • 地址空间大:2^128个地址

  • 简化头部:提高路由效率

  • 支持自动配置

  • 内置安全性

  • 更好的服务质量支持

3.2 子网划分

子网掩码

子网掩码用于划分IP地址的网络部分和主机部分。

子网掩码表示方法

  1. 点分十进制:如255.255.255.0

  2. CIDR表示法:如/24表示前24位是网络位

子网划分示例

将C类网络192.168.1.0/24划分为4个子网:

每个子网需要2位主机位,网络位变为26位。

子网掩码:255.255.255.192(/26)

子网范围:
  • 192.168.1.0/26:192.168.1.0 ~ 192.168.1.63

  • 192.168.1.64/26:192.168.1.64 ~ 192.168.1.127

  • 192.168.1.128/26:192.168.1.128 ~ 192.168.1.191

  • 192.168.1.192/26:192.168.1.192 ~ 192.168.1.255

VLSM(可变长子网掩码)

VLSM允许不同子网使用不同长度的子网掩码,提高地址利用率。

3.3 路由

路由的定义

路由是将数据包从源主机转发到目标主机的过程。

路由表

路由器维护的路由表包含以下信息:
  • 目的网络地址

  • 子网掩码

  • 下一跳地址

  • 接口

  • 跃点数

路由算法

  1. 距离矢量算法: - 代表:RIP - 原理:每个路由器维护到所有目的地的距离,定期与邻居交换信息

  2. 链路状态算法: - 代表:OSPF - 原理:每个路由器维护网络的拓扑结构,计算最短路径

  3. 路径矢量算法: - 代表:BGP - 原理:结合距离矢量和链路状态的特点

RIP协议

RIP(Routing Information Protocol)是一种距离矢量路由协议。

特点
  • 使用跳数作为度量

  • 最大跳数限制为15

  • 每30秒广播一次路由表

  • 简单但收敛慢

OSPF协议

OSPF(Open Shortest Path First)是一种链路状态路由协议。

特点
  • 使用带宽作为度量

  • 支持VLSM

  • 收敛快

  • 支持区域划分

BGP协议

BGP(Border Gateway Protocol)是一种路径矢量路由协议,用于自治系统之间的路由。

特点
  • 支持大规模网络

  • 使用路径向量防止路由环路

  • 支持丰富的策略

4. 传输层

4.1 TCP协议

TCP的特点

  • 面向连接:传输前建立连接,传输后释放连接

  • 可靠传输:保证数据无差错、不丢失、不重复、按序到达

  • 面向字节流:将数据视为字节流

  • 全双工通信:支持双向同时传输

  • 流量控制:控制发送方发送速率

  • 拥塞控制:防止网络拥塞

TCP报文段格式

TCP报文段包含:
  • 源端口和目的端口:各16位

  • 序号:32位

  • 确认号:32位

  • 数据偏移:4位

  • 保留:6位

  • 标志位:URG、ACK、PSH、RST、SYN、FIN

  • 窗口大小:16位

  • 检验和:16位

  • 紧急指针:16位

  • 选项:可变长度

  • 数据:可变长度

TCP连接建立(三次握手)

  1. 第一次握手:客户端发送SYN=1、seq=x的报文段

  2. 第二次握手:服务器回复SYN=1、ACK=1、seq=y、ack=x+1的报文段

  3. 第三次握手:客户端回复ACK=1、seq=x+1、ack=y+1的报文段

TCP连接释放(四次挥手)

  1. 第一次挥手:客户端发送FIN=1的报文段

  2. 第二次挥手:服务器回复ACK=1的报文段

  3. 第三次挥手:服务器发送FIN=1的报文段

  4. 第四次挥手:客户端回复ACK=1的报文段

TCP流量控制

流量控制使用滑动窗口机制。

发送窗口大小 = 接收窗口大小 + 拥塞窗口大小

TCP拥塞控制

拥塞控制算法: 1. 慢启动:拥塞窗口从1开始,每经过一个往返时间加倍 2. 拥塞避免:每经过一个往返时间,拥塞窗口增加1 3. 快重传:收到3个重复ACK时立即重传 4. 快恢复:将拥塞窗口减半,进入拥塞避免阶段

4.2 UDP协议

UDP的特点

  • 无连接:不需要建立连接

  • 不可靠:不保证数据到达

  • 面向报文:保留报文的边界

  • 无拥塞控制:适合实时应用

  • 头部开销小:仅8字节

UDP报文格式

UDP报文包含:
  • 源端口和目的端口:各16位

  • 长度:16位

  • 检验和:16位

  • 数据:可变长度

UDP的应用

  • DNS

  • VoIP

  • 视频流

  • 在线游戏

  • TFTP

4.3 TCP与UDP对比

特性

TCP

UDP

连接性

面向连接

无连接

可靠性

可靠

不可靠

顺序

保证顺序

不保证顺序

流量控制

拥塞控制

头部开销

20-60字节

8字节

传输方式

字节流

数据报

应用场景

文件传输、邮件、网页

实时应用

5. 应用层

5.1 DNS

DNS的定义

DNS(Domain Name System)是域名系统,将域名解析为IP地址。

域名结构

域名采用层次结构:

顶级域名(TLD):
  • 国家顶级域名:.cn、.us、.uk

  • 通用顶级域名:.com、.org、.net、.edu

DNS查询过程

  1. 客户端向本地DNS服务器发送查询请求

  2. 本地DNS服务器查询缓存,如果命中则返回结果

  3. 如果缓存未命中,本地DNS服务器向根DNS服务器查询

  4. 根DNS服务器返回顶级域名服务器地址

  5. 本地DNS服务器向顶级域名服务器查询

  6. 顶级域名服务器返回权威DNS服务器地址

  7. 本地DNS服务器向权威DNS服务器查询

  8. 权威DNS服务器返回IP地址

  9. 本地DNS服务器将结果返回给客户端,并缓存结果

DNS记录类型

  • A记录:将域名映射到IPv4地址

  • AAAA记录:将域名映射到IPv6地址

  • CNAME记录:域名别名

  • MX记录:邮件交换服务器

  • NS记录:权威DNS服务器

  • TXT记录:文本信息

5.2 HTTP/HTTPS

HTTP的定义

HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于在Web浏览器和Web服务器之间传输数据。

HTTP请求方法

  • GET:获取资源

  • POST:提交数据

  • PUT:更新资源

  • DELETE:删除资源

  • HEAD:获取响应头

  • OPTIONS:查询支持的请求方法

  • PATCH:部分更新资源

HTTP状态码

  1. 2xx成功: - 200 OK - 201 Created - 204 No Content

  2. 3xx重定向: - 301 Moved Permanently - 302 Found - 304 Not Modified

  3. 4xx客户端错误: - 400 Bad Request - 401 Unauthorized - 403 Forbidden - 404 Not Found

  4. 5xx服务器错误: - 500 Internal Server Error - 502 Bad Gateway - 503 Service Unavailable

HTTPS

HTTPS是安全的HTTP协议,在HTTP基础上添加SSL/TLS加密层。

SSL/TLS握手过程

  1. 客户端发送支持的加密算法

  2. 服务器选择加密算法并发送证书

  3. 客户端验证证书

  4. 客户端生成会话密钥并用服务器公钥加密

  5. 服务器解密会话密钥

  6. 双方使用会话密钥加密通信

HTTP/2

HTTP/2相比HTTP/1.1的改进:
  • 二进制协议

  • 多路复用

  • 头部压缩

  • 服务器推送

5.3 其他应用层协议

FTP

FTP(File Transfer Protocol)是文件传输协议。

特点
  • 支持上传和下载

  • 支持断点续传

  • 使用两个连接:控制连接和数据连接

SMTP

SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用于发送邮件。

POP3/IMAP

POP3和IMAP是邮件接收协议。

  • POP3:下载邮件到本地

  • IMAP:在服务器上管理邮件

Telnet/SSH

Telnet和SSH是远程登录协议。

  • Telnet:明文传输,不安全

  • SSH:加密传输,安全

DHCP

DHCP(Dynamic Host Configuration Protocol)是动态主机配置协议,自动分配IP地址。

NAT

NAT(Network Address Translation)是网络地址转换,将私有地址转换为公有地址。

6. 网络安全

6.1 密码学基础

对称加密

加密和解密使用相同的密钥。

算法:AES、DES、3DES、RC4

非对称加密

加密和解密使用不同的密钥:公钥和私钥。

算法:RSA、ECC、Diffie-Hellman

哈希函数

将任意长度的输入映射为固定长度的输出。

算法:MD5、SHA-1、SHA-256、SHA-512

数字签名

使用私钥对消息进行签名,使用公钥验证签名。

6.2 网络攻击与防御

常见网络攻击

  1. DDoS攻击:分布式拒绝服务攻击

  2. 中间人攻击:拦截和篡改通信

  3. SQL注入:在输入中插入恶意SQL代码

  4. XSS攻击:跨站脚本攻击

  5. CSRF攻击:跨站请求伪造

防御措施

  • 使用防火墙

  • 启用HTTPS

  • 输入验证和过滤

  • 使用安全的编程框架

  • 定期更新和打补丁

6.3 VPN

VPN的定义

VPN(Virtual Private Network)是虚拟专用网络,通过公共网络建立安全的私有网络。

VPN技术

  • SSL VPN

  • IPSec VPN

  • L2TP VPN

VPN的应用

  • 远程办公

  • 安全访问公司资源

  • 绕过网络审查

7. 网络设备

7.1 集线器

集线器的特点

  • 工作在物理层

  • 广播发送数据

  • 不支持全双工

  • 容易产生冲突

集线器的缺点

  • 带宽共享

  • 安全性差

  • 效率低

7.2 交换机

交换机的特点

  • 工作在数据链路层

  • 根据MAC地址转发数据

  • 支持全双工

  • 支持VLAN

交换机的功能

  • MAC地址学习

  • 数据帧转发

  • 冗余链路管理

  • 流量监控

VLAN

VLAN(Virtual Local Area Network)是虚拟局域网,将一个物理网络划分为多个逻辑网络。

7.3 路由器

路由器的特点

  • 工作在网络层

  • 根据IP地址转发数据包

  • 支持路由协议

  • 支持NAT

路由器的功能

  • 路由选择

  • 数据包转发

  • 网络地址转换

  • 访问控制

8. 应用领域

8.1 互联网

万维网(WWW)

万维网是基于HTTP协议的分布式信息系统。

电子邮件

电子邮件使用SMTP、POP3、IMAP等协议。

即时通讯

即时通讯使用自定义协议或WebSocket等。

8.2 企业网络

Intranet

企业内部网络,使用私有IP地址。

Extranet

企业与合作伙伴之间的网络。

8.3 数据中心

网络架构

数据中心采用多层网络架构,提供高带宽、低延迟的连接。

负载均衡

负载均衡将流量分配到多台服务器,提高性能和可靠性。

8.4 物联网

物联网协议

  • CoAP

  • MQTT

  • LoRaWAN

边缘计算

在接近数据源的设备上进行计算,减少延迟。

9. 总结与展望

计算机网络是现代信息社会的基础设施,连接了全球数十亿设备,改变了人们的工作和生活方式。从OSI模型到TCP/IP协议栈,从路由算法到网络安全,计算机网络技术不断演进,为信息时代的繁荣提供了强有力的支撑。

核心价值

  • 实现资源共享

  • 促进信息交流

  • 支持分布式计算

  • 推动数字化转型

学习建议

  • 理解分层模型和协议栈

  • 掌握TCP/IP协议族

  • 学习配置网络设备

  • 了解网络安全知识

  • 动手实践网络编程

进阶方向

  • 软件定义网络(SDN)

  • 网络功能虚拟化(NFV)

  • 5G/6G网络

  • 边缘计算

  • 网络人工智能

计算机网络技术日新月异,掌握计算机网络知识将让你在信息技术领域拥有更广阔的发展空间。