一、HTTP概况
1、1概况
Web的应用层协议是超文本传输协议(HyperText Transfer Protocol HTTP),在RFC 1945和RFC 2616 中进行了相关的定义
1、2持续链接
所有的请求及其相应都是经相同的TCP连接发送,这种情况被称为持续连接
1、3非持续连接
每一个请求响应对都是经一个单独的TCP连接发送,这种情况被称为非持续连接
二、报文格式
HTTP规范 RFC 1945和RFC 2616 包含了对HTTP报文格式的定义,HTTP有请求报文和相应报文两种
2、1 HTTP请求报文
GET /index.html HTTP/1.1
Host: www.csdn.net
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr
一个HTTP请求报文通用格式如下
其中HTTP请求的第一行叫做请求行(request line),后续的其他行叫做首部行(header line),请求行有三个字段:方法字段、URL字段、和HTTP版本字段。方法字段:GET、POST、HEAD、PUT、DELETE;版本字段是指浏览器是实现的哪个HTTP版本,此例中是指HTTP1.1。当使用GET方法的时候报文实体是空的,而使用POST方法的时候才会使用该实体。
2、2 HTTP响应报文
一个具体的响应报文如下:
HTTP/1.1 200 OK
Connection: close
Date: Tue, 09 Aug 2011 15:44:04 GMT
Server: Apache/2.3.3 (CentOS)
Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
(data data data data data data data data ...)
响应报文有三个部分:第一行为初始状态行(status line),后续的几行是首部行(header line),然后是空白行,最后是实体行(entity body)。状态行有3个字段:协议版本、状态码、相应状态信息
服务器用Connection: close 首部行告诉客户端,发送完报文后将关闭该TCP连接。Date:首部行指示服务器产生并发送该相应报文的日期和时间。Content-Length: 6821首部行指示了被发送对象中的字节数,Content-Type: text/html 首部行指示了实体中的对象是html文本。
一个HTTP响应报文通用格式如下:
三、HTTP协议层架构
20 世纪 90 年代,HTTP 作为一套可扩展的协议被设计出来,并随时间不断演进。HTTP 是一种应用层的协议,通过 TCP,或者是== TLS==——一种加密过的 TCP 连接——来发送,当然,理论上来说可以借助任何可靠的传输协议。受益于 HTTP 的可扩展性,时至今日,它不仅可以用来获取超文本文档,还可用来获取图片、视频或者向服务端发送信息,比如填写好的 HTML 表单。HTTP 还可以用来获取文档的部分内容,以便按需更新 Web 页面。架构图如下: