Http(超文本传输协议)是Web服务器和客户端之间传输信息所用的协议,它运行在Tcp上。
在早期的Http1.0中,Tcp连接建立之后浏览器只发送一个请求,之后一个响应消息被发回来,在然后TCP连接就被释放了。但那是Web页面只包含Html文本,因此这样设计也够用,但后来Web页面发展成有大量图片以及其他精美的东西,这样的设计就导致了效率低下。
为解决Http1.0效率低的问题,Http1.1诞生了,Http1.1支持持续连接(在一个Tcp连接中发送多条请求),也叫连接重用,还支持发送流水线请求(在没收到回应也可以发下一条请求)。Http1.1虽然解决了效率问题,但是带来一个新的问题——什么时候关闭连接?实际上客户机和服务器通常将持续连接保持打开状态,直到他们已经闲置了一小段时间(如60s),或者在打开了大量的连接需要关闭一些。
Http1.1通过持续连接提高效率,在持续连接提出之前,浏览器广泛使用并行连接的方式来提高性能。做法就是同时打开多个TCP连接,但它跟Http1.0的顺序连接有着同样的缺陷,而且对于服务器而言,同时运行多个Tcp会导致,这些并行连接之间互相竞争,造成丢包率的上升。所以持续连接更加优越。
Http常用方法简介:
GET:请求服务器发送页面。
POST:与GET类似,它携带一个URL,但不是简单的检索页面,而是提交表单内容,并返回一个指出结果的页面。
HEAD:请求消息头,不需要真正的页面。可以用于收集建索引所需要的信息或简单的测试一下URL的有效性。
PUT:存储一个web页面。
DELETE:删除一个WEB页面。
常见问题:GET和POST有什么区别?
答:Get请求把表单的数据显式地放在URI中,并且对长度和数据值编码有所限制.Post请求把表单数据放在HTTP请求体中,并且没有长度限制,还有就是Post比Get的安全性要高——比如在提交密码之类的信息若用Get就直接显示在url上了。
Http响应状态码:
代码 含义 例子
1** 信息 100=服务器同意处理客户请求
2** 成功 200=请求成功;204=没有内容
3** 重定向 301=移动页面;304=缓存的页面仍然有效
4** 客户端错误 403=禁止页面;404=页面没找到
5** 服务器错误 500=服务器内部错误;503=稍后再试
Http实现长连接?
在头部中加入 --Connection:keep-alive ,在HTTp协议请求和响应中加入这条就能维持长连接。无论客户端浏览器 (Internet Explorer) 还是 Web 服务器具有较低的 KeepAlive 值,它都将是限制因素。例如,如果客户端的超时值是两分钟,而 Web 服务器的超时值是一分钟,则最大超时值是一分钟。客户端或服务器都可以是限制因素。
Http请求报文结构:
Http响应报文结构: