一个网络请求时怎样进行的

274 阅读2分钟

页面的请求过程

在面试过程中,我们经常会被问到一个问题:在浏览器输入URL,按下回车键,会发生什么?这个问题涉及浏览器中的运行机制和页面加载过程

总体来说,当我们打开某个网站的页面,浏览器就会发起网络请求获取该页面的资源,包括页面、图片、CSS文件、XHR请求等。

实际上,放我们在浏览器输入URL,按下回车,浏览器的处理过程如下:

1.DNS域名解析,找到网页的存放服务器

2.浏览器和服务器建立TCP连接

3.浏览器发起HTTP请求

4.服务器响应HTTP请求,返回该网页的HTML内容

5.浏览器解析HTML代码,并请求HTML代码中的资源(比如JavaScript、CSS、图片等)

6.浏览器对页面进行渲染呈现给用户

DNS域名解析

DNS域名解析:是负责把域名地址翻译成IP地址,客户端与服务器建立TCP连接是通过IP进行通信的

DNS解析过程会进行递归查询,分别依次尝试从以下途径,按顺序获取该域名对应的IP地址:

1.浏览器缓存

2.系统缓存(用户操作系统hosts文件DNS缓存)

3.路由器缓存

4.互联网服务提供商DNS缓存(联通、移动、电信等提供商的DNS缓存服务器)

5.根域名服务器(com\net\org\cn 等等域名后缀)

6.顶级域名服务器(以根域名后缀为一级的域名,例如baidu.com中的baidu就是顶级域名)

7.主域名服务器(可以理解为网站的访问域名)

TCP连接的建立

1.TCP和UDP的区别:TCP协议提供可靠传输服务;UOD协议则可以更快地进行通信

2.三次握手:指的是TCP连接的建立过程,该过程中客户端和服务器端总共需要发送三个包,从而确认连接存在

3.四次挥手:指的是TCP连接的断开过程,该过程中需要客户端和服务器端总共发生四个包,从而确认连接关闭

HTTP请求和TCP协议

目前大多数HTTP请求都是基于TCP协议。TCP协议的目的是提供可靠的数据传输,它用来确保可靠传输的途径主要包括两个:乱序重建(通过对数据包编号来对齐排序,从而使得另一端接收数据时,可以重新根据编号还原顺序);丢包重试(可通过发送方是否得到响应来检测出丢失的数据并重传这些数据)。通过以上方法,TCP在传输过程中不会丢失或者破坏任何数据,这也是即使出现网络故障也不会破坏文件下载的原因