计算机网络核心知识笔记:从入门到精通,一篇搞定

作为开发人员,不懂计算机网络就像司机不懂汽车发动机原理——能开但遇到问题就抓瞎。这篇笔记把计算机网络最核心、最常用的知识全部梳理清楚,特别是访问网站的完整流程,我会整理成可直接背诵的版本,面试和日常开发都能用得上。

一、计算机网络基础:先搞懂"为什么分层"

计算机网络最核心的设计思想就是分层。把复杂的通信过程拆分成多个独立的层次,每层只负责自己的事情,层与层之间通过接口交互。这样做的好处是:某一层的技术升级不会影响其他层,比如从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步背诵版,每一步的核心动作和涉及的协议都标清楚了,直接背就行。

完整流程(详细版)

  1. 输入URL并解析
    用户在浏览器地址栏输入https://www.baidu.com/index.html,浏览器解析URL,提取出:

    • 协议:https
    • 域名:www.baidu.com
    • 端口:默认443(HTTPS)
    • 路径:/index.html
  2. DNS域名解析
    浏览器需要把域名www.baidu.com转换成IP地址,过程如下:

    • 查浏览器本地缓存 → 查操作系统本地缓存 → 查本地DNS服务器(运营商)
    • 本地DNS服务器不知道,就向上级DNS服务器递归查询,直到找到权威DNS服务器
    • 最终得到百度服务器的IP地址:180.101.50.242
  3. 建立TCP连接(三次握手)
    浏览器与百度服务器的443端口建立TCP连接:

    • 第一次:浏览器发送SYN包,请求建立连接
    • 第二次:服务器回复SYN+ACK包,同意建立连接
    • 第三次:浏览器发送ACK包,连接建立成功
  4. 建立TLS/SSL连接(HTTPS专属)
    如果是HTTPS协议,还需要在TCP连接之上建立TLS/SSL加密连接,确保数据传输过程中不被窃听和篡改。

  5. 发送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
    
  6. 服务器处理请求并返回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>
    
  7. 关闭TCP连接(四次挥手)
    数据传输完毕后,双方断开TCP连接:

    • 第一次:浏览器发送FIN包,请求关闭连接
    • 第二次:服务器回复ACK包,同意关闭
    • 第三次:服务器发送FIN包,告知浏览器数据已发完
    • 第四次:浏览器回复ACK包,连接关闭成功
  8. 浏览器解析渲染页面
    浏览器解析HTML文档,构建DOM树和CSSOM树,合并成渲染树,然后绘制到屏幕上。遇到JS文件会暂停解析,执行JS代码。遇到图片、视频等资源会异步加载。

背诵版(精简8步)

  1. 输入URL,浏览器解析
  2. DNS解析,得到IP
  3. TCP三次握手,建立连接
  4. HTTPS建立TLS加密连接
  5. 发送HTTP请求
  6. 服务器处理,返回HTTP响应
  7. TCP四次挥手,关闭连接
  8. 浏览器解析渲染页面

四、常见网络问题排查

掌握这些命令,遇到网络问题时能快速定位:

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到页面显示的每一步发生了什么,你就真正掌握了计算机网络的精髓。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