当你输入网址,小手一点,然后发生了什么?

时间:2023-01-12 18:10:09
摘要:输入网址并点回车,后台到底发生了什么。透析 HTTP 协议与 TCP 连接之间的千丝万缕的关系。掌握为何是三次握手四次挥手?time_wait 存在的意义是什么?全面图解重点问题,再也不用担心面试问这个问题。

本文分享自华为云社区《输入网址,小手一点,后面到底发生了什么?》,作者:龙哥手记。

输入网址并点回车,后台到底发生了什么。透析 HTTP 协议与 TCP 连接之间的千丝万缕的关系。掌握为何是三次握手四次挥手?time_wait 存在的意义是什么?全面图解重点问题,再也不用担心面试问这个问题。

大致流程

  • URL 解析,解析 http 协议、端口、资源地址。
  • DNS 查询:首先查询本地 host,再访问 DNS 服务器将 域名解析成 ip 地址。
  • 建立 TCP 连接。
  • 服务器收到请求后处理,并且构造响应返回给客户端。
  • 客户端接收 HTTP 报文响应。
  • 渲染页面,最后有可能会四次挥手断开连接,也可能不会而是复用连接。

重点来了:

  • 如何理解 TCP 的三次握手与四次挥手?每次握手客户端与服务端是怎样的状态?
  • 为何挥手会出现 2MSL,遇到大量 Socket 处在 TIME_WAIT 或者 CLOSE_WAIT 状态是什么问题?
  • 三次握手与四次挥手的过程是怎样的?
  • HTTP 的报文格式又是怎样的?

URL 解析

url 遵守的规则是这个样子

scheme://host.domain:port/path/filename