Python实现简单的Web服务器

互联网在过去20年里已经大大地改变了我们的生活方式,影响着社会。但是反观互联网,它的基础-web的核心原理并没有改变多少。大部分web系统仍旧遵守 Tim Berners-Lee 20 多年前提出的 W3C 标准,大部分web服务器接收的信息格式与接收的方式与过去并无二致。

小编今天介绍的项目课程就是教你用Python实现一个简单的Web服务器。

项目名称:

【Python实现简单的Web服务器】

项目简介:

该项目通过使用 Python 语言实现一个 Web 服务器,探索 HTTP 协议和 Web 服务的基本原理,同时学习 Python 如何实现 Web 服务请求、响应、错误处理及CGI协议,最后会使用 Python 面向对象思路进行重构。

涉及知识点:

HTTP 协议基本原理

简单的 Web 服务器框架

Python 语言的网络开发

Web 服务请求,响应及错误处理的实现

CGI 协议的 Python 实现

使用 Python 面向对象思想重构代码

实验原理:

一般我们的web程序都运行在 TCP/IP 协议上,程序之间使用 socket(套接字) 进行通信,它能够让计算机之间的通信就像写文件和读文件一样简单。

一个 tcp socket 由一个IP地址和端口号组成。

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”,写成10进制的形式就是我们常见的 174.136.14.108。我们通过IP地址来标识所连接的主机。

端口号是一个范围在0-65535之间的数字,一台主机上可能同时有多个sockets,因此需要端口号进行标识。端口号0-1023 是保留给操作系统使用的,我们可以使用剩下的端口号。

超文本传输协议(HTTP)描述了一种程序之间交换数据的方法,它非常简单易用,在一个socket连接上,客户端首先发送请求说明它需要什么,然后服务器发送响应,并在响应中包含客户端的数据。响应数据也许是从本地磁盘上复制来的,也许是程序动态生成的。

传输过程如图:

HTTP请求就是一段文本,任何程序都能生成一个http请求,就像生成文本一样简单。这段文本需要包含以下这些部分:

HTTP method:HTTP请求方法。最常用的就是 GET(抓取数据)与POST(更新数据或者上传文件)

URL:通常是客户端请求的文件的路径,比如 /research/experiments.html, 但是是否响应文件都是由服务器决定的。

HTTP version:HTTP版本。通常是 HTTP/1.0 或 HTTP/1.1

header field:HTTP头内的键值对,做一些基本设置,就像下面这样。

#客户端接受的数据类型Accept: text/html#客户端接受的语言Accept-Language: en, fr         If-Modified-Since: 16-May-2005

body: 一些与请求有关的负载数据了。比如在一个网站登陆的时候提交登陆表单,那负载数据就是你的账号与密码信息了。

HTTP响应的结构类似于请求:

status code:状态码。请求成功响应200,请求的文件找不到则响应404。

status phrase:对状态码的描述。

内容全部截选自项目课程《Python实现简单的Web服务器》

关于如何利用Python实现简单的web服务器的详细开发文档,点击最下方的“阅读原文”,即可马上查看哦~

在线开发环境:

动手对于学习编程的重要性不言而喻,所以实验楼给所有课程都提供了在线开发环境,学习者可以边看文档边动手操作,指导引导学习者在动手实践中学会IT技术,使得掌握的知识更牢固!

左边课程文档详细介绍项目开发步骤,右边在线开发环境可以随时跟着文档操作学习,还有丰富的环境功能提高学习效率~

在线开发环境示意图

点击“阅读原文”,即可马上查看Python实现web服务器的开发文档~