Web通信原理
我们平时浏览⽹⻚的时候,会打开浏览器,输⼊⽹址后按下回⻋键,然后就会显示出你想要浏览的内容。在这个看似简单的⽤户⾏为背后,到底隐藏了些什么呢?
浏览器本身是⼀个客户端,当你输⼊URL的时候,⾸先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建⽴TCP连接,等浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调⽤⾃身服务,返回HTTP Response(响应)包;客户端收到来⾃服务器的响应后开始渲染这个Response包⾥的主体(body),等收到全部的内容随后断开与该服务器之间的TCP连接。
图示:
⼀个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。这个客户端通常指的是Web浏 览器(其实⼿机端客户端内部也是浏览器实现的)。 Web服务器的⼯作原理可以简单地归纳为:
- 客户端通过TCP/IP协议建⽴到服务器的TCP连接
- 客户端向服务器发送HTTP协议请求包,请求服务器⾥的资源⽂档
- 服务器向客户端发送HTTP协议应答包,如果请求的资源包含有动态语⾔的内容,那么服务器会调
- ⽤动态语⾔ 的解释引擎负责处理“ 动态内容”,并将处理得到的数据返回给客户端
- 客户端与服务器断开。由客户端解释HTML⽂档,在客户端屏幕上渲染图形结果
⼀个简单的HTTP事务就是这样实现的,看起来很复杂,原理其实是挺简单的。需要注意的是客户端与 服务器之间的通信是⾮持久连接的,也就是当服务器发送了应答后就与客户端断开连接,等待下⼀次请 求。
第⼀次请求url,服务器返回的是html⻚⾯,然后浏览器开始渲染HTML。当解析到HTML DOM⾥⾯的图⽚连接,css脚本和js脚本的连接,浏览器会⾃动发起⼀个请求静态资源的HTTP请求,获取相应静态资源,然后浏览器会渲染出来,最终将所有资源整合、渲染、完整展现在屏幕上。(⽹⻚优化有⼀向措施是减少HTTP请求次数,把尽量多的css和js资源合并在⼀起)。