【爬虫入门第1讲】计算机网络基础
计算机网络基础:从HTTP到HTTPS,一篇搞懂核心概念
一、网络分层模型:先搞懂“应用层”的位置
在计算机网络中,最经典的是OSI七层模型和TCP/IP四层模型。OSI七层从下到上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。而实际工程中更常用的是TCP/IP四层模型:网络接口层、网络层(IP)、传输层(TCP/UDP)、应用层(HTTP、FTP、DNS等)。
今天要讲的HTTP协议就位于应用层,它直接面向用户,负责浏览器和服务器之间的数据传输。简单理解,应用层就是“外卖APP”,用户通过它下单;而传输层(TCP)就像“快递公司”,负责把数据可靠地送到目的地。
二、HTTP协议基础:请求与响应
1. 什么是HTTP?
HTTP全称超文本传输协议(HyperText Transfer Protocol),是基于TCP的应用层协议,属于无状态、无连接的请求-响应式协议,主要用于浏览器和服务器之间传输超文本资源(HTML、CSS、JS、图片等)。
2. HTTP请求的完整流程
当你在浏览器输入网址并回车时,背后发生了这些事:
- DNS解析:将域名(如www.example.com)解析为IP地址
- 建立TCP连接:通过三次握手建立可靠连接
- 发送HTTP请求:浏览器构造请求报文发送给服务器
- 服务器处理请求:解析请求,处理业务逻辑
- 服务器返回响应:构造响应报文返回给客户端
- 关闭TCP连接(或保持长连接)
- 浏览器解析响应:解析HTML、CSS、JS等资源
- 页面渲染:生成DOM树、CSSOM树,完成布局和绘制
3. HTTP请求报文结构
一个HTTP请求由三部分组成:
① 请求行:包含请求方法、请求URL、HTTP协议版本
GET /index.html HTTP/1.1
② 请求头:键值对格式,传递附加信息
常见请求头包括:
Host:服务器主机名User-Agent:客户端信息(浏览器类型、版本等)Accept:客户端能接收的MIME类型Cookie:存储的用户状态信息Authorization:身份认证信息(如Token)Content-Type:请求体类型(如application/json)Referer:请求来源页面地址Content-Length:请求体长度
③ 空行 + 请求体:GET请求无请求体,POST等方法的请求体存放表单数据、JSON等
4. HTTP响应报文结构
响应也包含三部分:
① 状态行:协议版本 + 状态码 + 状态描述
HTTP/1.1 200 OK
② 响应头:常见的有Content-Type、Content-Length、Cache-Control、Set-Cookie、Server等
③ 空行 + 响应体:返回的数据,如HTML、JSON、图片等
三、GET vs POST:核心区别
GET和POST是HTTP最常用的两种方法,它们的本质区别如下:
| 对比项 | GET | POST |
|---|---|---|
| 参数位置 | URL之后,以?分割,参数间用&连接 | 请求体body中 |
| 安全性 | 参数可见,不安全(如密码会显示在URL中) | 相对安全,数据在请求体中 |
| 数据大小 | 较小,受浏览器URL长度限制 | 较大,理论上无限制 |
| 缓存性 | 可被浏览器缓存 | 默认不缓存 |
| 幂等性 | 幂等(多次执行结果相同) | 非幂等 |
| 用途 | 获取/读取资源 | 提交/创建数据 |
四、常见HTTP状态码
状态码用来告诉客户端请求的处理结果,分为5大类:
2xx 成功类
- 200 OK:请求成功,正常返回数据
- 201 Created:资源创建成功(POST/PUT)
- 204 No Content:请求成功,但无响应体返回
3xx 重定向类
- 301 Moved Permanently:永久重定向(域名更换)
- 302 Found:临时重定向
- 304 Not Modified:资源未修改,使用缓存(协商缓存核心状态码)
4xx 客户端错误类
- 400 Bad Request:请求参数或格式错误
- 401 Unauthorized:未授权,需登录或验证Token
- 403 Forbidden:禁止访问,权限不足
- 404 Not Found:请求资源不存在
- 405 Method Not Allowed:请求方法不支持
- 418 I’m a Teapot:这是一个有趣的“彩蛋”状态码,来自IETF的愚人节玩笑(超文本咖啡壶控制协议),表示“我是一个茶壶”,不能煮咖啡
5xx 服务器错误类
- 500 Internal Server Error:服务器内部错误
- 502 Bad Gateway:网关错误(上游服务异常)
- 503 Service Unavailable:服务器过载或维护中
- 504 Gateway Timeout:上游服务超时
五、请求组成详解
1. 请求头关键字段
- User-Agent(UA):标识客户端信息,如浏览器类型、版本、操作系统等。爬虫常通过修改UA来模拟真实浏览器访问
- Cookie:浏览器存储的小数据,每次请求自动携带,用于维持用户状态
- Referer:标识请求来源页面,常用于防盗链、统计来源
- Authorization:携带身份认证信息,如Bearer Token
2. 请求参数与请求体
- params(查询参数):GET请求的参数,放在URL的
?后面,如?page=1&size=10 - data(表单数据):POST请求中,表单提交的数据格式为
key1=value1&key2=value2 - json(JSON数据):POST请求中,以
application/json格式提交的数据,如{"name":"John","age":30}
六、Cookie、Session、Token、JWT的区别
这是面试中的高频考点,我们来逐一理清:
Cookie
- 存储位置:浏览器端
- 作用:浏览器保存的小数据,每次请求自动发送给服务器
- 典型用途:保存session_id、登录状态、业务信息
- 注意:Cookie只是传输载体,本身不是身份验证机制
Session
- 存储位置:服务器端
- 原理:数据存在服务器,浏览器只保存一个session_id(通常存在Cookie中),服务器根据session_id查找用户数据
- 典型流程:用户登录 → 服务器创建Session并返回session_id → 浏览器存到Cookie → 后续请求携带Cookie → 服务器验证session_id
Token
- 存储位置:客户端(浏览器、APP等)
- 原理:服务器生成一个令牌,客户端保存并在每次请求时通过Authorization头携带
- 优点:无状态,服务器不需要存储会话信息,适合分布式系统
JWT(JSON Web Token)
- 本质:一种特殊的Token格式,包含三部分:Header(头部)、Payload(载荷)、Signature(签名)
- 特点:自包含(用户信息编码在Token中)、可验证(通过签名防篡改)、无状态
- 典型流程:用户登录 → 服务器生成JWT返回 → 客户端保存 → 后续请求携带 → 服务器验证签名
总结对比
| 机制 | 存储位置 | 状态 | 适用场景 |
|---|---|---|---|
| Cookie | 浏览器 | 有状态 | 传统Web应用 |
| Session | 服务器 | 有状态 | 需要服务端存储用户数据 |
| Token | 客户端 | 无状态 | 分布式系统、移动端 |
| JWT | 客户端 | 无状态 | 自包含用户信息,适合API认证 |
七、HTTP的无状态原理
HTTP协议是无状态的,这意味着协议本身不保存客户端和服务器之间的通信状态,每次请求都是独立的,服务器无法识别连续请求是否来自同一客户端。
为什么设计成无状态? 因为这样简化了服务器设计,每个请求都可以独立处理,不需要维护复杂的会话信息。
如何解决无状态问题? 通过Cookie + Session或Token机制来“模拟”状态。比如用户登录后,服务器创建一个Session,将session_id通过Cookie返回给浏览器,后续请求携带这个Cookie,服务器就能识别用户身份。
八、HTTPS:安全的HTTP
1. HTTP vs HTTPS
| 对比项 | HTTP | HTTPS |
|---|---|---|
| 安全性 | 明文传输,易被窃听、篡改 | 加密传输,数据安全 |
| 默认端口 | 80 | 443 |
| 连接流程 | 简单 | 多了SSL/TLS握手 |
| 资源消耗 | 低 | 需要加密解密,消耗更多资源 |
| 证书 | 不需要 | 需要CA机构颁发的SSL证书 |
2. HTTPS加密原理(简单了解)
HTTPS采用对称加密 + 非对称加密结合的混合加密方式:
- 非对称加密:服务器有公钥和私钥,公钥加密只能私钥解密,用于安全传输对称密钥
- 对称加密:双方用同一把密钥加密解密数据,效率高,用于实际数据传输
- 数字证书:由CA机构颁发,包含服务器公钥和数字签名,用于验证服务器身份,防止中间人攻击
SSL/TLS握手简化流程:
- 客户端发起请求,携带支持的TLS版本和加密套件
- 服务器返回SSL证书(含公钥)
- 客户端验证证书合法性
- 客户端生成对称密钥,用服务器公钥加密后发送
- 服务器用私钥解密,获得对称密钥
- 后续所有数据用对称密钥加密传输
3. 其他相关概念
- 端口:HTTP默认80,HTTPS默认443
- DNS:域名系统,将域名解析为IP地址,查询顺序为:浏览器缓存 → 系统缓存 → 路由器缓存 → DNS服务器
- 代理IP:通过代理服务器转发请求,可以隐藏真实IP、突破访问限制
- SSL证书:由CA机构颁发,用于验证网站身份和加密通信,有免费(如Let’s Encrypt)和付费两种
九、总结
今天我们系统学习了计算机网络的基础知识,重点包括:
- 网络分层:HTTP位于应用层,基于TCP传输
- HTTP请求/响应:请求行、请求头、请求体;状态行、响应头、响应体
- GET vs POST:参数位置、安全性、大小、缓存、幂等性
- 状态码:200成功、301/302重定向、403禁止、404未找到、500服务器错误、418茶壶彩蛋
- 请求组成:UA、Cookie、Referer、Token等请求头;params、data、json等参数
- 状态管理:Cookie(浏览器存储)、Session(服务器存储)、Token/JWT(无状态认证)
- HTTP无状态:每次请求独立,通过Cookie/Session维持状态
- HTTPS:加密传输,混合加密(非对称+对称),需要SSL证书
希望这篇博客能帮你建立起对HTTP/HTTPS协议的系统认知。如果你有任何疑问,欢迎在评论区留言讨论
更多推荐
所有评论(0)