• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 带新手走进神秘的HTTP协议,新手走进协议

带新手走进神秘的HTTP协议,新手走进协议

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了http协议,http协议详解,http协议是什么,http协议原理,http协议的功能是等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

带新手走进神秘的HTTP协议,新手走进协议


在开发的时候经常需要访问网络,比如Android就有好多这方面的框架:Volley、OkHttp、Retrofit等,当你看这些框架源码时,可能会很好奇关于http的部分,它的首部字段是什么意思,http是如何工作的??等等,希望这篇文章会为你解惑。

一、概念

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:

HTTP默认的端口号为80,HTTPS的端口号为443。

浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议,只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如咱们常用的QQ,迅雷这些软件,都会使用HTTP协议(还包括其他的协议)。

二、简史

HTTP/0.9
HTTP 于 1990 年问世。那时的 HTTP 并没有作为正式的标准被建立。现在的 HTTP 其实含有 HTTP1.0 之前 版本的意思,因此被称为 HTTP/0.9。

HTTP/1.0

HTTP 正式作为标准被公布是在 1996 年的 5 月,版本被命名为 HTTP/1.0,并记载于 RFC1945。虽说是初 期标准,但该协议标准至今仍被广泛使用在服务器端。
RFC1945 - Hypertext Transfer Protocol -- HTTP/1.0
http://www.ietf.org/rfc/rfc1945.txt 

HTTP/1.1

1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的标准是 RFC2068,之后发布的修订版 RFC2616 就是当前的最新版本。
RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1
http://www.ietf.org/rfc/rfc2616.txt 
可见,作为 Web 文档传输协议的 HTTP,它的版本几乎没有更新。新一代 HTTP/2.0 正在制订中,但要达到 较高的使用覆盖率,仍需假以时日。

三、统一资源定位符

URL 的一般形式是:

<URL的访问方式>://<主机>:<端口>/<路径>

四、HTTP 的操作过程 

五、Web工作过程

上图用户点击鼠标后所发生的事件:

(1) 浏览器分析超链指向页面的 URL;

(2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址;

(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址;

(4) 浏览器与服务器建立 TCP 连接;

(5) 浏览器遵循HTTP协议发出取文件命令:

      GET /chn/yxsz/index.htm;

(6) 服务器给出响应,把文件 index.htm 发给浏览器;

(7) TCP 连接释放;

(8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。

六、HTTP 的报文种类 

HTTP 有两类报文:

    请求报文——从客户向服务器发送请求报文。

    响应报文——从服务器到客户的回答。 

6.1 HTTP 的报文结构

 6.1 请求报文

报文由三个部分组成,即开始行、首部行和实体主体。

在请求报文中,开始行就是请求行。

1.  方法:

“方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。

HTTP 请求报文的一些方法 

 

2.URL

“URL”是所请求的资源的 URL。

3.版本

“版本”是 HTTP 的版本。

4.一个请求报文的例子:

 

6.2 响应报文

响应报文的开始行是状态行。

状态行包括三项内容,即 HTTP 的版本,状态码,以及解释状态码的简单短语。

状态码都是三位数字 :

  • 1xx 表示通知信息的,如请求收到了或正在进行处理。
  • 2xx 表示成功,如接受或知道了。
  • 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
  • 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
  • 5xx 表示服务器的差错,如服务器失效无法完成请求。 

一个响应报文的例子:

6.3 使用WireShark实例分析

下面是一个用wireShark获取的http协议包:

可以看到这是post方法、url:/pcsuiteprofile/api/updateinfo?u=38e37ccd&len=24

版本:HTTP/1.1  \r\n:回车换行

首部字段:Host、Accept、Content-Type、Content-Length等等。

展开Post,具体分析,如图:

 

选中post,下边的16进制中显示的是:50 4f 53 54正好是POST四个字母对应的16进制ASCII,可以自行去对比ASCII。

如果你不会用wireShark,可以看下这篇文章:https://community.emc.com/message/818739#818739,只看一就够用了。

 七、使用 Cookie 的状态管理

 HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。
Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务 器上的记录,最后得到之前的状态信息。
  1. 没有 Cookie 信信息状态下的请求 

上图展示了发生 Cookie 交互的情景,HTTP 请求报文和响应报文的内容如下。

1. 请求报文(没有 Cookie 信息的状态)

GET/reader/HTTP/1.1
Host:hackr.jp
*首部字段内没有Cookie的相关信息

2. 响应报文(服务器端生成 Cookie 信息) 

HTTP/1.1200OK
Date:Thu,12Jul201207:12:20GMT
Server:Apache
<Set-Cookie:sid=1342077140226724;path=/;expires=Wed,10-Oct-1207:12:20GMT>
Content-Type:text/plain;charset=UTF-8

3. 请求报文(自动发送保存着的 Cookie 信息)

GET/image/HTTP/1.1
Host:hackr.jp
Cookie:sid=1342077140226724

有关请求报文和响应报文内Cookie 对应的首部字段,请参考之后的章节。

八、特点

HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

HTTP协议的主要特点可概括如下:
1、支持客户/服务器模式。支持基本认证和安全认证。
2、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 7.1.1 Android网络编程要学的东西与Http协议学习
  • android http下载视频到指定目录,android目录
  • 带新手走进神秘的HTTP协议,新手走进协议

相关文章

  • 2017-05-26Xamarin.Forms+Prism(2)—— 基本使用 NavigationService,xamarin.forms
  • 2017-05-227.5.3 Android 4.4后WebView的一些注意事项
  • 2017-05-262015年Android作品集
  • 2017-05-26Android listview和gridview以及view的区别,androidgridview
  • 2017-05-26计算facebook sdk需要的key hashes,facebookhashes
  • 2017-05-26XAMARIN.ANDROID SIGNALR 实时消息接收发送示例,xamarinsignalr
  • 2017-05-26Android--httpclient模拟post请求和get请求分析
  • 2017-05-26Android开发6:Service的使用(简单音乐播放器的实现),androidservice
  • 2017-05-26Activity的四种启动模式,activity四种模式
  • 2017-05-26android布局--Android fill_parent、wrap_content和match_parent的区别,wrapparent

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android 大杂烩工程之ListView的开发2以及数据仓库开发模式
    • Android 手机卫士11--窗体弹出PopupWindow,11--popupwindow
    • 电商常用的正则表达式,字符串,地址操作,电商正则表达式
    • Android pm命令详解
    • Android中BroadcastReceiver组件详解
    • 1.8 工程相关解析(各种文件,资源访问)
    • Android之使用文件进行IPC,android文件ipc
    • Android版本和API Level对应关系,androidlevel
    • 关于TabLayout的使用 ,自定义了一个框架。。。 以后写底部菜单就可以直接作为依赖库 ,不用麻烦了,tablayout框架
    • 深入了解Kotlin的必备书籍,深入了解kotlin必备

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有