从浏览器中输入网址到呈现页面发生了什么

7 篇文章 0 订阅

如输入www.baidu.com
一、获得baidu.com的IP地址,通过UDP的包给DNS服务器解析,返回baidu.com的IP,通常浏览器会把IP地址缓存起来,这样下次访问更快。
二、知道服务器IP后,发起HTTP请求
三、建立TCP连接,需要知道服务器IP和端口,默认HTTP服务是80。本机IP也是知道的,本机端口操作系统可以给浏览器随机分配一个。
四、建立TCP连接后,发送HTTP请求。里面包括通过数据分割打包,交给IP协议传输。
五、HTTP请求到达服务器。服务器有如下几种可选方法:
(1)只用一个线程分配一个进程,简单,但是性能很差
(2)为每个请求分配一个线程,这样太消耗内存资源,线程切换会让CPU不堪重负
(3)服用I/O方式,很多Web服务器都采用了复用结构,通过epoll方式监听所有的连接,当连接状态发生变化时(如有数据可以读),用一个线程对那个连接进行处理,这样可以用少量的进程/线程应对成千上万的连接请求。
六、
【Web服务器】获得了客服端发过来的HTTP Get请求,知道客户端的请求内容了
(1)静态请求,如一些图片,HTML文件,CSS文件,可以自己读取本机硬盘上的相关文件,获得发到别的缓存服务器上。
(2)动态请求,需要后端服务器(Tomcat)处理才能返回,做成HttpResponse再转发给浏览器
【应用服务器】交给Servlet处理,分发给某个Controller(Spring)

七、HTTP1.1 连接默认是keep-alive的
HTTP1.0看Request header中有没有Connetion:keep-alive如果有,不能关闭
八、浏览器介绍到Http Response,从中读取了HTML页面,开始显示这个页面。因为这个页面会需要大量的其它资源,这些资源可能位于另外一个域名下面,浏览器继续发送Http请求,如果需要下载的外部资源太多,浏览器就会建立多个TCP连接,并行去下载。
当服务器给浏览器发送JS,CSS文件时,会告诉浏览器这些文件什么时候过期,使用(Cache-Control或者Expire),浏览器可以把文件缓存到本地,当第二次请求同样的文件时,如果不过期,直接从本地取就可以了。
如果过期了,浏览器可以询问服务器文件有没有修改过(依据是上一次服务器发送的Last-Modified和ETag),如果没哟修改过(304 Not Modified),还可以使用缓存,否则服务器会将最新的文件发回浏览器。
ctrl + F5可以强制刷新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值