Http概述

  • 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
  • URL一般格式:

     ://:@:/;?#frag
    
组件 描述
方案 访问服务器资源时使用的协议。方案名是大小写无关的
用户 某些方案访问资源需要的用户名
密码 用户名后面包含的密码,中间用冒号分割
主机 资源服务器的主机名或IP地址
端口 资源服务器监听的端口号
路径 服务器上资源的本地名,由一个斜杠将其与前面的URL组件分割
参数 某些方案会用这个组件来指定输入参数。参数为名/值对。URL可以包含多个参数字段,相互之间以及路径的其他部分用封号分割
查询 某些方案用这个组件传递参数以激活应用程序。查询组件的内容没有通用格式,用字符?将其与URL其他部分分割
片段 一小片或一部分资源的名字,引用对象时,不会将frag字段传给服务器。这个字段是在客户端内部使用的,通过#将其与URL的其他部分分割
  • URL编码机制
字符 保留/受限
% 保留,用于转义, 如%20表示空格
/ 保留,路径组件分割路径
. 保留,在路径组件中使用
.. 保留,在路径组件中使用
# 保留,分段定界符
? 保留,查询定界符
; 保留,参数定界符
: 保留,作为方案、用户/口令,以及主机/端口组件的定界符
$ + 保留
@ & = 保留,在某些方案的上下文中有特殊含义
{ } | \ ^ ~ [ ] ' 受限,由于各种传输Agent代理,比如各种网管的不安全处理
< > " 不安全,这些字符在URL范围之外通常是有意义的
0x00 - 0x1F, 0x7F 受限,不可打印
>0x7F 受限,不在ASCII7位二进制范围内


HTTP概述
  • HTTP报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求,或者来自服务器的响应。由三部分组成:对报文进行描述的起始行、包含属性的首部块,以及可选的、包含数据的主体部分。起始行和首部就是用行分割的ASCII文本,每行都以\r\n终止。注意,一组HTTP的首部总是以\r\n结束,即使没有首部与实体的主体部分也应如此。报文的主体是一个可选的数据块,可以包含文本、二进制信息、为空。
HTTP报文包含三个部分:
  • 起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现什么情况
  • 首部字段: 起始行后面跟零或多个首部字段,每个首部字段都包含一个名字和一个值,为了便于解析,两者用冒号分割。首部以一个空行结束
  • 主体:空行之后就是可选的报文主体,其中包含了所有类型的数据。请求主体中包含了要发送给Web服务器的数据。响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且结构化的,而主体却可以包含任意的二进制数据
  • HTTP报文分为请求报文和响应报文。请求报文向Web服务器请求一个动作,响应报文会将请求的结果返回给客户端。请求报文和响应报文的基本报文结构相同。

    请求报文格式:
      
    
    
    
    
    响应报文格式:
      
    
    
    
    
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版本

你可能感兴趣的:(Http概述)