在浏览器输入url,按下回车后究竟发生了什么

这是一个经典的网络问题:在浏览器输入url,按下回车后究竟发生了什么?

浏览器输入域名后

1、浏览器通过DNS将url地址解析为ip(如果有缓存直接返回缓存,否则递归解析)

2、通过DNS解析得到了目标服务器的IP地址后,与服务器建立TCP连接

    ip协议:选择传输路线,负责找到

    tcp协议:三次握手,分片、可靠传输、重新发送的机制

TCP3次握手连接:浏览器所在的客户机向服务器发出连接请求报文(SYN标志为1);服务器接收报文后,同意建立连接,向客户机发出确认报文(SYN,ACK标志位均为1);客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;此处客户机与服务器之间的TCP连接建立完成,开始通信。

3、浏览器通过http协议发送请求(增加http的报文信息)

浏览器向主机发起一个HTTP-GET方法报文请求。请求中包含访问的URL,也就是输入的网址。Cookies如果是首次访问,会提示服务器建立用户缓存信息,如果不是,可以利用Cookies对应键值,找到相应缓存,缓存里面存放着用户名,密码和一些用户设置项。

4、某些服务会做永久重定向响应

重定向的作用:重定向是为了负载均衡或者导入流量,提高SEO排名。

5、浏览器跟踪重定向地址
当浏览器知道了重定向后最终的访问地址之后,重新发送一个http请求,发送内容同上。

6、服务器接收请求后,查库,读文件,拼接好返回的http响应
返回状态码200 ,表示服务器可以响应请求,返回报文,由于在报头中Content-type为“text/html”,浏览器以HTML形式呈现,而不是下载文件。

7、释放TCP连接

  1. 浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;
    
  2. 服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;
    
  3. 服务器数据传输完毕后,向客户机发送连接释放报文;
    
  4. 客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;
    

8、浏览器收到html,开始渲染,解析,浏览器显示页面

9、浏览器发送获取嵌入在HTML中的其他内容
比如一些样式文件,图片url,js文件url等,浏览器会通过这些url重新发送请求,请求过程依然是HTML读取类似的过程,查询域名,发送请求,重定向等。不过这些静态文件是可以缓存到浏览器中的,有时访问这些文件不需要通过服务器,直接从缓存中取。

发布了45 篇原创文章 · 获赞 50 · 访问量 2037

猜你喜欢

转载自blog.csdn.net/zhaoyi666/article/details/105444567