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

近期准备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等)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容