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

     <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#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服务器请求一个动作,响应报文会将请求的结果返回给客户端。请求报文和响应报文的基本报文结构相同。

    请求报文格式:
    <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版本
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339