补习HTTP原理

来源:互联网 发布:linux建网站视频 编辑:程序博客网 时间:2024/04/28 05:07

 HTTP协议位于应用层,下面是TCP协议,TCP协议是传输控制协议,负责数据的传输控制。

HTTP协议只是一个规范,定义了各方面的标准,比如数据的传输并不是杂乱无章的进行传输的,而是有一定的格式,HTTP规定数据格式,然后利用TCP协议来进行传输。再比如,协议的核心是数据的传输,但是为这个核心服务的还有外在的一个因素,HTTP也规定了这些因素的标准,比如代理访问等,都需要按照一定的标准来加以规范。

大家都知道,标准制定了以后,服务器端接收到客户端请求之后,就可以按规章办事,来解析客户端的请求。其实大家静下心来,可以从现实生活当中找到很多为了效率为了协作而制定标准的例子。

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。
这两种类型的消息由以下几部分组成:
1、请求格式:
一个起始行--------内容包括:请求方式,URI,HTTP协议的版本
一个或者多个头域

一个指示头域结束的空行
和可选的消息体组成。

四部分当中头域是最重要的
2、响应格式:
HTTP协议的版本、状态代码、描述
响应头
响应正文

HTTP/1.1 200 OK
Server:nio/1.1
Content-type:text/html;charset=GBK
Content-length:102
<html>
  <head><title>helloapp</title></head>
  <body><h1>hello</h1></body>
</html>
具体详细的介绍见:http://www.cnpaf.net/class/http/index_1.html

HTTP的头域包括通用头,请求头,响应头和实体头四个部分。
每个头域由一个域名,冒号(:)和域值三部分组成。
域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

Cache-Control头域
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。
各个消息中的指令含义如下:
Public指示响应可被任何缓存区缓存。<BR>
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

Pragma头域

Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同


请求头:
Host头域
Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。

Referer头域
Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。

Range头域
Range头域可以请求实体的一个或者多个子范围。例如,
表示头500个字节:bytes=0-499
表示第二个500字节:bytes=500-999
表示最后500个字节:bytes=-500
表示500字节以后的范围:bytes=500-
第一个和最后一个字节:bytes=0-0,-1
同时指定几个范围:bytes=500-600,601-999
但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。

User-Agent头域
User-Agent头域的内容包含发出请求的用户信息。

 

这里有个全面的:

http://www.cnpaf.net/class/http/index_1.html

原创粉丝点击