HTTP是什么? 不是什么?

HTTP: 超文本传输协议,也就是HyperText Transfer Protocol.这是从字面上的理解,如果深一步的理解呢? HTTP又是什么呢?

HTTP是什么

HTTP是超文本传输协议,分解为三个部分,就是: "超文本" "传输" "协议". 从后向前解析.

协议

协议都知道,不是一个人的事,简单的来说,协议是需要两个或多个参与者.并且会对参与者进行一种行为约定和规范.

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

传输

传输其实很好理解,就是从A到B(A <===> B). 注意了,下面是重点.

  1. HTTP协议是一个双向协议, 也就是说在A和B之间双向流动.通常发起传输动作的A叫做请求方,接到传输的B叫做应答方或响应方.
  2. 数据输在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则处于中心地位.

  1. HTTP是一种用于在计算机世界里的协议,确立了一种计算机之间交流通信的规范以及相关的各种控制和错误处理方式.
  2. HTTP专门用来在两点之间传输数据,不能用于广播、寻址和路由.
  3. HTTP传输的是文字、图片、音频、视频等超文本数据.
  4. HTTP是构建互联网的重要基础技术,没有实体,依赖于其他的技术来实现,同是也被其他的技术依赖.

综合起来,可以HTTP定义为"与HTTP协议相关的所有应用层技术的综合".

极客时间学习笔记........

随机推荐

  1. hdu1247-Hat’s Words-(字典树)

    http://acm.hdu.edu.cn/showproblem.php?pid=1247 题意:给出一堆单词,求哪些单词是其中某两个单词拼接起来的. 题解:用字典树存储所有的单词,标记结束点,再次 ...

  2. Discarding Game CodeForces - 1250G(思维)

    Discarding Game \[ Time Limit: 3000 ms\quad Memory Limit: 524288 kB \] 题意 一个人和一个电脑在玩游戏,游戏规则是 游戏有 \(n ...

  3. zzulioj - 2600: 有多少天?

    题目链接:http://acm.zzuli.edu.cn/problem.php?id=2600 题目描述 小D同学对日期类的问题很是有兴趣,已知1900-01-01是星期一,那么小D想知道给定两个年 ...

  4. Kettle Unable to get list of element types for namespace 'pentaho'

    我把公司的kettle5.0升级到7.0之后遇到了这个问题,困扰了很久,百度谷歌都查不到结果,所以只能自己查找原因. 由于已经被搞好了,现在无法截图了,总之就是下面这行报错,遇到这个错误的同学估计也不 ...

  5. NCBI之UniVec数据库及去载体

    1.数据库简介 UniVec是一个数据库,可用于快速识别核酸序列中可能来自载体来源(载体污染)的片段.使用UniVec进行筛选是高效的,因为已经消除了大量冗余子序列,从而创建一个只包含来自大量载体的每 ...

  6. 6.Go-错误,defer,panic和recover

    6.1.错误 Go语言中使用builtin包下error接口作为错误类型 Go语言中错误都作为方法/函数的返回值 自定义错误类型 //Learn_Go/main.go package main imp ...

  7. SCITE设置修改说明

    SCITE设置修改说明选项→打开全局设置文件:1.启动时最大化:position.width=-1position.height=-12.用于中文系统,要修改语言.code.page=936outpu ...

  8. [LeetCode] 78. Subsets 子集合

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  9. [灯火阑珊] 关于cmd命令里的findstr匹配多个关键词

    no raining now go to school and play with code 你. findstr "\<go  code\>" 这样就能匹配输出包含g ...

  10. 阅读java编程思想之一切都是对象

    温故而知新--- 1. 用句柄操作对象 现实生活中,我们可以把遥控器当作句柄,电视机当作对象.当我们拿到句柄(遥控器)的时候,我们是可以控制对象的(电视机).比如说调节音量大小,色彩等.那么在程序里, ...