本文共 1546 字,大约阅读时间需要 5 分钟。
GET 和 POST 的区别
GET 和 POST 是两种常见的 HTTP 请求方法,适用于不同的场景。以下是它们的主要区别:
GET 请求
- 查询字符串:GET 请求的查询字符串位于 URL 中,例如:
/test/demo_form.asp?name1=value1&name2=value2 - 缓存:GET 请求可以被缓存,容易导致浏览器历史记录和缓存数据的重复使用
- 无状态:GET 请求是无状态的,不能用于状态管理
- 长度限制:GET 请求通常有字节限制,可能导致数据传输受限
- 适用场景:获取数据或资源
POST 请求
DNS 使用的协议
DNS(域名系统)主要使用 TCP 和 UDP 两种协议。
TCP 与 UDP 的区别
- TCP:连接性协议,提供可靠的数据传输,适合区域传送和数据同步。
- UDP:无连接性协议,速度快,适合域名解析和小数据传输。
DNS 查询的协议选择
- 区域传送:使用 TCP 协议,由于数据量大且需要可靠传输。
- 域名解析:使用 UDP 协议,由于数据量小且不需要连接性。
幂等操作
一个幂等操作可以多次执行而不导致系统状态的变化。例如:
getUsername():返回当前用户的用户名,不会改变系统状态。 setTrue():将一个布尔值设为 true,多次执行不会改变结果。
Cookies 和 Session 的区别
- Cookies:客户端存储的小型数据片段,用于跟踪用户状态。
- Session:服务器管理的唯一标识符,用于跟踪用户状态。
TCP 粘包与拆包的原因
- 数据大小:应用程序发送的数据大小超过套接字缓冲区。
- MSS(最大报文段长度):TCP 在传输过程中会将数据分成多个报文段。
- IP 分片:当数据包大小超过 MTU 时,IP 层会进行分片。
TCP 粘包与拆包的解决策略
- 消息定长:在数据包尾部添加特殊字符(如空格)进行分割。
- 消息头和尾:添加消息头和尾标识数据边界。
- 复杂协议:如 FTP、RTMP 等协议采用特定格式进行数据传输。
TCP 三次握手
第一次握手:客户端发送 SYN 包,服务器返回 SYN-ACK。 第二次握手:服务器发送 ACK 包,客户端返回 ACK。 第三次握手:客户端和服务器建立连接。 TCP 四次挥手
客户端发送 FIN:进入 FIN_WAIT1 状态。 服务器发送 ACK:进入 CLOSE_WAIT 状态。 服务器发送 FIN:进入 LAST_ACK 状态。 客户端发送 ACK:进入 TIME_WAIT 状态,服务器进入 CLOSE 状态。 长连接
HTTP 1.1 支持长连接,客户端和服务器保持 TCP 连接不关闭。服务器响应包含 Connection: keep-alive 头部。
HTTP 请求过程
域名解析:通过 DNS 查询获取服务器 IP 地址。 TCP 三次握手:建立连接。 HTTP 请求:发送 HTTP 请求。 响应处理:服务器返回 HTTP 响应,浏览器解析并渲染页面。 HTTPS 数据安全
SSL/TLS 加密:在 HTTP 和 TCP 之间添加加密层,确保数据传输安全。 认证和密钥管理:通过证书验证客户端和服务器身份,确保通信安全。 转载地址:http://ocqfk.baihongyu.com/