前端实习面试准备-一次完整的http事务过程

207 阅读2分钟

一次完整的HTTP事务涉及从客户端发起请求到服务器响应完成的整个过程,主要包括以下几个步骤:

  1. 域名解析(DNS Lookup)

    • 客户端浏览器首先需要将URL中的域名转换为IP地址。这个过程通过DNS(域名系统)查询来实现。
    • 如果本地缓存中没有该域名对应的IP地址,则会递归或迭代地向DNS服务器发出查询请求。
  2. TCP连接建立(TCP Handshake)

    • 获取到服务器的IP地址后,客户端与服务器之间开始进行三次握手建立TCP连接,确保双方都能可靠通信。
    • 这通常涉及到SYN、SYN-ACK和ACK三个数据包的交换。
  3. HTTP请求发送

    • 建立好TCP连接后,客户端构造一个HTTP请求报文,包括请求行(方法、URI、HTTP版本)、头部信息(如User-Agent、Host、Accept等)和可能存在的请求体,并将其发送给服务器。
  4. 服务器处理请求

    • 服务器接收到HTTP请求后,根据请求行的方法(GET、POST、PUT、DELETE等)和URI来定位资源并执行相应操作。
    • 服务器处理请求的过程中,可能会检查请求头里的条件请求字段,例如If-Modified-SinceIf-None-Match用于判断是否返回内容或返回304 Not Modified响应。
  5. 生成HTTP响应

    • 处理完成后,服务器构建HTTP响应报文,包括状态行(HTTP版本、状态码、状态描述)、响应头部(如Content-Type、Last-Modified、ETag等)和响应体(即实际要返回的内容,可能是HTML、JSON、图片或其他媒体类型)。
  6. 传输响应

    • 服务器将HTTP响应报文通过已建立的TCP连接发送给客户端。
  7. 关闭TCP连接或保持连接

    • 根据HTTP协议版本(比如HTTP/1.0默认每个请求结束后关闭连接,而HTTP/1.1支持持久连接,默认可以复用连接)以及请求和响应头中的Connection字段决定是否关闭连接。
  8. 客户端接收响应及后续处理

    • 客户端接收到HTTP响应后,解析响应报文,提取状态码和响应体内容。
    • 对于HTML页面,浏览器开始解析HTML代码,并对其中引用的其他资源(CSS、JavaScript、图片等)发起新的HTTP请求。
    • 浏览器根据HTML、CSS和JavaScript渲染并显示页面内容。
  9. 渲染页面

    • 当所有必要的资源下载完毕,浏览器按照DOM结构、CSS样式和脚本执行的结果将页面内容呈现给用户。