zoukankan      html  css  js  c++  java
  • http协议详解(1)

     HTTP协议报文格式

    接下来我们看看HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB服务器端访问页面的过程和HTTP协议报文的格式。

    基于HTTP协议的客户机访问包括4个过程,分别是建立TCP套接字连接、发送HTTP请求报文、接收HTTP应答报文和关闭TCP套接字连接:

    1. 创建TCP套接字连接

    客户端与WEB服务器创建TCP套接字连接,其中WEB端服务器的地址可以通过域名解析确定,WEB端的套接字侦听端口一般是80。

    2. 发送HTTP请求报文

    客户端向WEB服务端发送请求报文,HTTP协议的请求报文格式为:

     

    请求消息 = 请求行(实体头信息)CRLF[实体内容]
    请求行 = 方法 URL HTTP版本号 CRLF
    方法 = GET|HEAD|POST|扩展方法
    URL = 协议名称 + 宿主名 + 目录与文件名

     

     

    其中"CRLF"表示回车换行。

    "请求行"中的"方法"描述了对指定资源执行的动作,常用的方法"GET"、"HEAD"和"POST"等3种,它们的含义如表15-8所示:

    表15-8 HTTP请求方法

     

    取值

    描述

    GET

    WEB服务器中获取对象,不同类型的对
    象将获取不同的信息,比如:

    · 文件类型对象,获取该文件的内容。

    · 程序类型对象,获取该程序执行的结果。

    · 数据库查询类型对象,获取该查询的结果。

    HEAD

    要求服务器查找对象的元信息。

    POST

    从客户端向WEB服务器发送数据。

    "实体头信息"中记载了报文的属性,利用这些信息可以实现客户端与WEB服务器之间的请求或应答,它包括报文的数据类型、压缩方法、语言、长度、压缩方法、最后一次修改时间、数据有效期等信息。

    实体内容是报文传送的附加信息,一般供POST请求填写。

    GET请求报文例子

    一个URL为"http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔"的GET请求报文例子如下:

    GET http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔 HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; 
    Windows NT 5.1; SV1; .NET CLR 2.0.50727)
    Host: www.zhiliaowang.com
    Connection: Keep-Alive
    

     

     

     

     

    其中"/toupiaoceshi.asp?name=朱云翔"是URL信息,语句"ACCEPT:*/*"及其后的语句是"实体头信息"。

    注意:在语句"Connection:Keep-Alive"下的空行是必须的。

    POST请求报文例子

    下面是HTTP协议中关于POST请求报文例子,节自《中国联合通信公司短消息网关系统接口协议(SGIP)》V1.2版:

    一般情况下,采用POST报文传送信息的数据存储在"实体"部分中。

    POST /sp.cgi HTTP/1.0     /* 请求行,服务程序为sp.cgi */
    Host: www.spserver.com     /* 以下为实体头信息 */
    Authorization: Basic <Base64 串>
    Content-Length: <Content-Length>
    <CommandId>=<4>       /* 以下为POST请求的实体信息 */
    <SequenceNumber>=<205502327125025327> /* 实体部分输送报文 */
    <UserNumber>=<8613001125453>
    <SPNumber>=<168>
    <MessageContent>=<ABCD 1234>


     

     

     

     

     

    3. 接收HTTP应答报文

    WEB服务器处理客户请求,并向客户机发送应答报文,HTTP协议的应答报文格式为:

    应答报文 = 状态行(实体头信息)CRLF [实体内容]

    状态行   = HTTP版本号 状态码 原因叙述

    状态码描述了WEB服务器执行客户机请求的状态信息,其取值含义如表15-8所示:

    表15-8 HTTP应答响应码含义

     

    取值

    描述

    1××

    保留。

    2××

    成功接收,比如“200”表示处理成功。

    3××

    客户需进一步细化请求。

    4××

    客户错误,比如“404”表示访问的
    指定资源不存在。

    5××

    服务器错误。

    GET应答报文例子

    一个请求URL为"http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔"的应答报文例子如下:

     

     

    HTTP/1.1 200 OK
    Connection: keep-alive
    Date: Thu, 26 Jul 2007 14:00:02 GMT
    Server: Microsoft-IIS/6.0
    X-Powered-By: ASP.NET
    Content-Length: 190
    Content-Type: text/html
    Set-Cookie: ASPSESSIONIDSAATTCSQ=JOPPKDCAMHHBEOICJPGPBJOB; path=/
    Cache-control: private
    <html>
    <head>
    <title>精通Unix下C语言编程</title>
    </head>
    <body>
    <b>精通Unix下C语言编程与项目实战<br></b>
    <b>投票测试<br></b>
    感谢你为选手
    朱云翔
    投票!
    </body>
    </html>

     

     

     

     

     

     

     

     

     

    语句"HTTP/1.1 200 OK"中,"200"是响应码,"OK"是原因描述。

    POST应答报文例子

    下面是HTTP协议中关于POST应答报文例子,节自《中国联合通信公司短消息网关系统接口协议(SGIP)》V1.2版:

     

    HTTP/1.0 200 OK       /* 状态行,应答成功 */
    Date: Tue, 13 Mar 2001 02:45:12 GMT /* 以下为实体头信息 */
    Server: Apache/1.3.12 (Unix)
    Content-Type: text/html
    Connection: close

     

    <CommandId>=<80000004>     /* 以下为POST应答的实体信息 */
    <SequenceNumber>=<205502327125025327>
    <UserNumber>=<8613001125453>
    <SPNumber>=<168>
    <MessageContent>=< EFGH 5678> <Result>=<0>

     

     

     

     

     

    一般情况下,POST应答报文的"实体"部分存储实际传输的信息。

    4. 关闭TCP套接字连接

    客户机与服务器双方关闭套接字连接,结束TCP/IP对话。

  • 相关阅读:
    LeetCode 1245. Tree Diameter
    LeetCode 1152. Analyze User Website Visit Pattern
    LeetCode 1223. Dice Roll Simulation
    LeetCode 912. Sort an Array
    LeetCode 993. Cousins in Binary Tree
    LeetCode 1047. Remove All Adjacent Duplicates In String
    LeetCode 390. Elimination Game
    LeetCode 1209. Remove All Adjacent Duplicates in String II
    LeetCode 797. All Paths From Source to Target
    LeetCode 1029. Two City Scheduling
  • 原文地址:https://www.cnblogs.com/work115/p/5582850.html
Copyright © 2011-2022 走看看