计算机网络核心知识
计算机网络核心知识笔记:从入门到精通,一篇搞定
作为开发人员,不懂计算机网络就像司机不懂汽车发动机原理——能开但遇到问题就抓瞎。这篇笔记把计算机网络最核心、最常用的知识全部梳理清楚,特别是访问网站的完整流程,我会整理成可直接背诵的版本,面试和日常开发都能用得上。
一、计算机网络基础:先搞懂"为什么分层"
计算机网络最核心的设计思想就是分层。把复杂的通信过程拆分成多个独立的层次,每层只负责自己的事情,层与层之间通过接口交互。这样做的好处是:某一层的技术升级不会影响其他层,比如从4G升级到5G,我们的微信和浏览器不需要做任何改动。
1. 两个最重要的分层模型
我们只需要记住这两个模型,其他的了解即可:
| OSI七层模型(理论标准) | TCP/IP四层模型(实际标准) | 核心作用 | 关键协议/设备 |
|---|---|---|---|
| 应用层 | 应用层 | 为用户提供服务 | HTTP、HTTPS、FTP、DNS、SSH |
| 表示层 | 应用层 | 数据格式转换、加密解密 | SSL/TLS |
| 会话层 | 应用层 | 建立和管理会话 | |
| 传输层 | 传输层 | 端到端的数据传输 | TCP、UDP |
| 网络层 | 网络层 | 互联网上的主机寻址 | IP、ICMP、ARP |
| 数据链路层 | 网络接口层 | 局域网内的设备寻址 | 以太网协议 |
| 物理层 | 网络接口层 | 传输二进制比特流 | 网线、光纤、无线电 |
重点记住:实际开发中我们几乎只和应用层和传输层打交道,网络层及以下由操作系统和网络设备处理。
2. 三个核心地址的本质区别
这是最容易混淆的知识点,一定要搞清楚:
- MAC地址:网卡的物理地址,全球唯一,出厂时固化。作用是局域网内找到具体的设备。
- IP地址:逻辑地址,可以动态分配。作用是互联网上找到具体的电脑。分为网络部分(找哪个网络)和主机部分(找网络里的哪台主机)。
- 端口号:一台电脑上有很多程序在运行,端口号用来区分同一台电脑上的不同程序。范围0-65535,常用端口:80(HTTP)、443(HTTPS)、3306(MySQL)、8080(Tomcat)。
二、必须掌握的核心协议
协议就是计算机之间通信的"语言",规定了数据的格式和传输规则。
1. TCP:可靠的传输协议
TCP是面向连接的、可靠的、基于字节流的传输层协议。所谓"可靠",就是保证数据一定能到达对方,不会丢失也不会乱序。
TCP的三大核心机制:
- 三次握手:建立连接(确保双方都能收发数据)
- 确认重传:发送的数据必须得到确认,超时未确认就重传
- 四次挥手:断开连接(确保双方数据都传输完毕)
2. UDP:不可靠但高效的传输协议
UDP是无连接的、不可靠的、基于数据报的传输层协议。它不保证数据一定能到达,也不保证顺序,但传输速度非常快,延迟低。
TCP vs UDP 对比表(必背):
| 特性 | TCP | UDP |
|---|---|---|
| 连接性 | 面向连接 | 无连接 |
| 可靠性 | 可靠,保证数据不丢失、不乱序 | 不可靠,可能丢包、乱序 |
| 速度 | 较慢 | 快 |
| 头部开销 | 20-60字节 | 8字节 |
| 适用场景 | 文件传输、网页浏览、邮件 | 视频通话、直播、游戏 |
3. IP:互联网的基础协议
IP协议负责把数据包从源主机送到目标主机,它是无连接的、不可靠的。IP协议只负责"尽力而为"地传输,不保证数据一定到达,可靠性由上层的TCP协议保证。
4. DNS:互联网的电话簿
DNS(域名系统)的作用是把人类容易记忆的域名(如www.baidu.com)转换成计算机能识别的IP地址(如180.101.50.242)。
三、访问网站的完整流程(背诵版)
这是计算机网络最重要的知识点,没有之一。面试必问,开发必懂。我把它整理成8步背诵版,每一步的核心动作和涉及的协议都标清楚了,直接背就行。
完整流程(详细版)
-
输入URL并解析
用户在浏览器地址栏输入https://www.baidu.com/index.html,浏览器解析URL,提取出:- 协议:
https - 域名:
www.baidu.com - 端口:默认443(HTTPS)
- 路径:
/index.html
- 协议:
-
DNS域名解析
浏览器需要把域名www.baidu.com转换成IP地址,过程如下:- 查浏览器本地缓存 → 查操作系统本地缓存 → 查本地DNS服务器(运营商)
- 本地DNS服务器不知道,就向上级DNS服务器递归查询,直到找到权威DNS服务器
- 最终得到百度服务器的IP地址:
180.101.50.242
-
建立TCP连接(三次握手)
浏览器与百度服务器的443端口建立TCP连接:- 第一次:浏览器发送SYN包,请求建立连接
- 第二次:服务器回复SYN+ACK包,同意建立连接
- 第三次:浏览器发送ACK包,连接建立成功
-
建立TLS/SSL连接(HTTPS专属)
如果是HTTPS协议,还需要在TCP连接之上建立TLS/SSL加密连接,确保数据传输过程中不被窃听和篡改。 -
发送HTTP请求
浏览器向服务器发送HTTP请求,请求行、请求头、请求体(POST请求才有)。GET /index.html HTTP/1.1 Host: www.baidu.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 -
服务器处理请求并返回HTTP响应
服务器的Nginx/Apache接收请求,转发给后台程序(如Tomcat)处理,生成响应数据,然后返回HTTP响应。HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Content-Length: 12345 <!DOCTYPE html> <html> <head><title>百度一下,你就知道</title></head> <body>...</body> </html> -
关闭TCP连接(四次挥手)
数据传输完毕后,双方断开TCP连接:- 第一次:浏览器发送FIN包,请求关闭连接
- 第二次:服务器回复ACK包,同意关闭
- 第三次:服务器发送FIN包,告知浏览器数据已发完
- 第四次:浏览器回复ACK包,连接关闭成功
-
浏览器解析渲染页面
浏览器解析HTML文档,构建DOM树和CSSOM树,合并成渲染树,然后绘制到屏幕上。遇到JS文件会暂停解析,执行JS代码。遇到图片、视频等资源会异步加载。
背诵版(精简8步)
- 输入URL,浏览器解析
- DNS解析,得到IP
- TCP三次握手,建立连接
- HTTPS建立TLS加密连接
- 发送HTTP请求
- 服务器处理,返回HTTP响应
- TCP四次挥手,关闭连接
- 浏览器解析渲染页面
四、常见网络问题排查
掌握这些命令,遇到网络问题时能快速定位:
1. 常用网络命令
ipconfig(Windows)/ifconfig(Linux):查看本机IP地址、MAC地址等网络信息ping 目标IP/域名:测试本机与目标主机是否连通tracert 目标IP/域名:追踪数据包从本机到目标主机经过的所有路由器节点netstat -an:查看本机所有的网络连接和端口占用情况nslookup 域名:手动查询域名对应的IP地址
2. 常见HTTP状态码(必背)
- 2xx 成功:200 OK(请求成功)
- 3xx 重定向:301 Moved Permanently(永久重定向)、302 Found(临时重定向)、304 Not Modified(缓存有效)
- 4xx 客户端错误:400 Bad Request(请求参数错误)、401 Unauthorized(未授权)、403 Forbidden(禁止访问)、404 Not Found(资源不存在)
- 5xx 服务器错误:500 Internal Server Error(服务器内部错误)、502 Bad Gateway(网关错误)、503 Service Unavailable(服务不可用)
五、总结
计算机网络的核心就是数据如何从一台电脑的一个程序,准确、高效地传输到另一台电脑的另一个程序。所有的协议、设备、机制都是围绕这个核心目标设计的。
学习计算机网络不要死记硬背协议的细节,而是要理解整个数据流的过程。当你能清晰地说出从输入URL到页面显示的每一步发生了什么,你就真正掌握了计算机网络的精髓。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)