服务器的作用是什么,个人服务器用途介绍

一天 , 一位女士路过一个建筑工地 , 看到三个工人正在工作 。她问第一个人:“你在干什么?”第一个人有点不高兴 , 吼道:“没看见我在砌砖吗?”这位女士对这个回答不满意 , 然后问第二个人在干什么 。第二个人回答说:“我在砌一堵砖墙 。”然后 , 他转向第一个人说:“嘿 , 你砌的砖已经比墙高了 。你必须拆掉最后一块砖 。”这位女士仍然不满意这个回答 , 于是她继续问第三个人他在做什么 。第三个人仰望天空空对她说:“我正在建造世界历史上最大的教堂” 。就在他望着天空空陷入沉思的时候 , 另外两个人已经开始为多出来的那块砖争吵起来 。他慢慢转向前两个人说:“兄弟们 , 别管那块砖头了 。这是内墙 , 后面会刷石灰 。没人会注意到这块砖 。然后构建下层 。”
这个故事的寓意是 , 当你掌握了整个系统的设计 , 了解了不同的组件(砖、墙、教堂)是如何组合的 , 你就可以更快地发现和解决问题(多余的砖) 。
然而 , 这个故事与从零开始开发web服务器无关 。
有什么关系呢?
在我看来 , 要成为一名更好的程序员 , 你必须对你的日常软件系统有更好的理解 , 这包括编程语言、编译器、解释器、数据库和操作系统、web服务器和web开发框架 。而要更好更深入地理解这些系统 , 你必须从头重新开发这些系统 , 一步一个脚印地从头再来 。
子曰:“不闻则不闻;如果你闻 , 你看不见;如果你看到了 , 你不知道;知道了就不行动 。”
如果你没闻到 , 那就别闻
如果你闻到它 , 你就看不到它 。
如果你不知道你所看到的 , 你就不会做你所知道的 。
译者注:以上原作者引用的那段话的外文翻译是:我听我忘 , 我看我记 , 我做我懂 。一般外国人都认为出自孔子 , 但我在查这句英文的出处时 , 发现一篇博文说这句话的中文版其实出自荀子的儒家 , 经查属实 。
我希望当你读到这里的时候 , 你已经认识到通过重新开发不同的软件系统来学习它的原理的方法 。
《自己开发一个Web服务器》将分为三个部分 , 介绍如何从零开始开发一个简单的Web服务器 。让我们开始吧 。
首先 , web服务器到底是什么?
简而言之 , 它是建立在物理服务器上的网络服务器 , 永久等待客户端发送请求 。当服务器收到请求时 , 它会生成一个响应并返回给客户端 。客户端和服务器之间的通信基于HTTP协议 。客户端可以是浏览器或任何支持HTTP协议的软件 。
那么 , web服务器的简单实现形式是什么呢?以下是我对此的理解 。示例代码是用Python语言实现的 , 但即使你不懂Python语言 , 也应该能从代码和下面的解释中理解相关概念:
:::pythonimport socketHOST, PORT = '', 8888listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)listen_socket.bind((HOST, PORT))listen_socket.listen(1)print 'Serving HTTP on port %s ...' % PORTwhile True:client_connection, client_address = listen_socket.acceptrequest = client_connection.recv(1024)print requesthttp_response = """HTTP/1.1 200 OKHello, World!"""client_connection.sendall(http_response)client_connection.close 将上面的代码保存为webserver1.py , 或者直接从我的Github仓库下载 , 然后通过命令行运行文件:
$ python webserver1.pyServing HTTP on port 8888 … 接下来 , 在你的浏览器地址栏输入这个链接:http://localhost:8888/hello , 然后回车 , 你会看到神奇的一幕 。在浏览器中 , “你好 , 世界!”应该会出现 。这句话:
是不是很神奇?接下来 , 我们来分析一下背后的实现原理 。
【服务器的作用是什么,个人服务器用途介绍】首先 , 我们来看看你输入的网络地址 。它的名字叫URL(统一资源定位符) , 基本结构如下:
通过URL , 您告诉浏览器它需要查找和连接的web服务器的地址 , 并获得服务器上的页面路径 。但是 , 在浏览器发送HTTP请求之前 , 它必须首先与目标网络服务器建立TCP连接 。然后 , 浏览器通过TCP连接向服务器发送HTTP请求 , 等待服务器返回HTTP响应 。当浏览器收到响应时 , 它会在页面上显示响应的内容 。在上面的例子中 , 浏览器显示“Hello , World!”这句话 。


推荐阅读