python3搭建简单的HTTP服务器:python3 -m http.server 8080
URL
URI:统一资源标示符
URL:统一资源定位符。URL描述了一台特定服务器上某资源的特定位置
URN:统一资源名。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。URN仍处于试验阶段,未大范围使用
URL格式分为三个部分:
URL的第一部分被称为方案,说明了访问资源所使用的协议类型。
第二部分给出了服务器的地址
第三部分指定了服务器上的某个资源
方案
地址
资源
http://
127.0.0.1:8080
/README.txt
ftp://
127.0.0.1:8080
/README.txt
组件
描述
方案
访问服务器资源时使用的协议。方案名是大小写无关的
用户
某些方案访问资源需要的用户名
密码
用户名后面包含的密码,中间用冒号分割
主机
资源服务器的主机名或IP地址
端口
资源服务器监听的端口号
路径
服务器上资源的本地名,由一个斜杠将其与前面的URL组件分割
参数
某些方案会用这个组件来指定输入参数。参数为名/值对。URL可以包含多个参数字段,相互之间以及路径的其他部分用封号分割
查询
某些方案用这个组件传递参数以激活应用程序。查询组件的内容没有通用格式,用字符?将其与URL其他部分分割
片段
一小片或一部分资源的名字,引用对象时,不会将frag字段传给服务器。这个字段是在客户端内部使用的,通过#将其与URL的其他部分分割
字符
保留/受限
%
保留,用于转义, 如%20表示空格
/
保留,路径组件分割路径
.
保留,在路径组件中使用
..
保留,在路径组件中使用
#
保留,分段定界符
?
保留,查询定界符
;
保留,参数定界符
:
保留,作为方案、用户/口令,以及主机/端口组件的定界符
$ +
保留
@ & =
保留,在某些方案的上下文中有特殊含义
{ } | \ ^ ~ [ ] '
受限,由于各种传输Agent代理,比如各种网管的不安全处理
< > "
不安全,这些字符在URL范围之外通常是有意义的
0x00 - 0x1F, 0x7F
受限,不可打印
>0x7F
受限,不在ASCII7位二进制范围内
HTTP概述
HTTP报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求,或者来自服务器的响应。由三部分组成:对报文进行描述的起始行、包含属性的首部块,以及可选的、包含数据的主体部分。起始行和首部就是用行分割的ASCII文本,每行都以\r\n终止。注意,一组HTTP的首部总是以\r\n结束,即使没有首部与实体的主体部分也应如此。报文的主体是一个可选的数据块,可以包含文本、二进制信息、为空。
HTTP报文包含三个部分:
起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现什么情况
首部字段: 起始行后面跟零或多个首部字段,每个首部字段都包含一个名字和一个值,为了便于解析,两者用冒号分割。首部以一个空行结束
主体:空行之后就是可选的报文主体,其中包含了所有类型的数据。请求主体中包含了要发送给Web服务器的数据。响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且结构化的,而主体却可以包含任意的二进制数据
HTTP报文分为请求报文和响应报文。请求报文向Web服务器请求一个动作,响应报文会将请求的结果返回给客户端。请求报文和响应报文的基本报文结构相同。
请求报文格式:
<method> <request-url> <version>
<headers>
<entity-body>
响应报文格式:
<version> <status> <reason-phrase>
<head>
<entity-body>
Http方法
描述
GET
从服务器向客户端发送命名资源
PUT
将来自客户端的数据存储到一个命名的服务器资源中
DELETE
从服务器中删除命名资源
POST
将客户端数据发送到一个服务器网关应用程序
HEAD
仅发送命名资源响应中的HTTP首部
HTTP状态码
描述
200
正确
302
重定向,到其他地方去获取资源
404
资源未找到
请求报文
GET /Test.txt HTTP/1.1
Accept:*
响应报文
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.4.3
Date: Sun, 05 May 2019 14:16:33 GMT
Content-type: text/plain
Content-Length: 22
Last-Modified: Sun, 05 May 2019 14:15:32 GMT
Hello World
Bad World
Http是应用层协议,一般依赖于TCP/IP协议
Http的默认端口是80
HTTP/1.1是当前使用的HTTP版本
最后编辑于 :2019.05.20 21:43:41
©著作权归作者所有,转载或内容合作请联系作者 平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。