HTTP 是不是應該翻譯成超文字傳輸協議

AndroidEasy發表於2019-01-12

為什麼寫這篇文章

寫這篇文章是因為之前看的這兩篇文章 關於HTTP中文翻譯的討論 關於HTTP中文翻譯的討論之二

大多數人可能覺得HTTP翻譯成超文字傳輸協議沒有什麼問題,直接那麼翻譯就好了,這個有什麼需要討論的呢?這個問題源於Roy Thomas Fielding 2000年的博士論文在6.5.3這個章節的標題這樣寫得 6.5.3 HTTP is not a Transport Protocol。 Roy Fielding 說 HTTP定製者之一 而且應該屬於負責人。所以他說的話說有足夠分量的。而且正確性我覺得說百分百正確。

不過這兩個討論並沒有本質解決問題,這裡我給出我對問題的理解,然後我一步一步通過我查閱的相關資料來給大家證明為什麼可以這麼去理解。

我的理解

  1. HyperText Transfer Protocol 翻譯成 超文字傳輸協議 沒有 問題
  2. 我也尊重了Roy Thomas Fielding 的觀點 "HTTP is not a Transport Protocol "

這裡通過一個叫 FTP(File Transfer Protocol) 的協議舉個簡單例子。FTP的設計目的就是通過網路讓兩臺計算機或者說客戶機和伺服器之間傳輸檔案。這個協議的主要目的就是對檔案的傳輸,而對檔案的控制的說各自的計算機本身。而網路就是解決計算機與計算機之間資料傳輸的。所以File Transfer Protocol叫檔案傳輸協議沒有什麼問題。而HTTP的設計也是用來傳輸特定內容的資料的。 鑑於討論裡面說的REST中也使用了Transfer ,討論者用這個Transfer來解釋HTTP 中的Transfer 這裡我先不做解釋。首先FTP協議在很早之前就出現了而HTTP說在FTP之後出現的,而且HTTP解決了FTP的一些問題。所以這裡的HTTP中的Transfer 可以說跟FTP中的Transfer 是一個意思。 而REST中的Transfer 是不是這個意思,卻沒有那麼明確的表述。所以我覺得Transfer不應該用REST中的Transfer去解釋。後面我會根據我查閱的資料儘量把每個問題點都面面俱到的解釋到位來證明我的理解說一個可行的方案,也是一個更適合的方案。

備註(在作業系統裡File 跟我們理解的檔案可能還有一點區別,但是這個不影響舉個例子)

一、Transfer與Transport 英文翻譯問題

Transfer與Transport 這兩個單詞的意思大家可以自己找翻譯,由於網上給的翻譯不能明確今天的問題這裡不糾結這個。

先看這兩句話,這兩個是討論內容第二篇的話 李錕 09:57:33 IETF的那些“transfer protocol”協議,都不是傳輸協議 李錕 09:58:11 “transport protocol”和“transfer protocol”兩個術語,一定要仔細分清楚。
其實問題的關鍵點之一就是這兩個單詞翻譯成中文,很多人都翻譯成了 傳輸。 而在計算機網路這個特定的領域裡面確實說兩個術語,代表的東西可以說是有嚴格區分的 那麼問題來了,如果都翻譯成傳輸協議那麼這兩個中文就變成完全一樣的東西了,所以確實如反方的觀點,會給人誤導。所以這樣說絕對不可取的,鑑於不要誤導他人的原則,我的觀點就是有問題就應該改正,也不要因為難而不去改。 現在通過一個簡單的例子來表達中英語言之間的差異。 中文一隻狗,一隻貓,一匹馬。 英文A dog, a cat, a horse 我們會說 一匹 和一隻說有區別的,但是英文都翻譯成 a 。有點類似剛剛我們翻譯成傳輸的感覺,所以從語言 層面確實可能會出現翻譯困難的問題。雖然這個例子並沒有表達出本文想說的問題,但是確實從語言層面中英文確實有很大的差異,所以遇到這些差異我覺得我不能因為要區分差異就說我都翻譯成傳輸就是錯。從這個層面講我對正反兩個反面都不贊同。而在這個位置我覺得兩個單詞確定都有傳輸的意思。下面我會從我查閱的英文原版資料來給大家一個我的理解

二、Transport layer “運輸層”或者“傳輸層”

