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


那么 , 在客户端发送请求 , 服务器返回响应之前 , 他们是如何建立TCP连接的呢?为了建立TCP连接 , 服务器和客户端都使用所谓的套接字 。接下来 , 我们不直接使用浏览器 , 而是使用telnet在命令行上手动模拟浏览器 。
在运行网络服务器的同一台计算机上 , 通过命令行打开telnet会话 , 将主机设置为连接到localhost , 将主机的连接端口设置为888 , 然后按Enter:
$ telnet localhost 8888Trying 127.0.0.1 …Connected to localhost. 经过这些操作 , 你实际上已经和本地网络服务器建立了TCP连接 , 可以随时收发HTTP消息 。下图显示了服务器接受新的TCP连接需要完成的标准过程 。
在上面的telnet会话中 , 我们输入GET/hello HTTP/1.1并按回车键:
$ telnet localhost 8888Trying 127.0.0.1 …Connected to localhost.GET /hello HTTP/1.1HTTP/1.1 200 OKHello, World! 您成功手动模拟了浏览器!您手动发送了一个HTTP请求 , 然后收到了一个HTTP响应 。下图显示了HTTP请求的基本结构:
HTTP请求行包括HTTP方法(这里使用GET方法是因为我们想从服务器获取内容)、服务器页面路径(/hello)和HTTP协议的版本 。
为了尽可能地简化它 , 我们目前实现的web服务器将不解析上面的请求 。完全可以输入一些无意义的代码 , 也可以收到“你好 , 世界!”回应 。
在您输入请求代码并按回车键后 , 客户端将向服务器发送请求 , 服务器将解析您发送的请求并返回相应的HTTP响应 。
下图显示了服务器返回给客户端的HTTP响应的详细信息:
我们来分析一下 。响应包含状态行HTTP/1.1200OK , 后跟必需的空行 , 然后是HTTP响应的正文 。
响应的状态行HTTP/1.1200OK包含HTTP版本、HTTP状态代码和与状态代码对应的原因短语 。浏览器收到响应后 , 会显示响应的正文 , 这也是你会看到“Hello , World!”在浏览器中 。这句话 。
这是网络服务器的基本工作原理 。简单回顾一下:网络服务器首先创建一个监听套接字 , 并开始一个永久的循环来接收新的连接;客户端启动与服务器的TCP连接 。连接成功建立后 , 向服务器发送HTTP请求 , 然后服务器返回HTTP响应 。为了建立TCP连接 , 客户端和服务器都使用套接字 。
现在 , 您有了一个基本可用的简单web服务器 。您可以使用您的浏览器或其他HTTP客户端进行测试 。如上图所示 , 您也可以通过telnet命令并手动输入HTTP请求来成为HTTP客户端 。
给大家一个思考问题:如何在不修改服务器代码的情况下 , 通过服务器运行Djando应用、Flask应用、Pyramid应用 , 同时满足这些不同网络框架的要求?
答案将在“自己开发Web服务器”系列的第二部分揭晓 。


推荐阅读