计算机网络概述
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
网络层次划分
计算机网络采用分层架构,每一层负责特定的功能,层与层之间通过接口进行通信。常见的网络层次划分有两种:
1. OSI 七层参考模型
OSI(Open Systems Interconnection)七层参考模型是国际标准化组织(ISO)制定的网络架构标准,从下到上分为七层:
| 层级 | 名称 | 主要功能 | 典型协议 |
|---|---|---|---|
| 7 | 应用层 | 为用户提供网络服务 | HTTP, FTP, SMTP, DNS |
| 6 | 表示层 | 数据格式转换、加密解密 | JPEG, MPEG, SSL/TLS |
| 5 | 会话层 | 建立、管理和终止会话 | RPC, NetBIOS |
| 4 | 传输层 | 端到端的可靠传输 | TCP, UDP |
| 3 | 网络层 | 路由选择、数据包转发 | IP, ICMP, ARP, RIP |
| 2 | 数据链路层 | 帧的封装、差错检测 | Ethernet, PPP, HDLC |
| 1 | 物理层 | 物理介质、比特流传输 | RS-232, Ethernet, WiFi |
2. TCP/IP 五层协议栈
TCP/IP 协议栈是实际应用中最广泛使用的网络架构,从下到上分为五层:
| 层级 | 名称 | 主要功能 | 典型协议 |
|---|---|---|---|
| 5 | 应用层 | 为用户提供网络服务 | HTTP, FTP, SMTP, DNS |
| 4 | 传输层 | 端到端的可靠传输 | TCP, UDP |
| 3 | 网络层 | 路由选择、数据包转发 | IP, ICMP, ARP, RIP |
| 2 | 数据链路层 | 帧的封装、差错检测 | Ethernet, PPP |
| 1 | 物理层 | 物理介质、比特流传输 | RS-232, Ethernet, WiFi |
物理层
物理层是网络体系结构的最底层,负责在物理介质上传输原始比特流。
主要功能
- 定义物理介质的特性(如电缆类型、接口形状)
- 定义传输速率(如 10Mbps、1Gbps)
- 定义信号类型(如模拟信号、数字信号)
- 定义编码方式(如曼彻斯特编码、差分曼彻斯特编码)
传输介质
- 有线介质:双绞线、同轴电缆、光纤
- 无线介质:无线电波、微波、红外线
物理层设备
- 中继器(Repeater):放大信号,延长传输距离
- 集线器(Hub):多端口中继器,广播信号到所有端口
数据链路层
数据链路层负责将网络层的数据包封装成帧,并在物理链路中传输。
主要功能
- 帧的封装与解封装
- 差错检测(如 CRC 校验)
- 流量控制
- 访问控制(如 CSMA/CD、CSMA/CA)
重要概念
- 帧:数据链路层的传输单元,包含帧头、数据和帧尾
- MAC 地址:媒体访问控制地址,是网络设备的物理地址,全球唯一
- 广播域:网络中能够接收到同一广播数据包的设备集合
数据链路层协议
- Ethernet(以太网):最常用的局域网协议
- PPP(Point-to-Point Protocol):点到点协议,用于拨号连接
- HDLC(High-Level Data Link Control):高级数据链路控制协议
数据链路层设备
- 网桥(Bridge):连接两个局域网,隔离广播域
- 交换机(Switch):多端口网桥,根据 MAC 地址转发数据
网络层
网络层负责将数据包从源主机传输到目的主机,实现端到端的路由和寻址。
主要功能
- 逻辑地址(IP 地址)的分配
- 路由选择
- 数据包转发
- 拥塞控制
IP 地址
IP 地址是网络层的逻辑地址,用于标识网络中的设备。
IPv4 地址
- 32 位二进制数,通常表示为 4 个十进制数,用点分隔(如 192.168.1.1)
- 由网络号和主机号组成
- 分类:A 类、B 类、C 类、D 类(组播)、E 类(保留)
| 类别 | 网络号位数 | 主机号位数 | 地址范围 | 网络数量 | 每网络主机数 |
|---|---|---|---|---|---|
| A | 8 | 24 | 1.0.0.0 - 126.255.255.255 | 126 | 16,777,214 |
| B | 16 | 16 | 128.0.0.0 - 191.255.255.255 | 16,384 | 65,534 |
| C | 24 | 8 | 192.0.0.0 - 223.255.255.255 | 2,097,152 | 254 |
IPv6 地址
- 128 位二进制数,通常表示为 8 组十六进制数,用冒号分隔(如 2001:0db8:85a3:0000:0000:8a2e:0370:7334)
- 解决了 IPv4 地址枯竭问题
- 支持自动配置、QoS 等新特性
子网掩码及网络划分
子网掩码用于将 IP 地址划分为网络号和主机号两部分。
- 子网划分:将一个大的网络划分为多个小的子网,提高 IP 地址利用率
- 子网掩码计算:与 IP 地址进行 AND 运算,得到网络地址
示例:
1 | IP地址: 192.168.1.100 (11000000.10101000.00000001.01100100) |
ARP/RARP 协议
- ARP(Address Resolution Protocol):地址解析协议,将 IP 地址转换为 MAC 地址
- RARP(Reverse Address Resolution Protocol):反向地址解析协议,将 MAC 地址转换为 IP 地址
ARP 工作过程:
- 主机 A 需要向主机 B 发送数据,但不知道 B 的 MAC 地址
- 主机 A 发送 ARP 请求广播,包含 A 的 IP 和 MAC 地址,以及 B 的 IP 地址
- 所有主机接收 ARP 请求,主机 B 识别出自己的 IP 地址
- 主机 B 发送 ARP 响应,包含自己的 MAC 地址
- 主机 A 收到响应,将 B 的 IP 和 MAC 地址存入 ARP 缓存
路由选择协议
路由选择协议用于在路由器之间交换路由信息,构建路由表。
分类
- 按作用范围:内部网关协议(IGP)和外部网关协议(EGP)
- 按算法:距离向量协议和链路状态协议
常见路由协议
- RIP(Routing Information Protocol):距离向量协议,基于跳数计算路由
- OSPF(Open Shortest Path First):链路状态协议,基于 Dijkstra 算法计算最短路径
- BGP(Border Gateway Protocol):外部网关协议,用于自治系统之间的路由
网络层设备
- 路由器(Router):连接不同网络,根据 IP 地址转发数据,隔离广播域
- 三层交换机:具有路由功能的交换机
传输层
传输层负责为应用程序提供端到端的通信服务。
主要功能
- 端到端的可靠传输
- 流量控制
- 拥塞控制
- 多路复用与多路分解
TCP 协议
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。
主要特点
- 面向连接:通信前需要建立连接,通信后需要释放连接
- 可靠传输:通过序列号、确认应答、重传机制等保证数据的可靠传输
- 流量控制:通过滑动窗口协议控制发送速率
- 拥塞控制:通过慢开始、拥塞避免、快重传、快恢复等算法控制网络拥塞
TCP 三次握手
TCP 连接建立需要三次握手:
- 客户端发送 SYN 包(同步序列编号),请求建立连接
- 服务器发送 SYN+ACK 包,确认客户端的请求并请求建立连接
- 客户端发送 ACK 包,确认服务器的请求
TCP 四次挥手
TCP 连接释放需要四次挥手:
- 客户端发送 FIN 包,请求释放连接
- 服务器发送 ACK 包,确认客户端的请求
- 服务器发送 FIN 包,请求释放连接
- 客户端发送 ACK 包,确认服务器的请求
UDP 协议
UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议。
主要特点
- 无连接:通信前不需要建立连接,通信后不需要释放连接
- 不可靠传输:不保证数据的可靠传输,不提供重传机制
- 传输效率高:开销小,延迟低
- 支持广播和多播
应用场景
- 实时应用(如视频会议、在线游戏)
- 简单请求-响应应用(如 DNS 查询)
TCP 与 UDP 的比较
| 特性 | TCP | UDP |
|---|---|---|
| 连接类型 | 面向连接 | 无连接 |
| 可靠性 | 可靠 | 不可靠 |
| 传输效率 | 低 | 高 |
| 流量控制 | 有 | 无 |
| 拥塞控制 | 有 | 无 |
| 应用场景 | Web 浏览、文件传输 | 视频会议、在线游戏、DNS |
应用层
应用层是网络体系结构的最高层,为用户提供各种网络服务。
主要功能
- 为用户提供网络应用服务
- 定义应用程序之间的通信协议
常见应用层协议
HTTP/HTTPS
HTTP(HyperText Transfer Protocol)是超文本传输协议,用于在 Web 浏览器和 Web 服务器之间传输超文本数据。
- HTTP 特点:无状态、明文传输
- HTTPS:HTTP over SSL/TLS,加密传输,提供安全保障
- HTTP 方法:GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等
- HTTP 状态码:200(成功)、301(永久重定向)、404(资源未找到)、500(服务器错误)等
DNS
DNS(Domain Name System)是域名系统,用于将域名转换为 IP 地址。
- DNS 服务器:根服务器、顶级域名服务器、权威域名服务器、本地域名服务器
- DNS 查询类型:A 记录(IPv4 地址)、AAAA 记录(IPv6 地址)、CNAME 记录(别名)、MX 记录(邮件服务器)等
- DNS 查询过程:递归查询、迭代查询
FTP
FTP(File Transfer Protocol)是文件传输协议,用于在网络上传输文件。
- FTP 特点:需要用户名和密码认证,使用两个端口(21 端口用于控制,20 端口用于数据传输)
- FTP 类型:主动 FTP、被动 FTP
SMTP/POP3/IMAP
- SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送邮件
- POP3(Post Office Protocol 3):邮局协议版本 3,用于接收邮件
- IMAP(Internet Message Access Protocol): Internet 消息访问协议,用于接收邮件,支持邮件在服务器上的管理
DHCP
DHCP(Dynamic Host Configuration Protocol)是动态主机配置协议,用于自动分配 IP 地址、子网掩码、网关等网络配置信息。
DHCP 工作过程:
- 客户端发送 DHCP Discover 广播,寻找 DHCP 服务器
- DHCP 服务器发送 DHCP Offer,提供 IP 地址等信息
- 客户端发送 DHCP Request,请求使用提供的 IP 地址
- DHCP 服务器发送 DHCP ACK,确认客户端的请求
NAT
NAT(Network Address Translation)是网络地址转换,用于将私有 IP 地址转换为公有 IP 地址。
- NAT 类型:静态 NAT、动态 NAT、PAT(Port Address Translation,端口地址转换)
- NAT 优点:解决 IPv4 地址枯竭问题,提高网络安全性
计算机网络面试题
1. TCP 为什么需要三次握手?
TCP 需要三次握手是为了防止已失效的连接请求报文段突然又传送到了服务端,导致错误。三次握手可以确保双方都了解对方的接收和发送能力。
2. TCP 为什么需要四次挥手?
TCP 需要四次挥手是因为 TCP 是全双工通信,发送方和接收方都需要分别释放连接。当一方发送 FIN 报文表示不再发送数据,但仍能接收数据,需要另一方确认后再发送自己的 FIN 报文。
3. TCP 和 UDP 的区别是什么?
见 TCP 与 UDP 的比较表。
4. HTTP 和 HTTPS 的区别是什么?
- HTTP 是明文传输,HTTPS 是加密传输
- HTTP 使用 80 端口,HTTPS 使用 443 端口
- HTTPS 需要 SSL/TLS 证书
- HTTPS 比 HTTP 更安全,但性能开销更大
5. DNS 的工作原理是什么?
DNS 将域名转换为 IP 地址的过程:
- 客户端向本地 DNS 服务器发送 DNS 查询请求
- 本地 DNS 服务器如果有缓存,直接返回结果
- 如果没有缓存,本地 DNS 服务器向根 DNS 服务器发送查询请求
- 根 DNS 服务器返回顶级域名服务器的地址
- 本地 DNS 服务器向顶级域名服务器发送查询请求
- 顶级域名服务器返回权威 DNS 服务器的地址
- 本地 DNS 服务器向权威 DNS 服务器发送查询请求
- 权威 DNS 服务器返回 IP 地址
- 本地 DNS 服务器将 IP 地址返回给客户端,并缓存结果
6. 什么是 ARP 欺骗?
ARP 欺骗是一种网络攻击,攻击者发送伪造的 ARP 数据包,将自己的 MAC 地址与目标 IP 地址关联,导致网络流量被重定向到攻击者的计算机。
7. 什么是 DDos 攻击?
DDos(Distributed Denial of Service)攻击是一种分布式拒绝服务攻击,攻击者通过控制大量僵尸计算机向目标服务器发送大量请求,导致服务器无法正常响应合法用户的请求。
8. 什么是子网掩码?它的作用是什么?
子网掩码是一个 32 位的二进制数,用于将 IP 地址划分为网络号和主机号两部分。它的作用是确定 IP 地址所属的网络,以及网络中可用的主机数量。
参考资料
- 《计算机网络》(第七版),谢希仁 编著
- 《TCP/IP 详解》(卷 1:协议),W. Richard Stevens 著
- 《计算机网络:自顶向下方法》,James F. Kurose 等著
- RFC 文档(如 RFC 791:IPv4,RFC 793:TCP)
总结
计算机网络是现代信息技术的基础,掌握计算机网络的基本概念和原理对于理解和应用网络技术至关重要。本文从网络层次划分入手,详细介绍了物理层、数据链路层、网络层、传输层和应用层的主要功能、协议和设备,并解答了一些常见的计算机网络面试题。通过学习本文,读者可以对计算机网络有一个全面的认识,为进一步深入学习网络技术打下基础。