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协议相关的所有应用层技术的综合".
极客时间学习笔记........
随机推荐
- com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor
在MyBatis的配置文件中修改对pageHelper的配置修改前 <plugins> <plugin interceptor="com.github.pagehelper ...
- 15-numpy笔记-莫烦pandas-3
代码 import pandas as pd import numpy as np dates = pd.date_range('20130101', periods=6) df=pd.DataFra ...
- vs在matlab生成的dll中,load treebigger错误
提示的错误:Warning: Variable 'model' originally saved as a TreeBagger cannot be instantiated as an object ...
- SVN服务器_客户端下载和安装
SVN服务器下载和安装 1.登录 http://subversion.apache.org/packages.html 在该页面可以看到SVN为各种操作系统提供的服务端,单击Win32Svn链接就会导 ...
- leetcode189. 旋转数组
方法 4:使用反转算法 这个方法基于这个事实:当我们旋转数组 k 次, k\%nk%n 个尾部元素会被移动到头部,剩下的元素会被向后移动. 在这个方法中,我们首先将所有元素反转.然后反转前 k 个元素 ...
- 【oracle】获取指定表空间的所有表名
select owner||'.'||table_name from dba_tables where tablespace_name='A';
- Excel-图表制作
柱形图:通常使用柱形图比较数据间的数量关系 折线图:使用折线图来反映数据间的趋势关系 饼图:使用饼图来表示数据间的分配关系 对图表进行刷选 再图表设计下的快速布局可以选择各种样式 迷你图 对某列单 ...
- 支持TV远程控制的WIN10PEX64_17763网络版by双心
支持TV远程控制的WIN10PEX64_17763网络版by双心 用slore大神的wimbuilder2,基于cn_windows_10_enterprise_ltsc_2019_x64_dvd_9 ...
- Spring Boot中整合Sharding-JDBC单库分表示例
本文是Sharding-JDBC采用Spring Boot Starter方式配置第二篇,第一篇是读写分离讲解,请参考:<Spring Boot中整合Sharding-JDBC读写分离示例> ...
- java web开发入门十一(idea maven mybatis自动代码生成)基于intellig idea
6.idea maven mybatis逆向工程(代码生成器) 1.配置pom.xml 在plugins标签下添加mybatis-generator-maven-plugin <plugin&g ...