計算機網路是分層結構的,Transport layer是其中的一層 計算機網路是分層結構的,我大學的教材是謝希仁版本的計算機網路 對Transport layer的翻譯是“運輸層” 討論裡有人寫得文章裡說的張公忠教授的教程中,使用“運輸層”來稱呼這個Transport layer 而還有非常多的人對Transport layer的翻譯說“傳輸層”
如果從漢語的角度去說傳輸和運輸差異確實也是挺大的。所以,Transport 翻譯成傳輸也是可以商榷的。 這裡不糾結翻譯成哪個更適合,只是舉個例子來支援我後面的論斷

三、Transfer 翻譯成傳輸真的錯了麼

先說如果Transfer 翻譯成傳輸錯了,那麼翻譯成什麼說對的,討論裡說翻譯成轉移這個說因為REST 的T 翻譯成轉移更適合,而REST就是Fielding 博士在主持編寫HTTP協議時候總結出來的一個詞。而討論裡認為這個T翻譯成轉移更適合。這幾天為了搞清楚這個問題我也試著用轉換 轉移 或者別的更適合的詞語間常事。 這裡我先說兩個點。 1. Transfer確實說在REST之前就一直在用了,而且我暫時不覺得這個T和那個T代表的說一個意思,如果你又合理的充分推理髮給我,我可以道歉。但是如果沒有就不能拿他當做證據。 2. 在漢語裡,你翻譯成,轉移和傳輸,我沒有沒有覺得有什麼本質的改變,群裡也對這個有討論。所以這個結論就是如果你說不能翻譯成傳輸,你改成轉移也完全沒有什麼意義,唯一的意義就是區分Transfer和Transport。如果只是區分這個後面我會給一個更完美的方案。

這裡我先說一個很重要的觀點,就是大家在討論Transfer的時候覺得Transfer翻譯成傳輸就是錯的,而至於要不要改說個問題,而接下來我先去解釋下這個問題。 Transfer如果不翻譯成傳輸翻譯成什麼更適合? 備註:RFC2616 文件的內容為 Hypertext Transfer Protocol -- HTTP/1.1 至於什麼說RFC文件如果不知道自己簡單先了解下。 這裡應用RFC2616文件1.1的內容,1.1章節的標題為Purpose(翻譯為目的或者意圖如果有錯請指正謝謝) The first version of HTTP, referred to as HTTP/0.9, was a simple protocol for raw data transfer across the Internet. 這裡的 raw data transfer across the Internet.這句話我的理解資料在因特網上傳輸或者轉移都合適。但是我們習慣應該是傳輸更符合我們的說話習慣。所以這句話我覺得transfer翻譯成傳輸更適合。 Transfer在協議裡很多地方使用比如 RFC2068 14.40 Transfer-Encoding RFC2616 14.41 Transfer-Encoding RFC2616 3.6 Transfer Codings 在RFC2616 3.6 Transfer Codings 有這樣一段話 However, safe transport has a different focus for an 8bit-clean transfer protocol. In HTTP, the only unsafe characteristic of message-bodies is the difficulty in determining the exact body length (section 7.2.2), or the desire to encrypt data over a shared transport. 這裡使用了一個詞transport這個 還有 transfer protocol 我不是做翻譯的這裡列出來這個說為了大家理解。

下面我要給大家一個非常重要的文件,RFC: 793 通過這個文件我覺得更能體現出來Transfer 的含義 RFC: 793 先簡單介紹下主要介紹的說TCP協議 TRANSMISSION CONTROL PROTOCOL RFC: 793 的 1.5節 列出來幾個詞語,然後對這些詞語後面有詳細的解釋 1. Basic Data Transfer 2. Reliability 3. Flow Control 4. Multiplexing 5. Connections 6. Precedence and Security 我想大家看到第一個詞Basic Data Transfer 在這裡翻譯成 基礎的資料傳輸應該說更恰當了,也沒有什麼異議。 在查閱文件的過程中,我發現在對Transfer 解釋的時候,文件裡確實有一部分表達了交換的意思,所以之前我也考慮過如果Transfer 翻譯成傳輸真的錯了那麼翻譯成交換或者互動或者其他的是不是更適合。不過這裡不糾結這些了。

四、"HTTP is not a Transport Protocol "

