Http
http 协议全程是Hype Text Transfer Protool (超文本传输协议)的缩写,是用于万维网(www:world wide web)服务器传输超文本到本地浏览器的传送协议。http 协议是因特网上应用最为广泛的一种网络传输协议,所有的www文件都必须遵循这个标准。Http是一个基于Tcp/IP 的通信协议来传输数据(HTML 文件,图片文件,查询结果等)
Http工作原理
Http 协议的作用与客户端和服务端架构上,浏览器作为HTTP 客户端通过URL 向服务端发送请求(web服务器),web服务器在接受到请求后,向客户端发送响应消息。HTTP 默认的端口是80。常见的web服务器有:Apache 服务器,lls服务器等
HTTP 的特性:
- HTTP是无连接的,无连接的含义是每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应当后,即可=断开连接,采取这种方式可以节省传输时间。
2.HTTP是媒体独立的:这意味着只要客户端和服务器知道如何处理数据内容,任何类型都可以通过HTTO发送,客户端以及服务器指定使用合适MIME-type内容类型。
3.HTTP 是状态的协议:指对事物的处理没有记忆的能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,可能导致每次连接传输的数据量的增大,令一方面服务器不需要先前信息时它的应答就教块。
HTTP 消息结构
在传输中HTTP 规定了其传输的格式
例如下面格式:
http 请求信息如下 :
//请求行
POST /index.html HTTP/1.1 请求方法 url 协议/版本号 Host: localhost 主机地址
//请求头部
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
// 请求数据
Referer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153);
text-decoration: none;">http://localhost/</a> Content-Length:25 Content-Type:application/x-www-form-urlencoded```
服务器响应消息:
下面实例是一点典型的使用 GET 来传递数据的实例:
客户端请求:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
服务器响应
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT H
ETag: “34aa387-d-1568eb00”
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
输出结果是:Hello World! My payload includes a trailing CRLF.
关于HTTP中长连接和短连接:
HTTP1.0协议不支持长连接,从HTTP1.1协议以后是支持长连接的。要说HTTP中的长连接和短连接就要了解两点 HTTP是属于应用层的协议,Tcp是属于传输层的协议是真正传输的一层。而HTTP是基于传输层TCP进行的长连接和短连接。长连接就是位置对通道的复用,而http的短连接发送请求收到请求回复后就断开。
HTTP如何设置长连接:
设置Connection 为keep-alive 来设置。注意长连接并不是永久连接的。如果一段时间内(具体的时间长短,是可以在header当中进行设置的,也就是所谓的超时时间),这个连接没有HTTP请求发出的话,那么这个长连接就会被断掉。(因此可用心跳来维持长连接)
长连接:连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接(一个TCP连接通道多个读写通信);
短连接:连接→数据传输→关闭连接;