美文网首页
web后台服务器是如何工作的

web后台服务器是如何工作的

作者: 小鲍比大爷 | 来源:发表于2018-10-21 22:34 被阅读0次

    近期准备session,希望能跟大家轻松地分享一些东西,一些常见的场景。比如:web后台服务器到底是如何工作的。
    上网过程对于普通人:首先,他需要一台电脑,然后,他的电脑可以接入网络,最后,他可以打开浏览器键入自己想要浏览的网址,然后就可以上网了。但是对于计算机来讲,是一个比较复杂的过程,里面包含了信息如何保存,信息如何传递以及信息如何展示的过程。所以,针对整个上网过程,我们从前到后,分析一下其中包含的各种技术细节,可能不全,目的是抛砖引玉,希望大家在简单的流程当中学习更多的东西分享出来,一些基础知识则当做复习。之前buddy王老吉讲过浏览器的工作方式,所以本文内容不包含浏览器的工作方式,重点在于各种后台服务以及通信层面的分析。

    URL

    前面说到,用户浏览器中键入网址便浏览网页信息,这个网址实际上就是URL,英文全称是Uniform Resource Locator——统一资源定位符。

    统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

    完整的、带有授权部分的普通统一资源标志符语法看上去如下:
    协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值
    协议部分可以是http,https,ftp等协议类型。

    协议

    前面提到,互联网上的每个文件都有一个唯一的URL,那么,到底是如何确认的。前面提到了协议,协议是什么?比如大家写信时都需要写邮编、地址和姓名,便可以通过这种方式将信邮寄到世界上唯一的那个人手里,填写的邮编,地址和姓名就是一种协议。协议的价值在于世界上所有的浏览器和后台服务器都需要遵循http这些协议,才能正常进行信息的传递。
    计算机通信跟人的通信是类似的,也是遵循各种协议的,不同的协议承载着不同的功能。通常,浏览器上网使用的是http或者https协议,从网络分层的角度来讲,这些协议属于应用层协议,建立在传输层之上。传输层跑是什么协议呢?相信大家都非常熟悉,传输层跑的是TCP和UDP协议,再往下就是网络层,网络层上面跑的是IP数据报。每层的功能各不相同,每层的协议也不同,但是一般来讲,越往下层,协议会越少,这样才能化繁为简,从而支持不同的上层协议。传输层协议一般是由操作系统层面支持的,同时还需要跟网络层进行交互(对于物理机来说就是网卡),所以针对我们操作系统之上的程序员来讲,新创造的协议都是应用层协议,因为我们的通信都是在传输层(TCP和UDP)基础之上构建的。

    http协议

    http是应用层协议,也就是说,在界面敲下网址那一刻,实际上浏览器向服务器发送了http协议格式的消息,也叫做http请求。http协议是构建在tcp协议之上的,而tcp是可靠的协议,所以http协议无需考虑可靠性,只管传输就可以了。
    http协议比较简单,如下所示:

    那么浏览器又是如何组织http请求,并且将信息发送的相应服务器的呢?例如:http://www.baidu.com

    DNS服务

    我们键入的仅仅是服务器域名,但是实际上在网络中我们通信是通过套接字来进行通信的。套接字=IP + 端口,在网络中,IP的作用是用来在网络层进行路由寻址,寻找唯一的主机;端口的作用是用来在这个主机中寻找唯一的进程。总体来说,套接字可以用来在网络中确定唯一主机的唯一进程,所以通过套接字我们可以进行通信。
    但是问题是上网通过域名来访问,那么是如何通过域名来确认唯一主机的唯一后台web服务器进程的呢?做一个假设,如果我们可以在互联中提供一个确定的服务,这个服务里面装有域名到套接字的映射,上网的人通过这个服务获取对应域名的套接字,那么这个问题不就解决了。而实际上,DNS服务原理简单来说就是刚才假设的方法,服务商通过提供公共的DNS服务,大家上网时便可以查询到相应域名对应的套接字,通过这个套接字便可以访问确定的服务器了。真正的DNS服务其实更为复杂,分为迭代式查询和递归式查询,两种方式各有优劣,同时,为了性能,DNS服务通常也配有不同级别的缓存,关于DNS的具体实现有兴趣的可以自行查询资料学习。
    总结一下,上网时浏览器实际上做了两件事,第一,通过浏览器内置的DNS客户端,向DNS服务器发送请求,获取域名对应套接字;第二,使用套接字发送http请求,获取数据,然后在浏览器端呈现。
    另外,DNS服务也需要遵循某种协议才能通信,其协议为DNS协议,其服务固定为53端口,属于应用层协议。DNS英文为DomainNameSystem。其实DNS服务跟电话簿的工作方式一样,因为你没法记得每个人的电话号码,但是很容易记住每个人的名字。

    后台服务器

    上网前,我们的计算机里面什么都没有,为何键入网址后能在界面显示出各种各样的数据?实际上,数据都来自于后台服务器,所有的数据当然也都存储在后台服务器,浏览器仅仅请求数据。前面讲了,请求数据时,使用套接字加上http请求来获取数据,后台则必定要提供相应的套接字,接收信息,解析http请求,才能正常的返回客户端需要的数据。所以,后台服务器做的工作,第一,绑定套接字,通过该套接字向外提供http服务;第二,解析http请求,根据请求返回响应。

    http服务器实现

    理论上讲,我们可以实现自己的http服务,并且解析不同的http请求,返回响应。但是,作为开发者来讲,重复造轮子是不推荐的,市面上有多种现成框架供我们选择。对于java开发者来讲,就有tomcat或者jetty,其他语言理论上也有类似的框架。tomcat和jetty帮我们做了什么呢?实际上最主要的功能还就是接受http请求,针对不同的请求返回响应,当然,他们也提供了更多的高级特性,比如遵循servlet规范,使人们更高效的开发web应用。

    总结

    总结一下,上网的实际流程在程序员的角度来看,首先需要通过DNS服务解析域名,获取该域名所在web服务器应用程序的套接字,然后浏览器组装符合http协议的请求,通过套接字发送给web服务器,web服务器解析请求,根据解析结果将需要返回的内容组装符合http协议的响应,浏览器接到响应后,根据http协议解析响应,获取数据,将数据展示在浏览器上。
    包含的知识点:DNS协议,HTTP协议,计算机网络知识,后台服务器实现(tomcat/jetty等)。

    相关文章

      网友评论

          本文标题:web后台服务器是如何工作的

          本文链接:https://www.haomeiwen.com/subject/qxqizftx.html