前文动手写网站讲到浏览器要从服务器请求数据,介绍代码管理工具又提到代码仓库要上传到服务器,那么什么是服务器?服务器在哪?我能看到么?
最初,服务器就是一台电脑,多数情景是一台装有Linux操作系统的电脑;到现在,服务器依然是电脑,只不过里面安装了越来越多、越来越新鲜的程序,而且你通过某种方式使用它时,它可能是一群电脑组队来服务,而不是单枪匹马;有些服务器在今天也有一个好听的别名,叫做:云。 服务器长什么样并不重要,因为你平常根本见不到他,一般的码农平常也见不到,除了那种专门做服务器运维的工程师。然而服务器跟我们每个人又非常近,看网页、看视频、聊微信、发微博、玩游戏、听歌、上班打卡、在线会议、网购、订酒店、订票…几乎你用手机、电脑做的每一件事情都要去某台服务器那里报个到。为你服务的服务器可谓形形色色、千奇百怪,随随便便打开一个网页你就不知不觉访问了域名服务器、网站服务器、图片视频服务器、CDN加速服务器等等;而且这些服务器往往不只一台,很有可能你点了一下刷新按钮,就跟成都的服务器say bye-bye而跟上海的服务器say hello了。另外现代服务器的原理决定一台实体的服务器电脑可能对应很多台的虚拟机,这样就算这些家伙全都摆在你面前你也厘不清它们之间关系。
服务器一般放在一个叫做机房的屋子里,整整齐齐架在专用的机柜里,为了让这些家伙能够充分散热,机房一般是个很冷的地方,进去时记得披件衣服并带好门卡,小心被锁在里面。既然服务器像个犯人一样被锁在冰冷的机房里,我们如何跟它交互呢?是的,网络,服务器主要通过网线跟外界交互,你看到的文字、图片、视频、游戏、订单等等都是从网线、光纤、路由器这条路传输到你的电脑、手机里的,当然中间也可能经过通信基站、卫星等等。
这么多服务都插着网线,怎么才能找到你要的那台呢?再介绍一个新朋友,叫做IP地址,大概就是像192.168.1.123这样的一串带点的数字,类似你的电话号码,世界上的每一台能上网的设备,包括服务器、个人电脑、手机、平板、电视机等,都需要这样一个地址,当然就跟你能换手机号一样,IP地址也是可以变化的。总之能连网的前提是你有一个合法的IP地址,这也是我们能找到服务器的基础,找到服务器以后到底是要访问网站还是下载文件,还是想要通过远程命令来控制这台电脑,服务器怎么区分这些操作请求呢?
首先我们把服务器的这些不同的能力叫做“服务”,比如网站能力叫做Web服务、下载文件的能力叫做FTP服务、远程命令能力叫做SSH服务。这些服务不过也就是一段段代码写成的软件,所以一定会千变万化、层出不穷,但没有什么神秘的,今天很流行的云本质上就是一些比较时髦的服务。每个服务都有自己的分机号,叫做端口,Web服务用80或者443,FTP服务用21,SSH服务用22。通常每个端口只放行一种类型的数据,这种放行规则叫做网络协议,比如80端口对应的是HTTP协议,443对应的是HTTPS协议,HTTP协议放行的就是我们在100行代码写网站那篇里看到的那些数据。
网络通信好比打电话,我们已经说清楚电话号码、分机号这些东西,那么电话的另一头是谁呢?其实开头已经提过了,就是你网购、订票、看视频的那些App,还有上网用的浏览器等,跟打电话不同的一点是服务器的另一头可能是另外一台服务器。