HTTP (HTTP-Hypertext transfer protocol),超文本传输协议,是超媒体系统应用之间的通信协议。是一个让网络客户端和服务器端相互传输交互的协议,是Request和Response的协议,简单来说,就是Client发送请求Request,而Server响应请求Response。
【另外,在HTTP中,服务器端不能主动连接客户端,都是客户端先请求,服务器端再响应。所以基于HTTP的 客户端 实时响应 服务器端 ,只能通过长连接,或者定时轮训等方式来实现,此处不做讨论】
HTTP请求Request
Request就是客户端向服务器端发送的请求,举个简单的例子,我们访问本地,输入网址http://localhost:8080/test/index.jsp,并按回车,这时候就向本地服务器发送了一个访问的请求,这个就是HTTP的Request。
一个完整的Http的请求Request如下:
POST /test/index.jsp HTTP/1.1
Accept: text/plain; text/html
Accept-Language: en-gb
Connection: Keep-Alive
Host: localhost
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows98)
Content-Length: 33
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
lastName=Franks&firstName=Michael
Request主要包含三个部分:
1、方法 + URI + 协议/版本,
对应上面的【POST /examples/default.jsp HTTP/1.1】,方法:POST; URI:/examples/default.jsp; 协议版本:HTTP/1.1
请求方法Method包括:GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE。其中GET和POST最常用。
2、请求头部Header,一系列通过“:”连接的key-value。这些键值都是客户的环境信息,例如:浏览器语言,主体内容的长度等等。
3、主体内容Body,除了上面两个,剩余的部分,通常是“=”连接的key-value
HTTP响应Response
Response是服务器端接到客户请求,处理后再返回给客户端。Request和Response是配对的,只要客户request,服务器就会返回Response。
举个简单的例子,我们输入网址http://localhost:8080/test/index.jsp,按回车后,这时候浏览器显示的就是从服务器返回的内容,这个返回的内容就是HTTP的Response。
一个完整的Http的请求Request如下:
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Set, 4 May 2013 13:13:33 GMT
Content-Type: text/html
Last-Modified: Set, 4 May 2013 13:13:12 GMT
Content-Length: 112
<html>
<head>
<title>HTTP Test</title>
</head>
<body>
Hello World !
</body>
</html>
Response主要包含三个部分:
1、协议/版本 + 状态标识 + 描述,对应【HTTP/1.1 200 OK】,
协议/版本:HTTP/1.1; 状态标识:200; 状态描述:OK 。
2、响应头部Header,一系列通过“:”连接的key-value。
3、主体内容Body,除了上面两个,剩余的部分。就是我们平时编写的HTML格式,以供浏览器呈现。
这部分介绍了HTTP的请求和响应,那么他们两个之间是怎么样在网络中传输通信的呢?就需要使用Socket。
— — 参考《How Tomcat Works》