zoukankan      html  css  js  c++  java
  • Http协议-报文

      2013的双12即将到来,网上购物是大家所熟悉的。看中小米电视时,可以先下订单然后再付款,电商根据订单将小米电视正确安全的送达给我们。包裹包含电视的基本信息及电视的使用说明书,使我们能够初步的了解它的基本情况及指导我们怎么去使用它。订单和使用说明书是客户与电商沟通的桥梁,指引他们在网上购物。当然基于Http协议的网络通信,客户端和服务器也需要一种东西作为两者沟通的桥梁---Http报文,客户端和服务器分别主要指浏览器和Web服务器。下面以Http报文存在的意义、类型及组成成分展开讲述。

    Http报文存在的意义

      Http报文是客户端与服务器之间互相传送的数据块,这些数据块以一些文本形式的元信息开头,描述报文的内容及含义(订单及使用说明书),后面跟着可选的数据部分(电视)。客户端和服务器会解析报文的含义执行对应的操作。比如,jsp里response.sendRedirect(url),Web服务器就会发送一个300-399之间的状态码和Location首部告诉浏览器重新请求Location指定的URL。如果浏览器需要与Web服务器持久连接,那么前者就需要发送Connection:keep-alive报头告诉后者处理完请求后不要关闭连接,后者需要关闭连接就需发送Connetion:close告诉前者已关闭连接。在基于Http协议的网络通信过程中,客户端和服务器之间的通信只能依靠Http报头。换句话说,没有Http报文,客户端就不能与服务器通信。

    Http报文的类型及组成成分

      Http报文主要包含请求报文和响应报文。报文包括以下格式

               起始行:报文的第一行,在请求报文中说明要做些什么,在响应报文中说明发生了什么

               首部字段:起始行后面有零个或多个首部字段,首部以一个空格结束。比如Content-Length:300,表示响应主体的长度

               主体:请求主体包含要发送给服务器的数据,响应主体包含要返回给客户端的数据,如下图

    起始行包括请求行和响应行,请求行的格式:

    响应行的格式:

    Http协议的报头是千变万化的,我们不可能记住所有报头代表的含义。所以需要了解报头每个部分代表的意义和进行归类。

    <method>:客户端告知服务器对资源执行的动作。比如GET,POST,HEAD

    <version>:之所以客户端和服务器都需要返回和发送http的版本,是因为每个版本的http的报头都有差异,比如http1.0有持久连接的特性,而http0.9没有,客户端和服务器会根据http的版本在解析报头的时候做出正确的判断后再执行相应的动作。

    <status>:服务器告诉客户端这次请求事务的结果,是失败还是成功还是...

    <headers>:首部主要包括通用首部、请求首部、响应首部及主体首部。

        通用首部:可以出现在请求报头和响应报文中。比如,Date,Connection

        请求首部:仅出现在请求报文,比如,referer,host

        响应首部:仅出现在响应报文,比如,Server

        主体首部:描述主体,比如contentType,contentLength

    <entity>:真正数据存放的地方。

      

  • 相关阅读:
    mysql 性能优化方案
    MYSQL 优化常用方法
    MongoDB集群架构及搭建
    memcache分布式 [一致性hash算法] 的php实现
    memcache 的内存管理介绍和 php实现memcache一致性哈希分布式算法
    【转】linux 查看进程启动路径
    centos7 编译安装nginx+tcp+grpc转发
    mongodb笔记
    【转】mysql 解事务锁
    【转】centos7 搭建etcd集群
  • 原文地址:https://www.cnblogs.com/lijianwen/p/3470172.html
Copyright © 2011-2022 走看看