理解HTTP协议

来源:互联网 发布:2017安全知识网络竞赛 编辑:程序博客网 时间:2024/06/05 04:39

HTTP协议,超文本传输协议HYPER TEXT TRANSFER PROTOCOL的缩写,用于从万维网服务器传输超文本到本地浏览器的协议。

它基于TCP/IP通信协议来传输数据(HTML文件,图片,查询结果等)

HTTP协议属于应用层。它允许传输任意类型的数据对象,正在传输的类型由CONTENT-TYPE标记。


1.HTTP协议是一种无连接协议:

指的是每次连接只处理一个请求,服务端处理完客户端一次请求,等到客户端作出回应之后便断开连接;这种方式有利于节省传输时间;然后随着互联网的发展,一台服务器同一时间处理的请求越来越多,如果依然采用原来的方式,将会在建立和断开连接上花费大部分时间;

HTTP/1.0:持久连接被提出来;即当一个TCP连接服务器多次请求:客户端会在请求Header中携带Connection:Keep-Alive;向服务器请求持久连接,如果服务端允许就会在响应报文中加上相同的字段;

HTTP/1.1时代:持久连接称为了默认的连接方式;同时持久连接的弊病也展现出来,即所有的连接都是串行的,HOLB;当某一个请求阻塞时就会导致同一条连接的后续请求被阻塞;
为了解决这一问题:提出了pipellining的概念;客户端发起一次请求时不必等待响应便直接发起第二个请求;服务端按照请求的顺序一次返回结果;
SPDY和HTTP/2:multiplexing:多路复用技术出现;能够让多个请求和响应的传输完全混杂在一起进行;通过streamID来互相区别;
PS:HTTP借助于底层的TCP虚拟连接,HTTP协议本身无需连接;就好比A和B打电话,A和B是借助于底层的简化先连接交换信息;但是A和B本身无需连接;

2.HTTP是一种无状态协议
无状态:是指服务端对于客户端每次发送的请求都认为它是一个新的请求,上一次会话和下一次会话没有联系; HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。
http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.

参考资料:
1.链接:http://www.jianshu.com/p/30744fbd1f01

3.GET和POST的区别

1.GET请求把请求内容放在URL的querystring里,POST请求把请求内容放在FORM里,也就是请求的BODY里。

2.GET请求的数据大小有长度限制,实际上是浏览器限制URL的长度,POST没有限制。

3.GET请求存在安全性问题,因为数据直接写在URL里,会CACHE,查浏览记录也可以查到。

除了GET和POST还有PUT和DELETE,分别是增加和删除

4.一些常见的HTTP response状态码

1XX表示请求已成功接受,临时响应(消息)

2XX表示请求已成功接受(成功)

代表的有200表示请求成功接受并处理,请求所需的响应头或数据体随本条响应返回

3XX表示重定向,响应已接受但还需要进一步处理(重定向)

代表的有302,重定向到其他地址,浏览器将根据返回的数据体中的LOCATION重新发起对新的URL的请求;304,请求的内容已缓存,直接从缓存里读即可。

4XX表示客户端错误

代表的有400客户端请求有语法错误等,403客户端请求被接受但服务器拒绝响应,404请求URL地址错误

5XX表示服务器错误

代表的有500服务器发生不可预期的错误,503表示服务器暂时不接受请求稍后恢复。

5.HTTP 的HEAD

HEAD分为四大类,通用头(描述协议本事,比如CONNECTION等)  实体头(描述BODY内容)   请求头(请求独有) 响应头(响应头)

Request

CACHE 包括if-modified- since  / if-none-match/(这两个都和304有关)  /cache-control

CLIENT 包括ACCEPT ACCEPT-LANGUAGE ACCEPT-CHARSET ACCEPT-ENCODING USER-AGENT

COOKIE 很重要的头

ENTITY 包括CONTENT-LENGTH  CONTENT-TYPE等

MISCELLANOUS 包括referer表示从哪里链接来的

TRANSPORT: 包括HOST和CONNECTION

Response

CACHE包括DATE EXPIRES VARY

COOKIE包括SET-COOKIE/P3P

ENTITY包括CONTENT-TYPE CONTENT-LENGTH CONTENT-ENCODING CONTENT-LANGUAGE等等(后两个是在REQUEST的CLIENT里)

MISCELLENOUS包括SERVER,服务器信息

LOCATION 重定向位置

TRANSPORT包括CONNECTION等



原创粉丝点击