在web浏览器窗口地址栏输入想要访问的网址URL。
以www.baidu.com为例,这是一个主机名也叫域名,而在整个互联网中,路由器是以IP地址作为识别每个计算机的唯一标识,因此我们想要在互联网中传输数据,就必须知道对方的IP地址。而DNS域名解析则帮助我们将主机名转换成对应的IP地址。
在HTTP工作开始之前,web浏览器首先要通过网络与web服务器建立连接,该连接是通过TCP来完成的。在TCP/IP协议模型中,HTTP属于应用层协议,TCP属于传输层协议,应用层协议HTTP工作之前首先要在传输层建立TCP连接,HTTP建立TCP连接通常使用端口号80。
浏览器向 Web 服务器发起一个 HTTP 请求,HTTP 协议是建立在 TCP 协议之上的应用层协议,其本质是在建立起的TCP连接中,按照HTTP协议标准发送一个索要网页的请求。在这一过程中,会涉及到负载均衡等操作。
拓展:什么是负载均衡?
负载均衡,英文名为 Load Balance,其含义是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如 FTP 服务器、Web 服务器、企业核心服务器和其他主要任务服务器等,从而协同完成工作任务。负载均衡建立在现有的网络之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、增加吞吐量、加强网络处理能力并提高网络的灵活性和可用性。
负载均衡是分布式系统架构设计中必须考虑的因素之一,例如天猫、京东等大型用户网站中为了处理海量用户发起的请求,其往往采用分布式服务器,并通过引入反向代理等方式将用户请求均匀分发到每个服务器上,而这一过程所实现的就是负载均衡。
服务器获取到客户端的 HTTP 请求后,会根据 HTTP 请求中的内容来决定如何获取相应的文件,并将文件发送给浏览器,返回HTTP响应。
浏览器在接受到服务器的HTTP响应时,开始显示页面,首先解析HTML文件构建 DOM 树,然后解析 CSS 文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。
在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签。这时,浏览器会发送一个获取请求来重新获得这些文件。比如我要获取外图片,CSS,JS文件等,类似于下面的链接:
图片:http://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif
CSS式样表:http://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css
JavaScript 文件:http://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js
这些地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名,发送请求,重定向等等。不像动态页面,静态文件会允许浏览器对其进行缓存。有的文件可能会不需要与服务器通讯,而从缓存中直接读取,或者可以放到CDN中。
客户端和服务器通过四次挥手终止 TCP 连接。
用原生js将用户在文本框里面输入的内容失实的输出预览出来。
前言
我们在做表单的时候,通常会使用jQuery的表单验证功能。但是如果只是很简单的表单验证输出预览的话,我们可以使用原生js来解决这个问题。这次云落就遇到这个问题,所以在这里记录一下。
情况介绍
这几天云落在做一个积分充值的东西,其中遇到了一个需求,就是将用户在文本框里面输入的内容实时的显示出来。当然我们还可以对这个内容进行进一步的计算。比如我们可以将用户输入的内容实时的以十倍的计算结果输出来。原来我百度了一下,发现有很好的解决办法。使用原生js来解决这个问题。当然了这里的是输出并不需要服务器的支持,也就是说数据并不经过服务器,如果经过服务器的话,这个办法就没有用了。
代码
<input type="number" placeholder="请输入充值的RMB金额" name="pay_number" id="pay_number" onkeyup="javascript:senddata(this);"/> 元 <span id="outdiv"></span> //下方为js代码,上方为HTML构造 <script type="text/javascript">function senddata(inputobj) { var obj; obj = document.getElementById("outdiv"); obj.innerHTML = '您将充值<strong><em><span style="color:#E53333;font-size:16px;">' + inputobj.value * 10 + '</span></em></strong>金币'; }</script>
代码很简单,一看就懂,,不懂的话,会用就好。
演示
图片演示
后语这几天在做一个积分的玩意,就是付费可见,在线充值的玩意,不是什么高大上的功能,地址可以去看下:http://googlo.me/chongzhi.html
题图来自unsplash
在浏览器中输入网址,到页面显示出来,中间发生了什么?
1、查询DNS,获取域名对应的IP。
(1)检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成。
(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成。
(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时:
(4)如果本地DNS服务器也失效:
2、客户机发送HTTP请求报文:
(1)应用层:客户端发送HTTP请求报文
(2)传输层:切分长数据,并确保可靠性。
(3)网络层:进行路由
(4)数据链路层:传输数据
(5)物理层:物理传输bit
3、服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文。
4、客户端解析HTTP响应报文
5、浏览器开始显示HTML
6、浏览器重新发送请求获取图片、CSS、JS的数据。
7、如果有AJAX,浏览器发送AJAX请求,及时更新页面。
——————————————————
微信搜索公众号【轮子工厂】,后台回复关键字:
1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;
2.回复【我要造轮子】:获取100多本我根据知乎上面关于计算机问题的高赞回答里面的介绍整理出来的书籍;
3.回复【内推】:可帮你内推到大厂工作。
4.回复【C】:可免费获得自制C语言教程。
*请认真填写需求信息,我们会在24小时内与您取得联系。