在浏览器输入URL发生了什么

一、DNS 域名解析 —— 获取IP地址

  • 什么叫DNS域名解析:大白话,就是将URL解析成对应的IP
  • 浏览器DNS域名解析顺序:

    本地hosts文件查询对应IP,如果有有,告诉浏览器去访问对应的IP
    如果没有,去DNS服务器寻找

  • DNS服务器层次结构
DNS服务器层次结构
  • DNS服务器递归查询和迭代查询
DNS服务器递归查询和迭代查询
  • 客户端首先,拿着域名去本地hosts递归查询,如果查询到了www.cnblogs.com对应的IP之后,直接执行第8步,后面就不需要去根DNS服务器查询IP了
  • 如果本地没有查询到IP,就去根DNS服务器,根DNS服务器注意到其com后缀,于是向本地DNS服务器返回comDNS服务器的IP地址。本地DNS服务器再次向comDNS服务器发送查询请求,comDNS服务器注意到其www.cnblogs.com后缀并用负责该域名的权威DNS服务器的IP地址作为回应。最后,本地DNS服务器将含有www.cnblogs.com的IP地址的响应报文发送给客户端。

二、建立TCP链接 —— 三次握手结束,连接成功

找到了IP,我们就开始建立TCP连接

  • 与服务器连接(三次握手)


    三次握手

客户端发送一个带有SYN标志的数据包给服务端,服务端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息,最后客户端再回传一个带ACK标志的数据包,代表握手结束,连接成功。

三、发送HTTP请求 —— 发送请求 request

请求包含:行头体

POST Http://www.xxx.com HTTP/1.1
Connection: keep-alive
Content-Length: 612
Accept: application/json, text/plain, */*
Origin: http://192.168.5.104:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://192.168.5.104:8080/businessView
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: OUTFOX_SEARCH_USER_ID_NCOO=1076356267.7392054
{a:1,b:1}

四、服务器处理请求 —— 后端获取HTTP请求,根据需求处理

这个太灵活了,自行发挥想象后端小哥如何处理前端给来的数据,大概流程图


HTTP一条龙流程图

五、返回响应结构 —— HTTP响应

响应和请求差不多,包含行头体

HTTP/1.1 504 Gateway Timeout
X-Powered-By: Express
Date: Mon, 09 Dec 2019 01:20:50 GMT
Connection: keep-alive
Transfer-Encoding: chunked

六、关闭TCP连接

为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求。与创建TCP连接的3次握手类似,关闭TCP连接,需要4次握手。


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容