面试中学点用的HTTP协议基础知识点点滴滴

HTTP协议

HTTP协议作为网络传输的基本协议,有着广泛的应用。

HTTP协议的完整内容很多,但是其核心知识却又简单精炼。

HTTP协议:消息的分类 请求消息 响应消息

HTTP特点:无连接,无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间 。

无状态: 指协议对于事务处理没有记忆能力。

缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP协议消息的基本格式:

首行

头部(header)

正文(body)

头部

用来指出HTTP消息的一些属性,它们有固定的格式;

正文

部分是传输的实际内容,它们的格式是任意的,通常用Content-Type头来指定。

首行

在请求消息和响应消息中具体格式略有区别,它们表示的按理说应该是HTTP消息最基本的部分。

不论是HTTP请求还是HTTP响应,首行都是有的,否则会出现不可饶恕的解析错误;

然而头部和正文是可选的,不过实际过程中,多多少少都要包含一些基本的头。 首行和头部都是以进行ASCII编码,正文部分的编码任意了。

在实际的开发中,发送的文本消息时常会碰到乱码的问题。

通常约定以UTF-8格式进行编码和解码, HTTP消息是基于TCP协议的上层应用协议。

TCP协议是网络流协议的一种。

抽象地讲,就是从一台主机一个字节一个字节有序地传输到另一台主机。对于HTTP协议来说,自然保持了这种有序性,即按照首行、头部、正文的顺序进行传输。

首行和头部都是ASCII文本流,正文部分是字节流。一个特殊的控制结构CRLF用来控制每个部分的结束。

CRLF是回车符和换行符的意思,它们是两个特殊的ASCII字符。

CR是回车符(\r),在ASCII中的编码是13;

LF是换行符(\n),在ASCII中的编码是10.

http请求报文示例:

GET /simple.html HTTP/1.1 ——- 首行

Accept: text/html — Accept-Language: zh-cn Accept-Encoding: gzip, deflate — 头部

User-Agent: Mozilla/4.0 Host: localhost:8080 Connection: Keep-Alive — ——- 空白行表示头部的结束

接下来的内容是正文部分 可以清楚地看到,第一行是首行,以CRLF标志其结束;

接下来是头部,含有多个消息头,每行定义一个消息头,以CRLF标志其结束;

一个单独的CRLF(紧接着上一个CRLF)表示整个头部的结束,接下来是正文部分。

在这个示例中,正文部分为空 它们在消息实体中是连续的片段,并不像代码中所示那样有换行的结构。

换句话说,原始的消息应该是如下形式:

GET /simple.html HTTP/1.1

Accept: text/html

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0

Host: localhost:8080

Connection: Keep-Alive

HTTP请求 之前已经说过。

三个部份

HTTP请求消息分为三个部分:

请求行

请求头部

请求正文

其中请求头部的格式我们已经见过。

请求行的基本格式为:

方法

路径

版本

例如下面的例子: GET /simple.html HTTP/1.1

就有对应关系:

方法:GET

路径:/simple.html

版本:HTTP/1.1

Http请求方法

HTTP请求:方法 首先列出最常用的

HTTP方法: GET POST PUT PATCH DELETE HEAD OPTIONS

每个HTTP方法,都是有一些HTTP协议要求的。

比如说GET方法请求的资源,浏览器端一般都会有缓存,下次请求的时候可能从缓存中去取就够了,服务器不用再重复发送相同的资源了;

但是服务器如果将获取资源的接口的方法定义为POST,那么浏览器端就不会再对资源进行缓存了,即使每次取到的都是同样地内容,都会请求服务器重新发送一遍。

所以说,将请求资源的接口的方法定义为POST而不是GET,就是一种不合理的设计。

再比如,GET方法的请求消息是不能定义消息体的,HEAD方法的请求其响应消息是不包含消息体的。

这些都是HTTP协议对于HTTP方法的约束。

query-string

HTTP请求:路径 路径的基本格式一般是: basic-path[?query-string] 问号后面的部分就是query-string。

它的格式是任意的,只要客户端和服务器约定好一定的形式即可。这个部分一般是请求参数的附加。

之前说过,GET方法是不包含请求体的,所以GET方法的HTTP请求想要附加参数只能使用这种方式。

当然其他方法也是可以使用这种方式附加参数,只要服务器同意就可以了。query-string的格式任意,但在客户端和服务器之间也有预先定好的约定,即键值对的形式。

query-string可以表示成一系列键值对的集合,用以下方式表示: k1=v1&k2=v2&k3=&k4 在这里。

&分隔不同的键值对,=表示键和值得关系,可以看到一共有四个键值对关系,它们是: k1: v1 k2: v2 k3: 空字符串k4: 起码该键被定义了 一般来说,键值对要写成k=v的形式,但是k=和仅仅一个k都是允许的,前者表示键k的值是空字符串,后者表示键k被定义了,但是其值是什么并不关心。

HTTP请求头 HTTP请求头格式与之前所说的消息头格式没什么两样,就是以冒号分隔的键值对。HTTP请求头中,既包含预定义的头(如Content-Type、Content-Length等),也支持自定义头。

==Content-Type==头

既可用于请求消息,也可用于响应消息,是规定请求正文内容格式的头部。例如利用这个头部,我们可以规定正文的格式为纯文本格式、表单格式、XML格式、JSON格式、图像格式等。

例如==Content-Type:application/json==就表示JSON文本格式。 http消息头大全 HTTP响应 HTTP响应消息的基本格式也是一样的。

包含三个部分:

响应行

响应头部

响应正文

响应行

响应行的基本格式是:

版本号

状态码

状态文本

例如下面的响应行: HTTP/1.1 200 OK

其对应关系为: 版本号:HTTP/1.1

状态码:200 状态文本:OK


如果你觉得眼前需要更好的提高你可以来千锋学PHP,国内最好的PHP机构。

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

推荐阅读更多精彩内容