HTTP协议(一):HTTP

2018-09-23  本文已影响0人  小小的白菜

HTTP 协议,即超文本传输协议( Hypertext transfer protocol )。是一种详细规定了浏览器和万维网( WWW = World Wide Web )服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

特点

HTTP 协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用 HTTP 协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

无状态协议

协议的状态指的是下一次传输可以记住这次传输信息的能力。http是不会为了下一次的连接而维护这次连接所传输的信息,为了保证服务器的内存。

比如客户获得一张网页之后关闭浏览器,然后再一次启动浏览器,再登陆该网站,但是服务器并不知道客户关闭了一次浏览器。

由于Web服务器要面对很多浏览器的并发访问,为了提高Web服务器对并发访问的处理能力,在设计HTTP协议时规定Web服务器发送HTTP应答报文和文档时,不保存发出请求的Web浏览器进程的任何状态信息。

这有可能出现一个浏览器在短短几秒之内两次访问同一对象时,服务器进程不会因为已经给它发过应答报文而不接受第二期服务请求。由于Web服务器不保存发送请求的Web浏览器进程的任何信息,因此HTTP协议属于无状态协议(Stateless Protocol)。

HTTP/1.1起,默认都开启了 Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

Keep-Alive 不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如 Apache)中设定这个时间。

http 的工作流程

请求信息

// 请求行:
GET http://www.baidu.com/ HTTP/1.1

// 请求头:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp;q=0.8
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:www.baidu.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36

响应信息

// 响应行:
Http/1.1 200 ok

// 响应头:
BDPAGETYPE:1
BDQID:0xbabd68fc00007703
BDUSERID:0
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Cxy_all:baidu+be175779b859a62a7a28a9afd86882b0
Date:Sat, 19 Nov 2016 06:35:48 GMT
Expires:Sat, 19 Nov 2016 06:35:38 GMT
Server:bfe/1.0.8.18
Set-Cookie:BDSVRTM=15; path=/
Set-Cookie:BD_HOME=0; path=/

请求方法

方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405Method Not Allowed);

当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501Not Implemented)。

HTTP服务器至少应该实现GETHEAD方法,其他方法都是可选的。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。

常见响应码

参考文章

关于HTTP协议,一篇就够了
HTTP详解

上一篇 下一篇

猜你喜欢

热点阅读