一个有趣的问题——HTTP是“超文本传输协议”还是“超文本转移协议”
最近在看《HTTP图解》这本书,书中提到了对国内对HTTP协议名称的翻译问题,并且给出了一些网友讨论的原稿链接,我看了一下觉得挺有意思的,另外我本人也觉得翻译对于理解协议本身非常重要,就整理了一些观点。
HTTP的全称是HyperText Transfer Protocol,大家主要的关注点在于Transfer应该如何翻译。
以下是整理的内容:
李锟:
1.纸面释义
在IETF的RFC中,“transport”(传输)的含义是指:从端到端(例如从ip1:port1到ip2:port2)可靠地搬运比特,也就是TCP/IP协议栈中的第3层传输层(transport layer)协议所做的那些事情。
而“transfer”的含义是:通过在客户端-服务器端之间转移一些带有操作语义的操作原语,来执行某种操作。“transfer”是TCP/IP协议栈中的第4层应用层的概念,而不是第3层传输层的概念。“transfer”所转移的是带有明确操作语义的操作原语,而不是没有操作语义的比特流。
2.HTTP协议在TCP/IP协议族中的位置
HTTP其实是一种应用协议。HTTP/FTP/NNTP..... 全是应用层协议。transfer是应用层的概念。传输这件事情,TCP+UDP已经干的很好了。
不过本着人有多大胆地有多大产的革命乐观冒险主义,非把HTTP当作传输协议来用,确实也死不了人。但是这是低效的用法,会付出一些代价。
3.HTTP设计者Fielding博士的释疑
HTTP定制者之一的Roy Fielding博士在其论文[1](6.5.3节)中使用“transfer”表达的是“(表述状态的)转移”(Representational State Transfer),而不是“传输”。这是因为英语单词“transfer”在不同语境下的多义性,请勿误解。
6.5.3 HTTP is not a Transport Protocol
HTTP is not designed to be a transport protocol. It is a transfer protocol in which the messages reflect the semantics of the Web architecture by performing actions on resources through the transfer and manipulation of representations of those resources. It is possible to achieve a wide range of functionality using this very simple interface, but following the interface is required in order for HTTP semantics to remain visible to intermediaries.
尝试翻译一下:
HTTP不是为了设计成一个传输协议。它是一个转移协议,通过对资源表征的转移和操作,它反映了Web架构的含义。它使得通过简单的接口实现非常大范围的功能诉求,同时接口又是必须的,它使得HTTP的语义对于中间媒介保持可见。
4.HTTP协议的有设计与发展
HTTP协议为何要这样设计、设计出来是为了做什么事情,指导思想是REST。REST其实就是中庸之道,没什么神秘。
HTTP 1.0和HTTP 1.1最大的区别是什么,我接下来详细解释。
HTTP 1.0基本上就是一个服务器端静态文件的操作协议,并没有抽象的资源概念,HTTP 1.0认为Web服务器上就是一大堆静态文件。HTTP 1.0里面的transfer,就是传递、转移文件。有人把它理解为传输,似乎也可以。但是在协议里面,传输transport其实指的是搬运bit层次的苦力活。
如何来很好地支持动态内容,是HTTP 1.1协议要解决的一个主要问题。因此就发明了一个新的概念叫做资源,注意:资源和面向对象编程里面的对象类似,是一个抽象的工具。资源不仅仅可以代表服务器端一个文件、数据库中一条记录这类具体的东西。可以要多抽象有多抽象。有了资源之后,还需要设计一个统一的接口来操作资源。否则每一个资源操作的方式都不一样,那样做会严重降低Web应用的可伸缩性。
陈睿杰-小狗
其实说起来,http还真和邮局很相似,你去寄信,信封上的东西,比如地址、邮编,是有语义的,你可以看作是“应用层”的东西,你通过信件“转移”你的想法给对方;邮局的派送车,只管帮你运输的,那个是“传输层”的东西,帮你“传输”这封信件。
对应到HTTP协议的内容,request header、response header,就是信封上的元信息,body是你的信件内容。http很依赖这些元信息的,它根本不关注整个东西是怎么送达到对方手里的,传输有TCP、IP在做了。
其实要真正明白区别,就要明白资源的概念,资源是抽象的概念,你不可能在网络上真正的交换一个资源实体,你只能操作表述,资源永远无法直接触及,在REST架构中,服务器和客户端之间都只能通过资源的表述来进行交流,而非资源本身,这就是为什么要用“转移”来称呼这个操作。转移表述,而非传输资源。
参考文档:
http://www.ituring.com.cn/article/1817#
http://www.ituring.com.cn/article/937
http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm
一个有趣的问题——HTTP是“超文本传输协议”还是“超文本转移协议”的更多相关文章
- HTTPS----安全超文本传输协议
HTTPS协议详解HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Se ...
- HTTP超文本传输协议-HTTP/1.1中文版
摘要 超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议.它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外 ...
- http 超文本传输协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...
- 超文本传输协议-HTTP/1.1
超文本传输协议-HTTP/1.1(修订版) ---译者:孙超进本协议不限流传发布.版权声明Copyright (C) The Internet Society (1999). All Rights R ...
- HTTP协议(超文本传输协议)
一.HTTP的简介: 超文本传输协议. 它是基于TCP连接的(默认端口号是80).所以在传输数据前客户端需向服务器发送连接请求.当服务器同意连接请求,建立连接后才可以发送数据报文. 二.HTTP的报文 ...
- 安全超文本传输协议(HTTPS)详解
一.概念与摘要 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息.它使 ...
- Hyper Text Transfer Protocol(超文本传输协议)
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...
- 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识
第41章 HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...
- 第9章 应用层(4)_超文本传输协议HTTP
5. 超文本传输协议HTTP 5.1 统一资源定位符URL (1)URL的一般形式:<协议>://<主机>:<端口>/<路径> ①协议后面必须写上“:/ ...
随机推荐
- python自动化开发-6
python的常用模块(续) shutil模块:主要是做文件复制的.文件,文件夹,压缩包等的处理模块. 常用的方法: shutil.copyfileobj:将文件的内容拷贝到另一个文件中. 例子: # ...
- Force.com 多租户架构
本文参考自官方文档. 多租户架构 作为云计算平台的先驱,Salesforce最大的特点是"软件即服务"(Software as a Service,Saas).实现这种技术的基础便 ...
- 《数据库系统概念》4-DDL、集合运算、嵌套子查询
一.DDLa) SQL Data DefinitionSQL的基本数据类型有char(n).varchar(n).int.smallint.numeric(p,d).real,double preci ...
- Android Studio 在项目中引用第三方jar包
在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets { main { ...
- 关于Android studio的安装和配置问题
一.Android studio的安装 我们可以从中文社区http://www.android-studio.org/下载Android studio最新版本,然后点击安装即可. 之后我们直接运行an ...
- 1.Spring MVC详解
目录 1.SpringMVC 详细介绍 2.SpringMVC 处理请求流程 3.配置前端控制器 4.配置处理器适配器 5.编写 Handler 6.配置处理器映射器 7.配置视图解析器 8.Disp ...
- Lucene创建索引流程
1.创建索引流程 原始文档:互联网上的网页(爬虫或蜘蛛).数据库中的数据.磁盘上的文件 创建文档对象(非结构化数据) 文档对象中的属性不叫属性现在成为域. 每个 Document 可以有多个 Fiel ...
- [20170705]diff比较执行结果的内容.txt
[20170705]diff比较执行结果的内容.txt --//有时候需要比较2个命令输出的结果进行比较,比较笨的方法如下,例子: $ lsnrctl status LISTENER_SCAN2 & ...
- 选择is或者as操作符而不是做强制类型转换
无论何时,正确选择使用as运算符进行类型转换.比盲目的强制类型转换更安全,而且在运行时效率更高. 用as和is进行转换时,并不是对所有用户定义的类型都能完成,只是在运行时类型和目标类型匹配时,转换才能 ...
- selenium+python自动化笔记之一
一.webdriver的API与定位元素 元素定位核心部分 元素名称 webdriver API 说明 id find_element_by_id() id定位 name find_element_b ...