内容简介
系统讲解计算机网络核心知识,涵盖OSI与TCP/IP模型、物理层与数据链路层、网络层(IP协议)、传输层(TCP/UDP)、应用层协议等。
计算机网络入门教程——从协议到应用
概述
计算机网络是将地理位置不同的多台计算机通过通信设备和传输介质连接起来,实现资源共享和信息传递的系统。在当今互联网时代,理解计算机网络的工作原理对于任何计算机相关专业的学生都至关重要。
本教程将按照网络分层模型,从底层到高层系统讲解计算机网络的核心知识:物理层与数据链路层、网络层(IP协议)、传输层(TCP/UDP)、应用层协议(HTTP、DNS等)。每个知识点都配有典型例题和实际应用场景分析。
一、网络体系结构
1.1 OSI 七层模型
OSI(开放系统互连)模型将网络通信分为七层:
| 层次 | 名称 | 功能 | 典型协议 |
|---|---|---|---|
| 7 | 应用层 | 为用户应用提供网络服务 | HTTP, FTP, SMTP, DNS |
| 6 | 表示层 | 数据格式转换、加密解密 | SSL/TLS |
| 5 | 会话层 | 建立、管理和终止会话 | NetBIOS |
| 4 | 传输层 | 提供端到端的可靠传输 | TCP, UDP |
| 3 | 网络层 | 路由选择和数据包转发 | IP, ICMP, ARP |
| 2 | 数据链路层 | 帧的传输和差错检测 | Ethernet, PPP |
| 1 | 物理层 | 比特流的传输 | 光纤、双绞线、无线电 |
1.2 TCP/IP 四层模型
实际应用中更常用的是 TCP/IP 四层模型:
| 层次 | 名称 | 对应 OSI | 主要协议 |
|---|---|---|---|
| 4 | 应用层 | 应用层+表示层+会话层 | HTTP, FTP, DNS, SMTP |
| 3 | 传输层 | 传输层 | TCP, UDP |
| 2 | 网际层 | 网络层 | IP, ICMP, ARP |
| 1 | 网络接口层 | 数据链路层+物理层 | Ethernet, Wi-Fi |
数据封装过程:应用数据从上到下逐层封装——应用层数据加上TCP/UDP头部,再加上IP头部,最后加上帧头和帧尾,变成可以在物理介质上传输的比特流。
二、物理层与数据链路层
2.1 物理层
物理层的任务是在物理介质上透明地传输比特流。主要涉及:
- 传输介质:双绞线(最常用)、同轴电缆、光纤、无线电波
- 编码方式:不归零编码(NRZ)、曼彻斯特编码(以太网使用)、差分曼彻斯特编码
- 复用技术:频分复用(FDM)、时分复用(TDM)、波分复用(WDM)
2.2 数据链路层
数据链路层的任务是在相邻节点之间可靠地传输数据帧。主要功能:
- 成帧:将比特流划分为帧
- 差错检测:通过CRC(循环冗余校验)检测传输错误
- 流量控制:控制发送方的发送速率
- 介质访问控制:决定哪个设备可以使用共享介质
以太网(Ethernet):最常用的局域网技术。
- 以太网帧格式:目的MAC地址(6字节)+ 源MAC地址(6字节)+ 类型(2字节)+ 数据(46-1500字节)+ FCS(4字节)
- MAC地址是48位的硬件地址,烧录在网络接口卡(NIC)中
CSMA/CD 协议(载波侦听多路访问/碰撞检测):
- 发送前先侦听信道是否空闲
- 如果空闲,立即发送
- 发送时继续检测碰撞
- 如果检测到碰撞,立即停止发送,等待随机时间后重试
2.3 交换机与MAC地址表
交换机工作在数据链路层,通过学习MAC地址来转发帧:
- 收到帧后,记录源MAC地址和对应端口到MAC地址表
- 查找目的MAC地址对应的端口
- 如果找到,只向该端口转发;如果没找到,向所有端口广播
三、网络层
3.1 IP 协议
IP(Internet Protocol)是网络层的核心协议,负责将数据包从源主机传送到目的主机。
IPv4 地址:32位二进制数,通常用点分十进制表示。
- 例:192.168.1.1 = 11000000.10101000.00000001.00000001
IP 地址分类:
| 类别 | 范围 | 默认子网掩码 | 用途 |
|---|---|---|---|
| A类 | 1.0.0.0~126.255.255.255 | 255.0.0.0 (/8) | 大型网络 |
| B类 | 128.0.0.0~191.255.255.255 | 255.255.0.0 (/16) | 中型网络 |
| C类 | 192.0.0.0~223.255.255.255 | 255.255.255.0 (/24) | 小型网络 |
| D类 | 224.0.0.0~239.255.255.255 | - | 组播 |
| E类 | 240.0.0.0~255.255.255.255 | - | 保留 |
特殊IP地址:
- 127.0.0.1:本机回环地址(localhost)
- 0.0.0.0:表示本网络
- 255.255.255.255:限制广播地址
子网划分:通过子网掩码将一个大的IP网络划分为多个小的子网。
例题:IP地址 192.168.1.130,子网掩码 255.255.255.192,求网络地址和广播地址。
解:
- 子网掩码 255.255.255.192 = /26(前26位为1)
- IP地址:192.168.1.10000010
- 网络地址:将主机位全置0 → 192.168.1.10000000 = 192.168.1.128
- 广播地址:将主机位全置1 → 192.168.1.10111111 = 192.168.1.191
- 该子网的可用IP范围:192.168.1.129~192.168.1.190(共62个)
3.2 ARP 协议
ARP(地址解析协议)用于将IP地址解析为MAC地址。
工作过程:
- 主机A要发送数据给主机B,知道B的IP地址但不知道MAC地址
- 主机A广播ARP请求:"谁的IP是192.168.1.2?请告诉我你的MAC地址"
- 主机B收到请求后,单播回复ARP响应:"我的MAC地址是XX:XX:XX:XX:XX:XX"
- 主机A收到响应后,将IP-MAC映射存入ARP缓存表
3.3 路由
路由器工作在网络层,根据路由表将数据包转发到正确的方向。
路由表包含:目的网络地址、子网掩码、下一跳地址、出接口。
路由选择算法:
- 静态路由:管理员手动配置
- 动态路由:路由器之间通过路由协议自动交换路由信息
- RIP:基于距离向量,最大跳数15
- OSPF:基于链路状态,适用于大型网络
- BGP:用于自治系统之间的路由
3.4 ICMP 协议
ICMP(Internet控制报文协议)用于报告网络中的错误和异常情况。
常见的ICMP消息:
- Echo Request/Reply:ping命令使用的消息类型
- Destination Unreachable:目的不可达
- Time Exceeded:TTL超时(traceroute命令使用)
四、传输层
4.1 TCP 协议
TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。
TCP 的主要特点:
- 面向连接:通信前需要建立连接(三次握手)
- 可靠传输:通过序号、确认号、超时重传保证数据不丢失、不重复、按序到达
- 流量控制:通过滑动窗口机制控制发送速率
- 拥塞控制:防止网络拥塞
TCP 三次握手(建立连接):
- 客户端 → 服务器:SYN=1, seq=x(客户端请求建立连接)
- 服务器 → 客户端:SYN=1, ACK=1, seq=y, ack=x+1(服务器同意建立连接)
- 客户端 → 服务器:ACK=1, seq=x+1, ack=y+1(客户端确认连接建立)
为什么是三次而不是两次? 如果只有两次,服务器无法确认客户端收到了自己的SYN+ACK,可能导致服务器误以为连接已建立而客户端不知道的情况。
TCP 四次挥手(释放连接):
- 客户端 → 服务器:FIN=1(客户端请求关闭)
- 服务器 → 客户端:ACK=1(服务器确认收到,但可能还有数据要发)
- 服务器 → 客户端:FIN=1(服务器也请求关闭)
- 客户端 → 服务器:ACK=1(客户端确认,等待2MSL后关闭)
TCP 拥塞控制:
- 慢开始:初始拥塞窗口较小,每收到一个ACK就加倍
- 拥塞避免:当窗口达到阈值后,改为线性增长
- 快重传:连续收到3个重复ACK就立即重传丢失的报文
- 快恢复:发生快重传时,将阈值减半,窗口从新阈值开始线性增长
4.2 UDP 协议
UDP(用户数据报协议)是一种无连接的、不可靠的传输层协议。
UDP 的特点:
- 无连接:不需要建立连接,直接发送
- 不可靠:不保证数据到达、不保证顺序
- 开销小:头部只有8字节(TCP头部至少20字节)
- 支持一对多、多对多通信
TCP vs UDP:
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠 | 不可靠 |
| 速度 | 较慢 | 较快 |
| 头部大小 | 20-60字节 | 8字节 |
| 应用场景 | Web、邮件、文件传输 | 视频、语音、DNS、游戏 |
4.3 端口号
端口号用于标识同一台主机上不同的应用程序。
- 熟知端口(0-1023):HTTP=80, HTTPS=443, FTP=21, SMTP=25, DNS=53
- 注册端口(1024-49151):MySQL=3306, Redis=6379
- 动态端口(49152-65535):客户端临时使用
五、应用层
5.1 HTTP 协议
HTTP(超文本传输协议)是Web的基础协议,基于TCP,默认端口80。
HTTP 请求方法:
- GET:获取资源(最常用,参数在URL中)
- POST:提交数据(数据在请求体中)
- PUT:更新资源
- DELETE:删除资源
- HEAD:只获取响应头
HTTP 状态码:
| 类别 | 含义 | 常见状态码 |
|---|---|---|
| 1xx | 信息 | 100 Continue |
| 2xx | 成功 | 200 OK, 201 Created |
| 3xx | 重定向 | 301 Moved Permanently, 302 Found |
| 4xx | 客户端错误 | 400 Bad Request, 403 Forbidden, 404 Not Found |
| 5xx | 服务器错误 | 500 Internal Server Error, 503 Service Unavailable |
HTTP 请求与响应示例:
# 请求
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
# 响应
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>
HTTPS:HTTP + SSL/TLS,在HTTP基础上增加了加密和身份验证功能,默认端口443。
5.2 DNS 协议
DNS(域名系统)将域名解析为IP地址,基于UDP,端口53。
DNS 解析过程:
- 浏览器缓存 → 2. 操作系统缓存 → 3. 本地DNS服务器 → 4. 根DNS服务器 → 5. 顶级域DNS服务器 → 6. 权威DNS服务器
递归查询 vs 迭代查询:
- 递归查询:本地DNS服务器替客户端完成整个解析过程
- 迭代查询:本地DNS服务器依次向各级DNS服务器查询
5.3 其他应用层协议
FTP(文件传输协议):基于TCP,使用20(数据)和21(控制)两个端口。
SMTP/POP3/IMAP(电子邮件协议):
- SMTP:发送邮件,端口25
- POP3:接收邮件(下载到本地),端口110
- IMAP:接收邮件(保留在服务器),端口143
DHCP(动态主机配置协议):自动为客户端分配IP地址,基于UDP。
练习题
题目一
OSI七层模型中,哪一层负责路由选择?哪一层负责端到端的可靠传输?
答案:网络层(第3层)负责路由选择和数据包转发;传输层(第4层)负责端到端的可靠传输。网络层关注的是"数据包如何从源到达目的",传输层关注的是"数据是否完整、有序地到达"。
题目二
某主机的IP地址为172.16.50.100,子网掩码为255.255.248.0,求该主机所在子网的网络地址、广播地址和可用IP范围。
答案:
- 子网掩码 255.255.248.0 = /21(前21位为1)
- IP地址:172.16.00110010.01100100
- 网络地址:172.16.00110000.00000000 = 172.16.48.0
- 广播地址:172.16.00110111.11111111 = 172.16.55.255
- 可用IP范围:172.16.48.1 ~ 172.16.55.254(共2046个)
题目三
TCP建立连接为什么要三次握手而不是两次?
答案:如果只有两次握手(客户端发SYN,服务器回SYN+ACK就认为连接建立),存在以下问题:服务器无法确认客户端是否收到了自己的SYN+ACK。如果SYN+ACK在网络中丢失,客户端不知道连接已建立,而服务器会一直等待客户端发送数据,浪费资源。第三次握手让服务器确认客户端已收到SYN+ACK,双方都确认连接建立。另外,三次握手还能防止已过期的连接请求到达服务器导致建立无效连接。
题目四
浏览器输入一个URL后,从网络角度描述发生了什么。
答案:
- DNS解析:浏览器向DNS服务器查询域名对应的IP地址
- TCP连接:通过三次握手与服务器建立TCP连接(如果是HTTPS还需要TLS握手)
- 发送HTTP请求:浏览器向服务器发送HTTP GET请求
- 服务器处理:服务器处理请求,返回HTTP响应(包含HTML文件)
- 浏览器渲染:浏览器解析HTML,发现需要CSS、JS、图片等资源,重复步骤2-4获取这些资源
- TCP断开:通过四次挥手断开TCP连接(HTTP/1.1默认使用持久连接,不会每次都断开)
题目五
TCP和UDP各适用于什么场景?为什么视频直播通常使用UDP?
答案: TCP适用于:Web浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP)、数据库连接等需要可靠传输的场景。 UDP适用于:视频直播、语音通话、在线游戏、DNS查询等对实时性要求高、允许少量丢包的场景。 视频直播使用UDP的原因:①实时性要求高,TCP的重传机制会导致延迟;②视频编码本身有一定的容错能力,少量丢包不会严重影响观看体验;③UDP开销小,传输效率高;④直播通常使用RTP/RTCP协议,基于UDP实现。
总结
计算机网络的核心知识可以按层次归纳:
- 物理层与数据链路层:比特传输、以太网帧、MAC地址、交换机工作原理
- 网络层:IP地址与子网划分、ARP协议、路由选择、ICMP协议
- 传输层:TCP的三次握手/四次挥手、可靠传输机制、拥塞控制;UDP的特点和应用场景
- 应用层:HTTP协议(请求方法、状态码)、DNS域名解析过程
学习计算机网络的关键是理解数据的封装和解封装过程——数据从应用层出发,逐层加上协议头部,通过网络传输到目的主机后,再逐层去掉协议头部,最终交给目标应用程序。理解了这个过程,就能把各层的知识串联起来。建议使用 Wireshark 抓包工具实际观察网络数据包,这比单纯的理论学习更直观有效。
文章声明
本文仅供学习和参考,不构成任何投资建议。如有侵权,请联系删除。