您的位置:首页 > 理论基础 > 计算机网络

Http 协议的简单介绍

2017-07-12 20:00 218 查看
第一篇博客中简单的使用HttpURLConnection进行操作, 本篇文章会简单介绍HTTP协议特点、2中报文的格式以及工作原理
一、Http简介
HTTP (HyperText Transfer Protocol)超文本传输协议, 一种应用层面向对象的协议.

1、HTTP URL格式:http://host[":"post][abs_path]

     http:表示通过http协议来定位网络资源

     host:主机域名或者IP地址

    post:指定的端口号

    abs_path:指定请求资源的URL

2、其主要特点有:

   (1)支持c/s 模式(客户端/服务器)

   (2)简单快捷:客户端向服务器请求时,需传递请求方法和URL路径

   (3)灵活:HTTP可传递任意类型的数据对象,通过Content-type进行标记

   (4)无连接:每次连接只处理一个请求,服务器处理并收到客户应答后断开连接

   (5)无状态:协议对事务处理没有记忆能力

3、 主要有2中报文:请求报文和响应报文

二、HTTP请求报文

1. 请求报文的组成

    请求行(request line)

    请求头部(header)

    空行(blank line)

    请求数据(request body)

(1)请求行: Method     Request-URL    HTTP-Version      CRLF

                      请求方法       URL                HTTP协议版本    回车换行
比如访问我第一篇博客的请求行:

 (Request-Line)  GET /weixin_39158738/article/details/74498471 HTTP/1.1

请求方法有如下:

     GET:  请求获取Request-URL 所标识的资源

     POST: 在Request-URL 所标识的资源后附加新的数据

    HEAD: 请求响应消息报头

    PUT:  请求服务器存储一个资源,并用Request-URL 作为其标识

    DELETE: 请求服务器删除Request-URL 标识的资源

    OPTIONS: 请求查询服务器的性能

    TRACE:   请求服务器收到的请求信息,主要用于测试或诊断

    CONNECT: HTTP/1.1协议中预留给能够将连接改管道方式的代理服务器

(2)请求头部:

由关键字/值组成  ":"分隔。

Host blog.csdn.net          //请求主机名

User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0  //发送请求的浏览器类型,操作系统信息

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8    //客户端可识别的内容类型列表

Accept-Language en-US,en;q=0.5         //浏览器所支持的语言

Accept-Encoding gzip, deflate          //客户端可识别的数据编码

Cookie bdshare_firstime=1496368632571; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1499673578,1499760385,1499851111,1499851922; uuid_tt_dd=5888471425311918955_20170602; __message_sys_msg_id=0; __message_gu_msg_id=0; __message_cnel_msg_id=0;
Hm_lvt_20bba81dc5fa07f97ba1779a51ed918a=1497437217; __message_in_school=0; UM_distinctid=15d0d21cf4547-034204773eb4258-71216750-1aeaa0-15d0d21cf46a7d; CNZZDATA1260104973=855675826-1499160912-null%7C1499160912; uuid=6552725d-9c0c-4610-ae7c-f42ec11a1180; dc_tos=osz5cc;
Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1499857351; avh=74498471; dc_session_id=1499857356367

Connection keep-alive             //指定连接选项

If-None-Match W/"7294071e29dd1fed2a8d002b179282de"

Cache-Control max-age=0

(3)空行: 最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

(4)请求数据

请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

三、响应报文

1、响应报文的组成:

    状态行

    消息报头

    空行

    响应正文

(1)状态行: HTTP-Version  status-code    Reasion-phrase       CRLF

                       HTTP 版本    响应状态代码  状态代码的文本描述   回车换行

         eg: 访问第一个博客的时候出现: (Status-Line) HTTP/1.1 200 OK

常见的响应状态代码:

200 OK:客户端请求成功。

400 Bad Request:客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。

403 Forbidden:服务器收到请求,但是拒绝提供服务。

404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

500 Internal Server Error:服务器发生不可预期的错误。

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)

(2)响应报头: 通过":"分开的键值对

比如:

Server openresty                                                        //服务器用来处理请求的系统信息

Date Wed, 12 Jul 2017 10:59:31 GMT                //消息产生的时间和日期

Content-Type text/html; charset=utf-8             

Transfer-Encoding chunked

Connection keep-alive                                                //允许发送指定连接的选项

Keep-Alive timeout=20

Vary Accept-Encoding

Cache-Control private, max-age=0, must-revalidate   //缓存指令

Etag W/"7294071e29dd1fed2a8d002b179282de"

X-Powered-By PHP 5.4.28

Content-Encoding gzip                                           //响应的数据编码

(3)响应正文

服务端返回的数据

四、Http的工作原理

一次HTTP操作称为一个事务,其工作过程可分为四步:

(1)客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。

(2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

(3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

(4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。

五、如何使用Firefox抓取请求报文以及响应报文

打开Firefox浏览器 -> Tools -> Add ons -> 在跳出来的页面搜HttpFox 进行安装

安装完毕之后点击重启浏览器 -> Tools -> Web development -> HttpFox -> Toggle HttpFox

ps:必须联网

下面有一张本地截图可供参考: 访问第一个博客的请求报文以及响应报文 http://blog.csdn.net/weixin_39158738/article/details/7 9881
4498471



六、下篇预告:

        下一篇会介绍android HttpURLConnection如何获得请求报文以及响应报文  以及  JSON的简介和解析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: