=================================== 计算机网络 =================================== 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网络 - 边缘计算 - 网络人工智能 计算机网络技术日新月异,掌握计算机网络知识将让你在信息技术领域拥有更广阔的发展空间。