http协议学习笔记(一)

说明

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。


这里的超文本(HyperText)指的是图片、音频、视屏和纯文本等媒体类型(Internet Media Type)。
对媒体类型的理解详见:https://baike.baidu.com/item/Internet%20Media%20Type/2364454?fr=aladdin
MIME 类型理解详见:
http://www.w3school.com.cn/media/media_mimeref.asp
https://baike.baidu.com/item/MIME/2900607

总结一下互联网媒体类型(Internet Media Type)、多用途互联网邮件扩展类型(MIME)关系:前者是对后者的扩展,扩展的目的是为了在http协议中更好的使用MIME,符合http协议需求,这两者在http体现为content-type。

http协议特点

详见细文章:http://blog.csdn.net/u014005836/article/details/51129655

术语

以下列出了常用的http/1.1版本中的术语。理解这些术语可以帮助我们更好的去理解HTTTP。
连接(connection)

为通信而在两个程序间建立的传输层虚拟电路。

消息(message)
HTTP通信中的基本单元。它由一个结构化的八比特字节序列组成

请求(request)
一种HTTP请求消息,从客户端向服务器端发送消息的动作。

响应(response)
一种HTTP响应消息,服务器端接受到客户端的请求,并对请求做出回复的动作。

资源(resource)
一种网络数据对象或服务。比如网络上的视频、图片、网站和出行导航服务器都是网络是的一种资源。可以这么说只要你在网络你能访问到的所有东西都是可以被看作成资源。

实体(entity)
实体是请求或响应的有效承载信息。一个实体包含元信息和内容,元信息以实体头域(entity-header field)形式表示,内容以消息主体(entity-body)形式表示。

客户端(client)
为发送请求建立连接的程序.

用户代理(user agent)
初始化请求的客户端程序。常见的如浏览器,编辑器,蜘蛛(网络穿越机器人),或其他的终端用户工具.

服务器(Server)
服务器是这样一个应用程序,它同意请求端的连接,并发送响应(response)

源服务器(Origin server)

存在资源或者资源在其上被创建的服务器(server)被成为源服务器(origin server)

http协议格式

上个思维导图

http协议学习笔记(一)_第1张图片

http请求格式

请求行(Request-Line)

请求消息的第一行是请求行,请求行由三部分组成:请求方法、请求URL和HTTP版本,每个部分使用SP分隔,最后以一个CRLE结束。

Request-Line=Method SP Request-URL SP HTTP-Version CRLF

SP表示空格键,CR表示换行(用字符"\n"表示),LE表示回车(用字符"\r"表示)。

请求头(Reqeust Header)

请求头也叫做请求实体头域,用来描述请求资源和请求内容的元信息。例如:实体头域Connection: keep-alive描述了连接的形式,实体头域Host: localhost:8080描述连接的主机地址,实体头域Content-Type: application/x-www-form-urlencoded描述了内容媒体类型。HTTP/1.1定义了一些标准的请求实体头域,如果客户端和服务器端需要也可以自定义实体头域。每个实体头域后边都必须跟一个CRLE,用于分隔每实体头域。

请求内容

请求内容也叫做请求实体主体,请求内容就是客户端发送给服务器的信息,客户端发送的内容的媒体类型、编码信息都是通过请求头进行描述的。请求内容和请求头使用一个CRLE分隔。

http响应格式

状态行(Status-Line)
相应消息的第一行是状态行,状态行由三个部分组成:HTTP版本协议、状态码和原因短语(即状态简短描述),每个部分使用SP分隔,最后以一个CRLE结束。
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
响应头(Response Header)
响应头也叫做响应实体头域,用来描述响应资源和响应内容的元信息。例如:响应头域Content-Type: text/html;charset=UTF-8描述了响应内容的媒体类型。响应实体头域Server: Apache-Coyote/1.1描述了服务器端处理请求的软件信息。和请求头一样HTTP/1.1定义了一些标准的响应实体头域,如果客户端和服务器端需要也可以自定义实体头域。每个实体头域后边都必须跟一个CRLE,用于分隔每实体头域。
 响应消息
响应消息也叫做响应实体主体,响应内容是服务器端根据客户端请求消发送的响应内容,服务器端发送的内容的媒体类型、编码信息都是通过响应头进行描述的。响应内容和响应头使用一个CRLE分隔。

HTTP/1.1头域

HTTP/1.1常见标准头域

HTTP/1.1定义了很多标准头域,这里只列出一些开发过程中常见的标准头域。看不懂的话制动这些头域是HTTP/1.1中定义的标准头域即可。

Accept
Accept请求头域被用于指定服务器返回给客户端可接受的响应媒体类型。Accept头域能被用于指明请求是期望服务器返回某些期望的媒体类型的响应,例如请求一个内嵌的图像。

Accept-Charset
Accept-Charset请求头域可以用来指出请求客户端能接受什么样的字符集响应。这个头域允许客户端能通知服务器指定何种此客户端更能理解的或更具特殊目的的字符集的响应。

Accept-Encoding
Accept-Encoding请求头域和Accept头域相似,但Accept-Encoding是限定服务器返回给客户端可以接受的内容编码

Accept-Language

Accept-Language请求头域和Accept请求头域类似,但是它是限定服务器返回给客户端喜爱的自然语言。


Connection
Connection常用头域允许发送者指定某一特定连接中的选项,这些选项不得由代理(proxy)在以后的连接中传送。

Content-Encoding
“Content-Encoding”实体头域是对媒体类型的修饰。当此头域出现时,其值表明对实体主体采用了何种的内容编码,从而可以知道采用何种解码机制以获取Content-Type头域中指出的媒体类型。Content- Encoding头域主要目的是可以在不丢失下层媒体类型的身份下对文档进行压缩。


Content-Language
Content-Language实体头域描述了实体面向用户的自然语言。请注意,这不一定等同于实体主体中用到的所有语言。

Content-Length
Content-Length实体头域按十进制或八位字节数指明了发给给接收者的实体主体的大小,或是在使用HEAD方法的情况下,指明若请求为GET方法时应该发送的实体主体的大小。

Content-Type
Content-Type实体头域指明发给接收者的实体主体的媒体类型

Date

Date常用头域表明产生消息的日期和时间

Host

Host请求头域说明了正在请求资源的网络主机和端口

HTTP/1.1协议规范

http://download.csdn.net/download/ashin2013/4190927

建议通读此pdf,对理解HTTP/1.1有很大帮助。

你可能感兴趣的:(Java语言基础)