浏览器输入URL后干了什么?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_37964044/article/details/82017007

1.URL格式的解析

一个URL包括协议,网络地址,资源路径

协议:最常用的比如HTTP(超文本传输协议)FTP(文件传输协议)

网络地址:可以是域名或者ip地址,包括端口号,如果没有默认为80

资源路径:可以是多种多样的

2.浏览器将域名解析为ip地址   

例如:baidu.com就是域名

1.先到各种缓存信息中查找
先到浏览器缓存记录中查找------浏览器会缓存DNS一段时间
系统缓存-----如果浏览器中没有找到,浏览器会有一个系统调用,获得系统缓存中的记录
路由器缓存-----接着将请求发给路由器,路由器一般也有自己的DNS缓存
2.DNS服务器查找
没有则发送请求到本地域名服务器每一个本地域名服务器都维护一个高速缓存,存放最近用过的域名及其IP地址
如果还没有则发出递归查询(本地服务器请求比他高一级的服务器,如此递归直到根域名服务器,肯定能找到这个服务器的IP地址)
通过这个IP可以找到客户端到服务器端的唯一路径

3.浏览器主机根据ip地址与服务器建立TCP连接。

浏览器向服务器端发送SYN连接请求,经过服务器与浏览器三次报文的交互连接建立完成,就可以发送数据了

我以前不明白为什么要先建立TCP连接,HTTP是比TCP更高层次的应用层协议,根据协议规定,只有低层协议建立之后才能建立高层协议,因此首先要建立TCP连接

4.浏览器向WEB服务器发送一个http请求报文,通过TCP协议发送给服务器

根据HTTP协议的要求,组织一个HTTP数据包,向服务器发送HTTP请求,HTTP的请求报头有请求行和请求报头,空行。

请求行:请求方法  我们要访问的资源  版本号

请求报头:由键值对组成,中间用:隔开

空行:

https://blog.csdn.net/baidu_37964044/article/details/81159745

5.服务器收到请求并响应,生成一个HTTP响应报文,通过TCP协议发送给浏览器主机

通过HTTP请求服务后,服务器会像浏览器返回一个应答信息----------HTTP响应,

http响应包括:

响应行:版本号   状态码  状态码描述

响应报头:键值对

空行:

响应正文:

注意:如果服务器返回的响应是3XX,代表重定向,要转到第五步

6.浏览器跟踪重定向地址

现在浏览器知道了真正要访问的目标服务器在哪里,就直接可以发送如同第四部的HTTP请求报文,请求响应

7.服务器处理请求

这就不多说了。

8.浏览器的到响应报文之后,对响应报文进行HTML解析

   就像我们平常请求网页一样,浏览器会一个一个的响应出用户请求的页面,这个页面里面可能有图片,文字,视频等等

9.TCP连接断开

一般web服务器向浏览器发送了请求数据,就要关闭TCP连接,如果浏览器或者服务器在其头部信息中添加。connection:keep-alive ,TCP连接在发送后仍然保持打开状态,于是浏览器可以像相同的连接发送请求,保持连接节省了为每个请求建立连接所需的时间。

猜你喜欢

转载自blog.csdn.net/baidu_37964044/article/details/82017007