武汉热线 - 武汉地区最专业的新闻资讯网站!
当前位置: 主页 > 国际新闻 > 互联网资讯 HTTP协议漫谈

HTTP协议漫谈

发布时间: 2017-05-08 10:13:17 来源: 作者:
园子里已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解。

简介

   园子里已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解。

HTTP的定义和历史

    在一个网络中。传输数据需要面临三个问题:

    1.客户端如何知道所求内容的位置?

    2.当客户端知道所求内容的位置后,如何获取所求内容?

    3.所求内容以何种形式组织以便被客户端所识别?

     对于WEB来说,回答上面三种问题分别采用三种不同的技术,分别为:统一资源定位符(URIs),超文本传输协议(HTTP)和超文本标记语言(HTML)。对于大多数WEB开发人员来说URI和HTML都是非常的熟悉。而HTTP协议在很多WEB技术中都被封装的过多使得HTTP反而最不被熟悉。

    HTTP作为一种传输协议,也是像HTML一样随着时间不断演进的,目前流行的HTTP1. 1 是HTTP协议的第三个版本。

HTTP 0.9

    HTTP 0. 9 作为HTTP协议的第一个版本。是非常弱的。请求(Request)只有一行,比如:

GET www.cnblogs.com

    从如此简单的请求体,没有POST方法,没有HTTP 头可以看出,那个时代的HTTP客户端只能接收一种类型:纯文本。并且,如果得不到所求的信息,也没有404500 等错误出现。

    虽然HTTP 0. 9 看起来如此弱,但已经能满足那个时代的需求了。

HTTP 1.0

    随着 1996 年后,WEB程序的需求,HTTP 0. 9 已经不能满足需求。HTTP1. 0 最大的改变是引入了POST方法,使得客户端通过HTML表单向服务器发送数据成为可能,这也是WEB应用程序的一个基础。另一个巨大的改变是引入了HTTP头,使得HTTP不仅能返回错误代码,并且HTTP协议所传输的内容不仅限于纯文本,还可以是图片,动画等一系列格式。

    除此之外,还允许保持连接,既一次TCP连接后,可以多次通信,虽然HTTP1.0 默认是传输一次数据后就关闭。

HTTP 1.1

   2000 年 5 月,HTTP1. 1 确立。HTTP1. 1 并不像HTTP1. 0 对于HTTP0. 9 那样的革命性。但是也有很多增强。

    首先,增加了Host头,比如访问我的博客:

 GET /Careyson HTTP/1.1 
 Host: www.cnblogs.com

    Get后面仅仅需要相对路径即可。这看起来虽然仅仅类似语法糖的感觉,但实际上,这个提升使得在Web上的一台主机可以存在多个域。否则多个域名指向同一个IP会产生混淆。

    此外,还引入了Range头,使得客户端通过HTTP下载时只下载内容的一部分,这使得多线程下载也成为可能。

    还有值得一提的是HTTP1.1 默认连接是一直保持的,这个概念我会在下文中具体阐述。

HTTP的网络层次

    在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP在网络中的层次如图 1 所示。

   

1

     图1.HTTP在TCP/IP中的层次

    可以看出,HTTP是基于传输层的TCP协议,而TCP是一个端到端的面向连接的协议。所谓的端到端可以理解为进程到进程之间的通信。所以HTTP在开始传输之前,首先需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。概念如图 2 所示。

   

22

    图2.TCP连接的三次握手

   在TCP三次握手之后,建立了TCP连接,此时HTTP就可以进行传输了。一个重要的概念是面向连接,既HTTP在传输完成之间并不断开TCP连接。在HTTP1. 1 中(通过Connection头设置)这是默认行为。所谓的HTTP传输完成我们通过一个具体的例子来看。

    比如访问我的博客,使用Fiddler来截取对应的请求和响应。如图 3 所示。

   

3

