最近在看《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是“超文本传输协议”还是“超文本转移协议”的更多相关文章

  1. HTTPS----安全超文本传输协议

    HTTPS协议详解HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Se ...

  2. HTTP超文本传输协议-HTTP/1.1中文版

    摘要 超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议.它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外 ...

  3. http 超文本传输协议

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...

  4. 超文本传输协议-HTTP/1.1

    超文本传输协议-HTTP/1.1(修订版) ---译者:孙超进本协议不限流传发布.版权声明Copyright (C) The Internet Society (1999). All Rights R ...

  5. HTTP协议(超文本传输协议)

    一.HTTP的简介: 超文本传输协议. 它是基于TCP连接的(默认端口号是80).所以在传输数据前客户端需向服务器发送连接请求.当服务器同意连接请求,建立连接后才可以发送数据报文. 二.HTTP的报文 ...

  6. 安全超文本传输协议(HTTPS)详解

    一.概念与摘要 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息.它使 ...

  7. Hyper Text Transfer Protocol(超文本传输协议)

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  8. 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识

    第41章      HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...

  9. 第9章 应用层(4)_超文本传输协议HTTP

    5. 超文本传输协议HTTP 5.1 统一资源定位符URL (1)URL的一般形式:<协议>://<主机>:<端口>/<路径> ①协议后面必须写上“:/ ...

随机推荐

  1. solr搜索引擎配置使用mongodb作为数据源

    环境说明: 操作系统:由于是使用的docker直接拉取的镜像部署的,系统是LINUX环境 mongodb: 4.0.3 solr: 7.5.0 python: 3.5 配置mongodb 1.拉取mo ...

  2. 洗礼灵魂,修炼python(21)--自定义函数(2)—函数文档,doctest模块,形参,实参,默认参数,关键字参数,收集参数,位置参数

    函数文档 1.什么是函数文档: 就是放在函数体之前的一段说明,其本身是一段字符串,一个完整的函数需要带有函数文档,这样利于他人阅读,方便理解此函数的作用,能做什么运算 2.怎么查看函数文档: func ...

  3. 洗礼灵魂,修炼python(18)--温故加知新

    类型转换: 1.str(),repr(),format():将非字符串数据转换为字符串 str():对象序列化的结果,相当于print输出 repr():程序中某个对象精确值 format():利用特 ...

  4. Linux查看服务器配置常用

    1. 内存: free:查看内存   total:总共内存 2. 处理器数量: cat /proc/cpuinfo | grep "processor" | wc -l 3.处理器 ...

  5. go xorm增删改查

    1.增加 如果传入的bean不是完整的bean,并且传入了地址,则调用结束后会被赋值// InsertOne insert only one struct into database as a rec ...

  6. Python基础知识:类

    初级篇 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向对象三大特性 ...

  7. 3.4Python数据处理篇之Numpy系列(四)---ndarray 数组的运算

    目录 目录 (一)数组与标量的运算 1.说明: 2.实例: (二)元素级的运算(一元函数) 1.说明: 2.实例: (三)数组级的运算(二元函数) 1.说明: 2.实例: 目录 1.数组与标量的运算 ...

  8. 17秋 软件工程 团队第五次作业 Alpha Scrum12

    各个成员今日完成的任务 Alpha版本完成. 项目的发布说明 本版本的新功能 1.部门人员管理,包括纳新申请与审核: 2.部门活动发布与查看: 3.部门活动相册: 4.子部门信息录入. 软件对运行环境 ...

  9. SAP CRM 开发学习资料和教程整理【不定时更新】

    本文链接:http://www.cnblogs.com/hhelibeb/p/6276929.html 首先是SAP网站上面的相关内容 SAP Customer Relationship Manage ...

  10. ArcGIS栅格影像怎么从WGS84地理坐标转成Xian80投影坐标

    事情是这样的,我下载了一个WGS84坐标系的影像图,需要加载到Xian80投影坐标系下,所以需要对影像图进行坐标系的转换 1.因为涉及到两个参考椭球的问题,首先需要计算七参数,如何计算七参数,请参考我 ...