博客
关于我
十五道java开发常遇到的计算机网络协议高频面试题
阅读量:796 次
发布时间:2023-03-22

本文共 1546 字,大约阅读时间需要 5 分钟。

GET 和 POST 的区别

GET 和 POST 是两种常见的 HTTP 请求方法,适用于不同的场景。以下是它们的主要区别:

GET 请求

  • 查询字符串:GET 请求的查询字符串位于 URL 中,例如:/test/demo_form.asp?name1=value1&name2=value2
  • 缓存:GET 请求可以被缓存,容易导致浏览器历史记录和缓存数据的重复使用
  • 无状态:GET 请求是无状态的,不能用于状态管理
  • 长度限制:GET 请求通常有字节限制,可能导致数据传输受限
  • 适用场景:获取数据或资源

POST 请求

  • 查询字符串:POST 请求的查询字符串位于 HTTP 请求的消息主体中,例如:
    POST /test/demo_form.asp HTTP/1.1
    Host: w3schools.com
    name1=value1&name2=value2
  • 不缓存:POST 请求不会被缓存,确保数据传输的安全性
  • 状态管理:POST 请求适合用于状态管理,常用于表单提交
  • 数据长度: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/

    你可能感兴趣的文章
    Objective-C实现牛顿下山法(附完整源码)
    查看>>
    Objective-C实现牛顿插值法(附完整源码)
    查看>>
    Objective-C实现牛顿法求一个数的平方根算法 (附完整源码)
    查看>>
    Objective-C实现牛顿法算法(附完整源码)
    查看>>
    Objective-C实现牛顿迭代法(附完整源码)
    查看>>
    Objective-C实现特征脸算法(附完整源码)
    查看>>
    Objective-C实现状态模式(附完整源码)
    查看>>
    Objective-C实现狄克斯特拉算法(附完整源码)
    查看>>
    Objective-C实现狄克斯特拉算法(附完整源码)
    查看>>
    Objective-C实现猜数字游戏(附完整源码)
    查看>>
    Objective-C实现猜数字算法(附完整源码)
    查看>>
    Objective-C实现猴子爬山算法(附完整源码)
    查看>>
    Objective-C实现环形缓冲区(附完整源码)
    查看>>
    Objective-C实现生产者和消费者问题(附完整源码)
    查看>>
    Objective-C实现生产者消费者问题(附完整源码)
    查看>>
    Objective-C实现生成 Mandelbrot 曼德勃罗集图像算法 (附完整源码)
    查看>>
    Objective-C实现生成崩溃dump文件 (附完整源码)
    查看>>
    Objective-C实现生成数组的所有不同排列算法(附完整源码)
    查看>>
    Objective-C实现生成正态分布数据(附完整源码)
    查看>>
    Objective-C实现生成随机高斯分布(附完整源码)
    查看>>