李錕 09:57:33 IETF的那些“transfer protocol”協議,都不是傳輸協議 李錕 09:58:11 “transport protocol”和“transfer protocol”兩個術語,一定要仔細分清楚。
這兩句話不是我說的。說那個討論帖裡的內容我拿出來的 首先 我覺得在英語國家使用“transport protocol”和“transfer protocol” 應該沒有那麼多歧義,不然這個查下資料可能就找到問題了,可是為什麼我們翻譯之後會有這個歧義了呢? 為了解決這個問題 我有必要先贊同 李老師的一個觀點“transport protocol”和“transfer protocol”兩個術語,一定要仔細分清楚。
確實這說兩個術語不等價,所以不能互換使用,所以就不能同時翻譯成一個單詞。 這裡還要否定李老師的上面一句話“transfer protocol”協議,都不是傳輸協議。 這裡有人想過一個方案就是把Transport layer 不要翻譯成傳輸層,翻譯成運輸層,這樣是不是就解決了? 好像說個解決辦法,但是這樣就會有一個問題沒有解決就是沒有消滅歧義。相對於transfer 來說transport 更像是傳輸,如果翻譯成運輸層,transport 給人的感覺更像說傳輸反而有引入新的歧義的感覺。 那應該如何解決這個問題呢 這裡引用幾個文章片段來感受一下好解決這個問題 這個是英文維基百科的Transport layer裡的一句話 The best-known transport protocol of TCP/IP is the Transmission Control Protocol (TCP) 這句話說 TCP 是一個 transport protocol 。

RFC959 2.2 這個說FTP協議中的一句話
There are two byte sizes of interest in FTP: the logical byte size of the file, and the transfer byte size used for the transmission of the data. The transfer byte size is always 8 bits. The transfer byte size is not necessarily the byte size in which data is to be stored in a system, nor the logical byte size for interpretation of the structure of the data. 大家應該看到and the transfer byte size used for the transmission of the data. 這半句了 transmission 和TCP協議中的T說一個單詞。不過我不考慮單詞的用法,因為我英文肯定說沒有討論區的專家好的。 rfc7230#section-6 有這樣一段表述 HTTP messaging is independent of the underlying transport- or -session-layer connection protocol(s). HTTP only presumes a reliable transport with in-order delivery of requests and the corresponding in-order delivery of responses. The mapping of HTTP request and response structures onto the data units of an underlying transport protocol is outside the scope of this specification. 其中使用了underlying transport- or -session-layer connection protocol(s) 還有underlying transport protocol 。代表的是低層的 transport protocol 。 而維基百科 Application layer (應用層)還有這樣一句話 HTTP 屬於應用層協議 The application layer only standardizes communication and depends upon the underlying transport layer protocols to establish host-to-host data transfer channels and manage the data exchange in a client-server or peer-to-peer networking model. 通過上面的解釋基本可以確定 幾個問題 transport layer protocols 和 Transport Protocol 應該代表的說一個意思就是傳輸層協議。姑且翻譯成傳輸層。 如果這句話成立那麼"HTTP is not a Transport Protocol " 就非常好理解了。HTTP 確實不是一個傳輸層協議。 而這句話沒有意義之後 transfer 翻譯成傳輸也沒有問題。

五、 Transport Protocol 真的說的是傳輸層麼

"HTTP is not a Transport Protocol " 中的 Transport Protocol 真的說的是傳輸層麼 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.

通過Fielding 博士這段文字表述,如果作者想表達的是Transfer 不應該翻譯成傳輸。是不是應該用一個更直白的方式把去表達這段文字呢?如果大家仍然覺得6.5.3的具體內容表達的就是HTTP 不是傳輸協議,那麼請告知如何解讀的,我也想試著去理解一下,但是如果沒有明確的表達。那麼這裡概不接受。所以我的理解也非常簡單,HTTP is not a Transport Protocol 這句話的意思就是HTTP不是一個傳輸層協議。而且Transport Protocol這個術語確實在很多地方已經使用了,比如TCP上面就有這個詞,所以這個詞表達的說傳輸層協議的意思,我覺得非常符合他的本意。

還有一個證明點就是 6.5.2 的標題是HTTP is not RPC 這裡RPC 是一個術語。這句就不會有什麼混淆 而6.5.3 標題 HTTP is not a Transport Protocol 這裡Transport Protocol 應該跟RPC一樣說個術語。這個術語表達的意思應該說傳輸層協議更適合。而不是想表達傳輸的意思。如果我理解誤歡迎大家指出。如果覺得 有道理還是希望大家多多支援一下

六、 總結

通過上面的分析之後我總結為HTTP翻譯成超文字傳輸協議沒有問題。 "HTTP is not a Transport Protocol " 中的Transport Protocol代表的應該是一個術語。 我的理解Transport Protocol在這裡表達的就是傳輸層協議。 Transport Protocol 就是 transport layer protocol 的簡稱,或者標準表述。

七、參考連結

Roy Thomas Fielding, Architectural Styles and the Design of Network-based Software Architectures rfc2616 HTTP協議 rfc793 TCP 協議 rfc959 FTP協議 維基百科 應用層協議 維基百科 [TCP協議]

相關文章