重要概念
seq ( Squence Number ) 序列号,用于数据排序、去重,防止数据包乱序
ack ( Acknowledgement Number ) 确认好,表示期望接受的下一个字节序号,用于确认数据包被对方接受
TCP三次握手是建立可靠连接的过程,确保客户端和服务器都能正常收发数据
第一次握手(SYN:Synchronize 同步的缩写)
SYN表示请求建立连接
从客户端向服务器发送 SYN=1,序列号seq=x ,客户端进入 SYN_SENT 状态
第二次握手(SYN+ACK:ACK是 Acknowledgement 确认的缩写)
ACK表示"收到了你发的数据"
从服务器端向客户端发送 SYN=1,ACK=1,序列号seq=y,ack=x+1 ,服务器进入 SYN_RCVD (received)状态
第三次握手(ACK)
从客户端向服务器端发送 ACK=1,seq=x+1,ack=y+1
双方进入 ESTABLISHED 状态,表示双方的连接已经成功建立了,可以进行数据传输了
三次握手的意义
- 确认双方收发能力:验证客户端和服务器都能正常发送和接收数据
- 防止历史连接:避免因网络延迟导致的重复连接
- 同步序列号:建立可靠的数据传输基础
TCP四次握手是断开连接的过程,确保数据完整传输后安全关闭连接
第一次握手(FIN)
从客户端向服务器端发送 FIN=1(表示客户端主动关闭不再发送数据),seq=u
客户端进入 FIN_WAIT_1 状态
第二次握手(ACK)
从服务器端向客户端发送 ACK=1(表示收到关闭请求),seq=v,ack=u+1
服务器进入 CLOSE_WAIT 状态,客户端进入 FIN_WAIT_2 状态
第三次握手(FIN)
从服务器端向客户端发送 FIN=1 (服务器也准备关闭), ACK=1 ,ack=u+1
服务器进入LAST_ACK状态
第四次握手(ACK)
从客户端向服务器端发送 ACK=1(最后确认完成关闭)seq=u+1 ,ack=w+1
客户端进入 TIME_WAIT 状态,服务器进入 CLOSED 状态
为什么是四次而不是三次?
-
半关闭状态 :TCP连接是全双工的 ,需要分别关闭两个方向的数据流
-
数据完整性:服务器可能还有数据要发送,需要时间处理
-
ACK和FIN分离:服务器的ACK和FIN可能不能同时发送
应用层 ← HTTP、FTP、SMTP、DNS、HTTPS
传输层 ← TCP、UDP、TLS/SSL
网络层 ← IP、ICMP、ARP
链路层 ← 网卡驱动、以太网协议等
层级 | 名称 | 主要功能 | 举例 |
---|---|---|---|
应用层 | 用户用的 | 定义通信内容与格式 | HTTP、FTP、SMTP、DNS |
传输层 | 快递员 | 控制数据传输的可靠性、完整性和顺序 | TCP、UDP、TLS |
网络层 | 地图 | 确定数据从哪儿到哪儿(IP地址) | IP、ICMP、ARP |
链路层 | 路线 | 实际在网卡之间传输比特流 | Ethernet、WiFi 等 |
SSL 是建立在 TCP 之上的安全协议,负责加密通信内容,而 TCP 负责可靠传输。
TCP是在传输层,SSL在传输层和应用层si
( 现在一般更新为 TLS)
HTTP 是一种应用层协议,全称为:
HyperText Transfer Protocol(超文本传输协议)
它定义了 浏览器与服务器之间如何传输网页数据,是万维网(WWW)中最核心的协议之一。
🧩 HTTP 是干什么的?
-
📥 浏览网页
-
📤 提交表单
-
📸 加载图片、音频、视频
-
🧾 请求 API 接口
简而言之:
浏览器和服务器之间"说话"的语言就是 HTTP。
🚧 HTTP 工作流程(简化):
每次你访问一个网页(如 http://example.com)时,背后其实发生了:
浏览器 → 请求数据(HTTP 请求)
服务器 → 响应数据(HTTP 响应)
📦 HTTP 请求结构:
包含 3 部分:
1. 请求行: GET /index.html HTTP/1.1
2. 请求头: Host, User-Agent, Cookie ...
3. 请求体: (POST请求时的表单数据或JSON)
📦 HTTP 响应结构:
也分为 3 部分:
1. 状态行: HTTP/1.1 200 OK
2. 响应头: Content-Type, Set-Cookie, Content-Length ...
3. 响应体: HTML 页面、JSON 数据等
✅ 常见 HTTP 方法(请求方式):
方法 | 含义 | 举例用途 |
---|---|---|
GET | 获取资源 | 浏览网页 |
POST | 提交数据 | 登录、注册表单 |
PUT | 更新资源 | 修改用户信息 |
DELETE | 删除资源 | 删除账号 |
🚥 常见 HTTP 状态码:
状态码 | 含义 |
---|---|
200 | 请求成功 |
301 | 永久重定向 |
404 | 资源未找到 |
500 | 服务器内部错误 |
403 | 禁止访问 |
❌ HTTP 的缺点:
-
数据 明文传输(不安全)
-
无法验证服务器身份
-
易受中间人攻击(MITM)
所以后来出现了 HTTPS(加密版 HTTP) 👉 就是 HTTP + SSL/TLS
📌 小结:
协议 | 层级 | 是否加密 | 用途 |
---|---|---|---|
HTTP | 应用层 | ❌ 明文 | 浏览网页、接口通信 |
HTTPS | 应用层 | ✅ 加密 | 安全地传网页数据 |
TCP | 传输层 | ❌ | 可靠传输数据 |
HTTPS = HTTP + SSL/TLS 的组合协议 ,用于实现 加密的网页通信。
🔁 HTTPS 建立过程(简化图解):
-
TCP 三次握手:建立连接
-
TLS 握手:协商加密算法、密钥,验证服务器身份(SSL的核心)
-
HTTP 数据加密传输:正式发送加密的 HTTP 请求/响应