TCP与UDP的对比
|
特性 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接 | 无连接 |
| 可靠性 | 提供可靠数据传输 | 不保证数据的可靠性 |
| 数据传输顺序 | 保证数据顺序到达 | 不保证数据的顺序性 |
| 流量控制 | 支持流量控制和拥塞控制 | 不支持流量控制 |
| 头部开销 | 20字节 | 8字节 |
| 适用场景 | 文件传输、网页浏览 | 视频通话、在线游戏 |
三次握手
流程:
假设客户端(Client)要和服务器(Server)建立连接
-
第一次握手 (SYN): Client -> Server: 客户端发送一个SYN报文段,表示请求建立连接
-
第二次握手 (SYN + ACK): Server -> Client: 服务端在接收到客户端的请求后,如果同意连接,服务端会向客户端发送一个SYN+ACK报文段,表示同意建立连接
-
第三次握手 (ACK): Client -> Server: 客户端接收到服务端的响应,最后发送一个ACK响应,表示连接建立完成
四次挥手
流程:
-
FIN:浏览器发送 FIN 包,表示数据发送完毕,请求关闭连接。
-
ACK:服务器回复 ACK 包,表示同意关闭。
-
FIN:服务器也发送 FIN 包,表示自己的数据也发送完毕。
-
ACK:浏览器回复 ACK 包,确认关闭。等待一段时间后,双方连接正式关闭。
HTTP 和 HTTPS 的区别
| 特性 | HTTP | HTTPS |
|---|---|---|
| 默认端口 | 80 | 443 |
| 安全性 | 明文传输,数据未加密,容易被窃听、篡改和冒充 | 加密传输,数据经过加密,安全性高,防止窃听和篡改 |
| 协议层 | 应用层协议 | 在 HTTP 和 TCP 之间加入了 SSL/TLS 安全子层 |
| 工作方式 | 直接与 TCP 通信 | 先与 SSL/TLS 通信,再由 SSL/TLS 与 TCP 通信 |
| 证书 | 不需要数字证书 | 需要向 CA (证书颁发机构) 申请数字证书,用于验证服务器身份 |
| 性能 | 无加密解密开销,速度较快 | 有加密解密和密钥交换开销,速度稍慢 (但现代硬件优化后差距很小) |
核心差异
-
HTTP:是无连接状态的协议,HTTP 直接建立在 TCP(传输控制协议)之上。HTTP 消息通过 TCP 连接直接以明文形式发送。每次请求都需要建立新的 TCP 连接, 请求结束后连接会关闭。客户端直接发送 HTTP 请求给服务器, 如果服务器可用, 就返回 HTTP 响应, 过程简单快速。
-
HTTPS:需要先建立 SSL/TLS 安全连接, 再封装 HTTP 请求。客户端要验证服务器的数字证书和签名 CA, 确保服务器合法后, 通过“SSL 握手”协商加密算法, 建立安全连接。连接建立后才会发送 HTTPS 请求。请求结束也不会关闭连接, 能够复用连接。
安全性
-
HTTP:
-
明文传输:发送和接收的数据都是以原始文本的形式传输。
-
-
HTTPS:
-
加密传输:发送数据前,SSL/TLS 协议会先对数据进行加密,使数据变成一堆乱码
-
数据安全性:SSL/TLS提供完整性校验,确保数据在传输过程中没有被篡改,若被篡改,接收方会发现并丢弃数据包
-
身份认证:验证连接的服务器是与其声称的服务器一致
-
SSL/TLS协议
工作流程:
-
握手:
-
客户端连接到服务器端口
-
双方协商使用加密算法
-
服务器将其数字证书发送给客户端以证明其身份。证书包含服务器的公钥
-
客户端验证证书是否合法有效
-
验证通过后,客户端生成一个预主密钥,并用服务器的公钥加密后发送给服务器
-
服务器用自己的私钥解密得到预主密钥
-
双方根据预主密钥独立计算出相同的会话密钥
-
-
加密通信:
-
握手完成后,双方使用协商好的会话密钥进行对称加密来加密和解密实际传输的 HTTP 数据
-
之所以使用对称加密,是因为它的计算开销比非对称加密小得多,更适合大量数据的加密
-
GET和POST的区别
| 特性 | GET | POST |
|---|---|---|
| 语义 | 获取数据 | 提交数据 |
| 参数位置 | 通过URL传递参数 | 请求体 |
| 参数可见性 | 明文显示在URL中 | 隐藏在请求体中 |
| 数据长度 | 受限(URL长度限制,通常2KB-8KB) | 理论上无限制 |
| 缓存 | 如果请求的是静态资源,会被缓存 | 通常不被缓存 |
| 浏览器历史 | 保留参数 | 不保留请求体参数 |
| 安全性 | 较低(参数暴露) | 相对较高 |
| 幂等性 | 幂等(多次执行结果相同) | 非幂等 |

被折叠的 条评论
为什么被折叠?



