阿里云服务器优惠链接:云小站_专享特惠_云产品推荐-阿里云

本篇博文是作者在极客时间看过罗剑锋老师的《透视HTTP协议》之后总结而出的。

做开发的不管是web开发还是APP都是经常和HTTP协议打交道,可能大家都有过同样的想法:“HTTP不就是一个无状态的协议吗,响应/请求,POST/GET,session,header,网上的资料海了去了。”,事实上HTTP的原理绝非如此简单。

HTTP的诞生

HTTP于1989年由蒂姆·伯纳斯 - 李(Tim Berners-Lee)提出了在互联网上构建超链接文档系统的构想,确立了三项技术:

1.URI:统一资源标识符

2.HTML:超文本标记语言

3.HTTP:超文本传输协议

蒂姆把这个系统称为“万维网”(World Wide Web),就是现在我们熟知的Web。

HTTP是什么?

经常会有人问“HTTP是什么?”,然后答案随之而来“超文本传输协议啊,就是HyperText Transfer Protocol”,当然,答案是正确的,但是还是过于简单了。

首先看HTTP的名字,超文本传输协议,可以拆分为三部分理解——超文本、传输、协议。

先来理解一下协议,什么是协议?在生活中,租房会有“租房协议”,使用各种软件也会有“用户许可协议”,那么就很好理解了,“协议”必须要有两个及以上的参与者才能做到“协”,如果只有你一个人你想干什么就干什么,不会有其他人干涉你,自然也不需要“协议”,但是一旦有了另外一个人跟你一起玩,那么为了保证你们能顺畅的交流,“协议”就出现了。

第二点,协议对参与者的行为有一定的规范和约定。

当多个参与者为了达成各自的目的而站在了一起,除了双方能顺畅的沟通以外,还需要订立双方的责任,职责和权力,约定该做什么不该做什么,先做什么后做什么,做错了怎么办,有没有补救措施等等,还用我们的“租房协议”举个例子,“租房协议”中就约定了房租多少,租多久,水电费谁来付,家具损坏怎么赔,违约应怎么处理等等。

那么到这里,就是HTTP的第一层含义:

HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式。

接下来我们在看HTTP字面中的“传输”。

HTTP是一个“传输协议”,所谓的“传输”其实很好理解,类似于传送带,把货物从A点传输到B点,那么HTTP对传输是怎么定义的呢?

第一点,HTTP协议是一个“双向协议”,也就是说传送带把货物从A传送到B,B收到货物之后通过传送带把消息传送给A,告诉A我收到你给我的货物了。通常我们把先发起传输动作的A称为请求方,把后接收到传输的B叫做响应方。再用我们最常见的上网举个例子,我们用的浏览器就是请求方A,百度就是响应方B,双方约定使用HTTP协议来通信,于是你操作浏览器在百度地址栏输入Java,那么传送带(HTTP)就会带着你的数据“Java”去跟百度通信,告诉百度你要“Java”相关的信息,百度在收到浏览器的请求之后,会把关于“Java”的信息通过传送带(HTTP)返回给浏览器,你就能看到Java相关的信息了。

第二点,数据虽然是在 A 和 B 之间传输,但并没有限制只有A和B两个角色,也就是可以有更多的参与者,但是请求方必须是A,响应方必须是B,因为这是A和B约定的,在A向B传输数据的过程中可以经过任意的“中间人”,而这些“中间人”也必须遵守HTTP协议,只要不打扰基本的数据传输,这些“中间人”可以做很多事情,比如安全认证、数据压缩、编码转换等等。

说到这里,那么HTTP字面中的“传输”的含义差不多能明白了,

HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。

讲完了“协议”和“传输”,剩下的就是“超文本”了。

什么是超文本?

就是“超越了普通文本的文本”,它是文字、图片、音频和视频等的混合体,最关键的是含有“超链接(URL)”,能够从一个超文本跳到另一个超文本,形成复杂的网状的结构关系。

