首页 > 代码库 > HTTP

HTTP

1. Http(Hypertext Transfer Protocol)超文本传输协议,从1990年开始就在WWW上广泛应用,是现今在WWW上应用得最多的协议,目前的版本为1.1

2. Http是一个基于请求/响应模式的,无状态的协议(request/response based ,stateless protocol)

3. 在Http1.0中,当连接建立后,浏览器发送一个请求,服务器回应一个消息,之后,连接就被关闭。当浏览器下次请求的时候,需要重新建立连接,很显然

    这种需要不断建立连接的通信方式开销比较大。

    技术分享

4. 在Http1.1版本中,给出了一个持续连接(Persistent Connections)的机制,并将其作为Http1.1中建立连接的缺省行为。通过这种连接,浏览器可以在建

    立一个连接之后,发送请求并得到回应,然后继续发送请求并再次得到回应。而且,客户端还可以发送流水线请求,也就是说,客户端可以连续发送多个请求,

    而不用等待每一个响应的到来。服务器会自行判断一个链接,如果长时间没有请求继续发送,则会断开链接。

    技术分享

5. HTTP的URL格式:

    1). http://host[: port] [abs_path]

    2). 其中http表示要通过HTTP协议来定位网络资源。

    3). Host表示合法的Internet主机域名或IP地址(以点分十进制格式表示。域名或通过DNS转换为响应的IP地址)

    4). Port用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接。如果port是空,则使用缺省的端口80。

    5). abs_path指定请求资源的URI(Uniform Resource Identifier,统一资源标识符),如果URL中没有给出abs_path,那么当它作为请求URI时,

          必须以“/”的形式给出。通常这个工作浏览器就帮我们完成了

6. URI 纯粹是一个符号结构,用于指定构成Web资源的字符串的各个不同部分。URL 是一种特殊类型的URI,它包含了用于查找某个资源的足够的信息。其他

     的URI,例如:mailto:zhanglong217@yahoo.com.cn,则不属于URL,因为它里面不存在根据该标识符来查找的任何数据。这种URI成为URN(通用资源名)

7. HTTP请求由三部分组成,分别是:请求行,消息报头,请求正文

8. 请求行:请求行以一个方法符号开头,后面跟着请求URI和协议的版本,以CRLF作为结尾。请求行以空格分隔。除了作为结尾的CRLF外,不允许出现单独的

    CR或LF字符,格式如下:

    Method Request-URI HTTP-Version CRLF

    Method表示请求的方法,Request-URI是一个统一资源标识符,标识了要请求的资源,HTTP-Version表示请求的HTTP协议版本, CRLF表示回车换行。例如:

    GET /test.html HTTP/1.1 (CRLF)

9. 当我们通过在浏览器的地址栏中直接输入网址的方式去访问网页的时候,浏览器采用的就是GET方法向服务器获取资源

10. 注意:在HTML文档中,书写get和post,不区分大小写,但HTTP协议中的GET和POST只能是大写形式

      技术分享

     技术分享

11. 与HTTP请求类似,HTTP响应也是由三个部分组成,分别是:状态行,消息报头,响应正文

12. 状态行由协议版本,数字形式的状态代码,相应的状态描述组成,各元素之间以空格分隔,除了结尾的CRLF(回车换行)序列外,不允许出现CR或LF字符。

       格式如下:

       HTTP-Version Status-Code Reason-Phrase CRLF

       HTTP-Version表示服务器HTTP协议的版本,Status-Code表示服务器发回的响应代码,Reason-Phrase表示状态代码的文本描述,CRLF表示回车换行,

       例如:HTTP/1.1 200 OK (CRLF)

13. 状态代码由三位数字组成,表示请求是否被理解或被满足,状态描述给出了关于状态代码的简短文本描述状态代码的第一个数字定义了响应的类别,后面两个

       数字没有具体的分类。第一个数字有五种可能的取值

       1). 1xx:指示信息—表示请求已接收,继续处理

       2). 2xx:成功—表示请求已经被成功接收,理解,接受

       3). 3xx:重定向—要完成请求必须进行更进一步的操作

       4). 4xx:客户端错误—请求有语法错误或请求无法实现

       5). 5xx:服务器端错误—服务器未能实现合法的请求

14. HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行,消息报头(可选),空行(只有CRLF的行),

       消息正文(可选)组成。

15. 对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行

HTTP