02-HTTP是什么

        HTTP就是超文本传输协议,也就是Hyper Text Transfer Protocol的缩写

        超文本传输协议可以拆为三个部分,分别是“超文本”,“传输”和“协议”,理解了这三个词,也就明白了什么是HTTP。

         首先HTTP是一个协议。不过,协议又是什么呢?

        其实协议并不仅限于计算机世界,现实生活中也随处可见,例如毕业时签订的“三方协议”,租房子的时候签订的“租房协议”,公司入职时签订的“保密协议”、“竞业协议”,工作中使用的各种软件也都带着各自的“许可协议”。以上的这几个都是协议,本质上和HTTP是相同的,那么协议有什么特点呢?

        第一点,协议必须要有两个或多个参与者,也就是

        如果只有你一个人,那么你想干什么就干什么,想怎么玩就怎么玩,不会干涉其他人,其他人也不会干涉你,那么也就不需要所谓的协议。但是一旦有了两个以上的参与者出现,为了保证最基本的顺畅交流,协议就自然而然地出现了。 例如,为了保证你顺利就业,“三方协议”里的参与者就有三个:你、公司和学校;为了保证你顺利入住,“租房协议”里的参与者有两个:你和房东。

        第二点,协议是对于参与者的一种行为约定和规范,也就是

        协议意味着有多个参与者为了达成某个共同的目的而站在了一起,除了要无疑义地沟通交流之外,还必须明确地规定各方的“债、权、利”,约定该做什么不该做什么,先做什么后做什么,做错了怎么办,有没有补救措施等等。例如,租房协议里就约定了,租期多少个月,每月租金多少,押金多少,水电费谁来付,违约应如何处理等等。

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

        HTTP字面里的第二部分是传输

        计算机和网络世界里有数不清的各种角色:CPU、内存、总线、磁盘、操作系统、浏览器、网关、服务器等等,这些角色之间相互通信也必然会有各式各样、五花八门的协议,用处也各不相同,例如广播协议、寻址协议、路由协议、隧道协议、选举协议等等。

        HTTP是一个传输协议,所谓的传输其实很好理解,就是把一堆东西从A点搬到B点,或者从B点搬到A点,即A<===>B。这个简单动作包含了两项重要的信息。

        第一点,HTTP协议是一个双向协议

        也就是说,有两个最基本的参与者A和B,从A开始到B结束,数据在A和B之间双向而不是单向流动。通常我们把先发起传输的动作的A叫做请求方,把后接到传输的B叫做应答方或者响应方。拿最常见的上网冲浪的例子来说,浏览器就是请求方A,网易,新浪这些网站就是应答方B。双方约定用HTTP协议来通信,于是浏览器把一些数据发送给网站,网站再把一些数据发回给浏览器,最后展现在屏幕上,你就可以看到各种有意思的新闻、视频了。

        第二点,数据虽然是在A和B之间传输,但并没有 限制只有A和B这连个角色,允许中间有“中转”或者“接力”。

        这样,传输方式就从A<===>B,变成了A<=>X<=>Y<=>Z<=>B,A到B的传输过程中可以存在任意多个中间人,而这些中间人也都遵从HTTP协议,只要不打扰基本的数据传输,就可以添加任意的额外功能,例如安全验证、数据压缩、编码转换等等,优化整个传输过程。

        到此,HTTP的第二层含义也明了,HTTP是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。

        HTTP字面里的第三部分是超文本

        既然HTTP是一个传输协议,那么它传输的超文本到底是什么呢?所谓文本,就表示HTTP传输的不是TCP/UDP这些底层协议里被切分的杂乱无章的二进制包,而是完整的、有意义的数据,可以被浏览器、服务器这样的上层用程序来处理。在互联网早起,文本只是简单的字符文字,但发展到现在,文本的含义已经被大大的扩展了,图片、音频、视频、甚至是压缩包,在HTTP眼里都可以算做是文本。

        所谓超文本,就是超越了普通文本的文本,它是文字、图片、音频和视频等的混合体,最关键的是含有超链接,能够从一个超文本跳跃到另一个超文本,形成复杂的非线性、网状的结构关系。对于超文本,我们最熟悉的应该是HTML了,它本身只是纯文字文件,但内部使用很多标签定义了对图片、音频、视频等的链接,再经过浏览器的解释,呈现在我们面前的就是一个含有多种视听信息的页面。

        到此,可以给出HTTP更明确的定义了,HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

        HTTP不是什么

        疑问HTTP是一个协议,是一种计算机通信的规范,所以它不存在单独的实体。它不是浏览器、手机APP那样的应用程序,也不是Windows、Linux那样的操作系统,更不是Apache、Nginx、Tomact那样的Web服务器。但HTTP又与应用程序、操作系统、Web服务器密切相关,在它们之间的通信过程中存在,而且是一种“动态的存在”,是发生在网络连接、传输超文本数据时的一个动态过程。

        HTTP不是互联网

        互联网是遍布于全球的许多网络相互连接而形成的一个巨大的国际网络,在它上面存放这各式各样的资源,也对应着各式各样的协议,例如超文本资源使用HTTP,普通文件使用FTP,电子邮件使用SMTP和POP3等。但毫无疑问,HTTP是构建互联网的一块重要拼图,而且是占比最大的一块。

        HTTP不是编程语言

        编程语言是人与计算机沟通交流所使用的语言,而HTTP是计算机与计算机沟通交流的语言,我们无法使用HTTP来编程,但可以反过来,用编程语言去实现HTTP,告诉计算机如何使用HTTP来与外界通信。

        很多流行的编程语言都支持编写HTTP相关的服务和应用,例如使用Java在Tomcat里编写Web服务,使用PHP在后端实现页面模板渲染,使用JavaScript在前端实现动态页面更新。

        HTTP不是HTML

        虽然这两者经常同时出现,但是不要把它们混为一谈,HTML是超文本的载体,是一种标记语言,使用各种标签描述文本、图片、超链接等资源,并且可以嵌入CSS、JavaScript等技术实现复杂的动态效果。单轮次数,在互联网上HTTP传输最多的可能是HTML,但论数据量,图片、音频、视频这些类型的资源显然更大。

        HTTP不是一个独立的协议

        在互联网的世界里,HTTP通常跑在TCP/IP协议栈之上,依靠IP协议实现寻址和路由、TCP协议实现可靠数据传输,DNS协议实现域名查找、SSL/TSL协议实现安全通信。此外还有一些协议依赖于HTTP,例如WebSocket、HTTPDNS等。这些协议相互交织,构成了一个协议网,而HTTP则处于中心地位。

        小结

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

2.HTTP专门用来在两点之间传输数据,不能用于广播、寻址或路由。

3.HTTP传输的文字、图片、音频、视频等超文本数据。、

4.HTTP是构建互联网的重要基础技术,它没有实体,依赖许多其他的技术来实现,但同时许多技术也依赖它。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值