对于“超文本”,我们最熟悉的就是HTML了,它本身只是纯文本文件,但是内部很多标签定义了对图片、音频、视频等的链接,在经过浏览器的解释,呈现在我们面前的就是一个含有多种视听信息的页面。

到这里,我们应该知道HTTP具体是什么了。

HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

HTTP协议详解(一)相关推荐

  1. HTTP协议详解(真的很经典)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  2. Http 协议详解笔记

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...

  3. Http协议 详解(转载)

    http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分 ...

  4. ARP协议详解之ARP动态与静态条目的生命周期

    ARP协议详解之ARP动态与静态条目的生命周期 ARP动态条目的生命周期 动态条目随时间推移自动添加和删除. q  每个动态ARP缓存条目默认的生命周期是两分钟.当超过两分钟,该条目会被删掉.所以,生 ...

  5. ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御

    ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3  ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...

  6. HTTP协议详解 转自小坦克

    HTTP协议详解 转自小坦克 -- 有些文章是引用别人的,为了方便我以后或不再备注;引用目的是因为直接网摘里面的地址经常被重置,找不到原来的文章 当今web程序的开发技术真是百家争鸣,ASP.NET, ...

  7. nbns协议_网络协议详解1 - NBNS

    NetBIOS 简介 NetBIOS,Network Basic Input/Output System的缩写,一般指用于局域网通信的一套API,相关RFC文档包括 RFC 1001, RFC 100 ...

  8. 转:SSL 握手协议详解

    SSL 握手协议详解 RSA作为身份认证,ECDHE来交换加密密钥,AES/DES等作为加密. 如果RSA来加解密,那么身份认证后,直接用认证后的RSA公钥解密.不需要再额外交换加密密钥了. 相关报文 ...

  9. 【HTTP协议】超详细的HTTP协议详解

    基本介绍 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/ ...

  10. HTTP 协议详解(超级经典)

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

最新文章

  1. PAT 1041. 考试座位号(15)
  2. Programming asp.net笔记--第三章 Controls: Fundamental Concepts
  3. 【CyberSecurityLearning 33】Nginx和Tomcat服务的搭建、Nginx负载均衡
  4. 2019.02.11 bzoj4818: [Sdoi2017]序列计数(矩阵快速幂优化dp)
  5. list 用法总结2
  6. 【今晚7点半】:GVoice 千万在线语音传输的那些事
  7. 国学精典书籍阅读记录
  8. 3-40HDFS读数据流程
  9. COJ 1700:联通与次联通
  10. android零碎要点---android开发者的福音,59_1 Android的界面设计工具,直接拖拉就可以设计界面,Java技术qq交流群:JavaDream:251572072
  11. day 45 SQLAlchemy,和增删查改
  12. 下面属于javascript内部对象的有_JavaScript quot;thisquot;原理-转载阮一峰
  13. 前端怎么携带cookie发送php,PHP如何执行传递cookie的http请求并将结果保存到字符串...
  14. c语言c99标准_C语言的三套标准:C89、C99和C11
  15. 手把手教你强化学习 (六) 强化学习中的无模型预测
  16. asp.net 配置 X-Frame-Options
  17. xml突然变成空白_真实职场故事:开会时候,被领导突然提问,我差点被开除了...
  18. windows连接linux共享文件夹,windows访问linux共享文件夹
  19. 计算机维护测试工作,(人才测评)桌面运维工程师的招聘入职测评方案
  20. 提速数字化转型,云徙科技批量建设数字中台

热门文章

  1. “移动互联网+”第一股 正益移动登陆新三板
  2. C语言之i++,++i,i--,--i
  3. 闲鱼前端组件库的建设
  4. c#Form未能加载文件或程序集的解决方法
  5. 第一次搭建ftp遇见的蹩脚的问题
  6. PS抠头发妙法(原创技巧)
  7. 音乐网站制作之音乐播放
  8. win10安装的虚拟机无法连接网络
  9. Python3.X 爬虫实战(并发爬取)
  10. 通过vdi备份linux,Linux_Ubuntu下VirtualBox的vdi文件克隆方法,使用VirtualBox时遇到一个问题, - phpStudy...