HTTP协议
Posted shijinglu2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议相关的知识,希望对你有一定的参考价值。
##概念:
HTTP协议-超文本传输协议,BS结构的通讯协议,规定了传递数据的相关格式。
HTTP协议是应用层协议,要求传输层协议必须建立在可靠传输协议
基础上,所以,通常底层的传输层协议为TCP协议。
##特点:
协议规定了客户端与服务端通讯的方式:一次请求一次响应的模式。
即:客户端发起请求(request),服务端在接收请求后予以处理并
给予响应(response)。
所以,在这种方式下服务端永远不会主动向客户端发送任何数据。
-------------------------------------------------------------------------------
##协议区别:
HTTP协议现在基本都使用1.1版本。而1.0与1.1一个比较大的变动
在于:
1.0:一次会话中只有一次请求与一次响应。即:客户端发起TCP连接
后会向服务端发送一次请求,当服务端处理并予以响应后即与客户端
断开连接。
1.1:一次会话中可进行多次请求与响应。即:客户端发起TCP连接后
可以与服务端进行多次请求与响应后才断开连接(在当今页面内容非
常丰富的情况下,这种方式的响应速度更快,资源开销更小)。
-------------------------------------------------------------------------------
##HTTP协议中的请求(Request)定义:
请求是客户端发送给服务端的内容,一个请求包含三部分:
请求行,消息头,消息正文。
请求行与消息头都是由字符组成的文本数据,而消息正文部分则
是由2进制的数据组成。
在HTTP协议中,请求行与消息头对应的文本内容必须符合ISO8859-1
字符集所规定的字符(这是一个欧洲字符集,里面不支持中文。)。
1:请求行( method url protocol(CRLF) )
请求行是一行字符串(以CRLF结尾)。描述了客户端使用的HTTP协议
版本,想请求的资源的路径,和请求的方式。
格式:
method url protocol(CRLF)
请求方式 资源路径 协议版本
例如:
GET /index.html HTTP/1.1(CRLF) CR:回车符,对应asc编码为:13 含义是将光标返回到本行开始的位置
LF:换行符 对应asc编码为:10 含义是光标位置不变,向下移动一行
2:消息头( name: value(CRLF) )
消息头由若干行组成,每个消息头是一行字符串,格式为:
name: value(CRLF)
最后一个消息头之后会单独存在一个CRLF,表示消息头部分结束。
消息头是客户端发送给服务端的一些附加信息,有的说明客户端的
信息,有的是用来描述通讯中传递数据的方式,有的是说明消息正
文的长度以及内容等等。
例如:
Host: localhost:8088(CRLF)
Connection: keep-alive(CRLF)
Upgrade-Insecure-Requests: 1(CRLF)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36(CRLF)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8(CRLF)
Accept-Encoding: gzip, deflate, br(CRLF)
Accept-Language: zh-CN,zh;q=0.9(CRLF)(CRLF)
3:消息正文
消息正文是2进制数据,是客户端发送过来的用户提交的数据,它
可能是用户的表单信息,上传的附件等。
一个请求中不一定包含消息正文。判断一个请求是否包含消息正文
的依据是看该请求是否包含以下两个头:
Content-Type,Content-Length.这两个头若出现,那么该请求是
包含消息正文的,其中Content-Type是用来说明消息正文的数据
是什么内容,而Content-Length是用来说明消息正文总共还有多少
个字节
可以通过抓包看到:
GET /index.html HTTP/1.1(CRLF)
Host: localhost:8088(CRLF)
Connection: keep-alive(CRLF)
Upgrade-Insecure-Requests: 1(CRLF)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36(CRLF)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8(CRLF)
Accept-Encoding: gzip, deflate, br(CRLF)
Accept-Language: zh-CN,zh;q=0.9(CRLF)(CRLF)
以上是关于HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 之 HTTP协议(HTTP协议概述HTTP消息缓存控制相关头部Cookie相关头部)