图3.用fiddler抓取请求和相应

    可以看出,虽然仅仅访问了我的博客,但锁获取的不仅仅是一个HTML而已,而是浏览器对HTML解析的过程中,如果发现需要获取的内容,会再次发起HTTP请求去服务器获取,比如图 2 中的那个common2.css。这上面 19 个HTTP请求,只依靠一个TCP连接就够了,这就是所谓的持久连接。也是所谓的一次HTTP请求完成。

HTTP请求(HTTP Request)

    所谓的HTTP请求,也就是Web客户端向Web服务器发送信息,这个信息由如下三部分组成:

    1.请求行

    2.HTTP头

    3.内容

    一个典型的请求行比如:

GET www.cnblogs.com HTTP/1.1

    请求行写法是固定的,由三部分组成,第一部分是请求方法,第二部分是请求网址,第三部分是HTTP版本。

    第二部分HTTP头在HTTP请求可以是 3 种HTTP头:1.请求头(request header)  2.普通头(general header)  3.实体头(entity header)

    通常来说,由于Get请求往往不包含内容实体,因此也不会有实体头。

    第三部分内容只在POST请求中存在,因为GET请求并不包含任何实体。

    我们截取一个具体的Post请求来看这三部分,我在一个普通的aspx页面放一个BUTTON,当提交后会产生一个Post请求,如图 4 所示。

   

4

    图4.HTTP请求由三部分组成

12下一页查看全文
  • 关键词浏览:
  • 2022第九季 SIUF国际超模大赛总决赛在深圳举行
  • 8月12日晚,“心衣天使内衣超模”2022第九季SIUF国际超模大赛总决赛在深圳会展中心举行。当晚,13号选手周家圻夺得冠军,1号选手张珊梦夺得亚军,29号选手褚晓雯夺得季军。...

  • 秦怡去世:百岁百件事,致敬这不凡的美丽人生
  • 2022年1月31日,演员秦怡100周岁的生日。这位承载了几代人记忆的老艺术家,正式从“90后”晋升“00后”行列。...

  • 借“医”行诈国家医保基金,这家取名“民泰”的医院被端了!
  • 如果不是警方找上门,23岁的杨某并不知道,2018年底到2019年7月间,“自己”在四川省达州市宣汉县民泰医院住了五次院,共32天,医保报销12831.5元。...

  • 北京证券交易所来了(财经眼)
  • 9月2日,习近平主席在2021年中国国际服务贸易交易会全球服务贸易峰会上提出“我们将继续支持中小企业创新发展,深化新三板改革,设立北京证券交易所,打造服务创新型中小企业主阵地”。...

  • 选手确诊、丑闻不断,东京奥运会“混乱中”即将开幕
  • 如无意外,23日,东京奥运会将迎来延迟一年后的正式开幕。然而,奥运相关人员确诊病例数仍不断增加。...

  • 刚上市就爆火!“1瓶能顶4张面膜”的玻尿酸气泡水,是智商税还是美颜水?
  • 花点小钱真就能抚平皱纹、抵抗衰老、重返十八?吃着零食喝着水也能变漂亮的口服玻尿酸方法真的靠谱吗?...

  • 部分商家宣称护眼仪能让孩子告别眼镜 专家提醒:真性近视不可逆,科学用眼更重要
  • 随着电子产品越来越普及,电脑、智能手机、平板电脑等电子产品已逐渐成为孩子手中的“掌中宝”。...

  • 四名大学生高铁上抢救婴儿 其中三人来自湖北
  • 昨日,一篇暖文火遍全网——飞驰的列车上,4名医学生成功救回一名被食物卡住呼吸道的婴儿。...

  • 谨防洗手间“伏地魔”!男子洗手间内跪地偷窥,当事女子录下视频
  • 小张拍摄的视频显示,洗手间内一名男子趴伏下身子,头部已经快贴到地面上,尝试从缝隙处偷窥如厕。...

  • 乳房健不健康,5点就可判断!女人别太晚知道
  • 说到妇科疾病,必然逃不掉的是乳腺疾病,不管已婚还是未婚,女人都有可能被乳腺疾病盯上。...

    特别推荐