HTTP是什么,不是什么?
HTTP是什么? 不是什么?
HTTP: 超文本传输协议,也就是HyperText Transfer Protocol.这是从字面上的理解,如果深一步的理解呢? HTTP又是什么呢?
HTTP是什么
HTTP是超文本传输协议,分解为三个部分,就是: "超文本" "传输" "协议". 从后向前解析.
协议
协议都知道,不是一个人的事,简单的来说,协议是需要两个或多个参与者.并且会对参与者进行一种行为约定和规范.
所以说: HTTP是一个用在计算机世界里的协议,使用计算机能够理解的语言确立一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式
传输
传输其实很好理解,就是从A到B(A <===> B). 注意了,下面是重点.
- HTTP协议是一个双向协议, 也就是说在A和B之间双向流动.通常发起传输动作的A叫做请求方,接到传输的B叫做应答方或响应方.
- 数据输在A和B之间传输,但是没有限制只有A和B两个角色,也就是允许"中转"或"接力". 什么意思呢? 也就是说"A <===> X <===> Y <===> B",可以存在任意多个中间人.
所以说HTTP是一个在计算机世界里专门用来在两点之间传输数据的约定和规范.
超文本
所谓的超文本,其实就是"超越了普通文本的文本",早起的互联网,"文本"就是简单的字符文字,现在,它是文字、图片、音频和视频等的混合体,最关键的是含有"超链接",可以实现跳跃功能,形成复杂的网状等结构. 最熟悉的就是HTML,本身是纯文本文件,但是内部的标签定义图片、视频等链接,结果浏览器的解析,呈现的就是一个含有多种试听信息的页面.
分开理解了,那结合起来呢?
HTTP是一个在计算机世界里专门在两点之间传输文字、图片、视频、音频等超文本数据的约定和规范
HTTP不是什么
首先HTTP是一种计算机通信的规范,那么也就是说它不存在单独的实体,但是它有真实存在,而且是动态的,是发生在网络连接、传输超文本数据时的一个"动态过程".
HTTP不是互联网,互联网是遍布全球的许多网络相互连接而形成的一个巨大的国际网络,上面有各种资源,对应各种协议,例如超文本资源使用HTTP,普通文件使用FTP,电子邮件使用SMTP和POP3等. 虽然不是互联网,但是却是构建互联网的一块重要拼图.
HTTP不是编程语言.编程语言是人与计算机交互的语言,但是HTTP却是计算机与计算机沟通交流的语言.这点很重要.HTTP是无法用来编程的,但是可以使用编程语言去实现HTTP,告诉极端及如何用HTTP于外界通信.
HTTP不是HTML,HTML是超文本的载体, HTTP传输最多的就是HTML了.但是论到数据量,HTML就不算多了,因为HTML相对于视频音频来说太小了.
HTTP不是孤立的协议.在互联网的世界里,HTTP通常是跑在TCP/IP协议栈上的(为什么加个通常呢,就是因为HTTP/3是跑在UDP上的),依靠IP协议实现寻址和路由、TCP协议实现可靠数据传输、DNS协议实现域名查找、SSL/TLS协议实现安全通信.此外还有一些协议依赖于HTTP,例如WebSocket、HTTPDNS等.这些协议相互交织,构成一个协议网,而HTTP则处于中心地位.
- HTTP是一种用于在计算机世界里的协议,确立了一种计算机之间交流通信的规范以及相关的各种控制和错误处理方式.
- HTTP专门用来在两点之间传输数据,不能用于广播、寻址和路由.
- HTTP传输的是文字、图片、音频、视频等超文本数据.
- HTTP是构建互联网的重要基础技术,没有实体,依赖于其他的技术来实现,同是也被其他的技术依赖.
综合起来,可以HTTP定义为"与HTTP协议相关的所有应用层技术的综合".
极客时间学习笔记........
随机推荐
- python基础语法20 面向对象5 exec内置函数的补充,元类,属性查找顺序
exec内置函数的补充 exec: 是一个python内置函数,可以将字符串的代码添加到名称空间中; - 全局名称空间 - 局部名称空间 exec(字符串形式的代码, 全局名称空间, 局部名称空间) ...
- 【Spring IoC】BeanFactory 和 ApplicationContext(五)
一.BeanFactory容器 BeanFactory 容器是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在 org.springframework.beans.fac ...
- java 启动jar 指定端口
java 启动jar 指定端口 java -jar xxx.jar --server.port=80
- LeetCode 120. Triangle三角形最小路径和 (C++)
题目: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjace ...
- 学习:逆向PUSH越界/INT 68/反调试导致的程序
自己根据shark恒老师的分析,总结一下: 一般反调试自动关闭程序利用的函数有: 1.CreateToolhelp32Snapshot 2.FindWindow 3.ExitProcess 4.Pos ...
- 5.Vue的组件
1.什么是组件 组件是可复用的Vue实例,也就是一组可以复用的模版,类似JSTL的自定义标签. 你可能会有页头.侧边栏.内容区等组件,每个组件又包含了其它的像导航链接.博文之类的组件. 2.第一个Vu ...
- Linux性能优化实战学习笔记:第二十五讲
一.磁盘性能指标 1.使用率 2.饱和度 3.IOPS 4.吞吐量 5.响应时间 6.性能测试工具 二.磁盘I/O观测 1.每块磁盘的使用率(指标实际上来自/proc/diskstats) [root ...
- Object.defineProperty 中的 writable 和 configurable 和 enumerable 的理解
在现在比较新的框架中, 比如 reactjs, vuejs中用得很多的一个属性便是 Object.defineOProperty 此属性的文档在网上一搜, 其中的几个属性, 包括 存取描述符(有set ...
- AI语音验证码识别
欢迎使用AI语音验证码识别v4.0程序程序调用方法:http://code.hbadmin.com/?url=http://code.hbadmin.com/demo/2118534.wav [试听] ...
- Java程序进行调优及监控
Java 应用性能的瓶颈点非常多,比如磁盘.内存.网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等.笔者根据个人经验,将 Java 性能优化分为 4 个层级:应用层.数据库层 ...