Socket為什麼要翻譯成套接字?

socket的英文原義是「孔」或「插座」,這個多好理解,套什麼接什麼字,真鬱悶


作為一條刻(wu)苦(liao)鑽(tou)研(ding)的IT狗,告訴你……不……可……考……

理論上對於計算機界的新名詞,我們國家有個中國計算機學會,下面有個「計算機術語審定工作委員會」,其職責就是「負責計算機新術語的審定工作,收集、翻譯、釋義、審定和推薦計算機術語,將審定過的新術語報全國名詞審定委員會,審定過的新詞在CCF平台上宣傳推廣」,成員是全國幾十名教授哦。很希望能看到他們的成果,可是在他們「CCF平台」上木有任何進一步信息……

好吧我知道他們不會理我,我自己找谷大叔玩。友情提醒,跟我一樣睡不著的可以往下繼續看,不看也不損失什麼,看了也收穫不了什麼,就4這麼拽。

在計算機領域,socket有多個意思。在硬體上,理解為插座上沒錯的,比如CPU的插座Socket 370, Socket 462, Socket AM3,這個大家都很容易理解,木有異議。讓人很費解的是這貨出現在軟體領域(廣義)時,就硬生生改名套接字了。

最早出現socket,目前俺能找到的信息,是1972年一篇關於ARPANET(美國高等研究計劃署網路,互聯網的祖師爺)面向功能協議的論文(computer.org 的頁面):

容易看出,作者是想表達建立網路連接和插插座一樣,一方去「插」一方「被插」。1974年另一介紹仿ARPANET直連的論文也提到同樣的概念,並更仔細的描述這一交互機制。(ietf.org 的頁面)

然後真正將socket概念發揚光大的,是1983年4.2BSD的發布,這是伯克利推出內含TCP/IP的第一個Unix BSD版本(berkeley.edu 的頁面)

從這個時期起,socket是一種進程間通信機制,提供一種供應用程序訪問通信協議的操作系統調用,並且通過將socket與Unix系統文件描述符相整合,使得網路讀寫數據(或者服務調用)和讀寫本地文件一樣容易。很顯然,這貨已經離插座越來越遠了,已經完全不再是硬體上的物件,而是一序列的「指令」 ,按漢語的理解,已經具備了「套接」(建立網路通訊或進程間通訊)和「字」(可交互的有序指令串)的概念。

然後我們回到國內。俺在知網翻了很久很久,最早關於socket的文獻竟然就是一篇講翻譯的,《計算機網辭彙譯名討論》 ,發表於1977年02期《電子計算機動態》,文中把socket譯為「媒介(字)」,可見作者已基本理解了該詞的意義,並且在此之前應該已經有文獻里用到了這個詞,可惜實在找不到。

然後在1979年09期《電子計算機參考資料》上一篇無名氏作的《計算機網路軟體簡介》上,也是關於ARPANET的,作者直接就前無古人的冒出了「套接字」這三個字。同時作者提「信口」。文中雖然沒有出現socket字樣,但由於所描述的對象實際就是socket,所以俺就認為這就是他了。

能找到最早提及socket的文獻,是閻保平發表於1982年12期《計算機研究與發展》的《一種局部互連分組交換網路的體系結構》,文章設計了一種區域網組網的原理和實現,既在文中提到套接字,又在一個圖表中示意出了socket。

還有一篇早期文獻提到了套接字,是陸聖銘發表在1984年07期《電子技術》上的《微計算機時代的普及型局部網路》,在介紹OMNINET(一種結構簡單、靈活的低成本微型機區域網方案)時提到socket為「軟插口」,並附加了注釋「並不是硬體上的插座」。

所以可以認為在1980年前後幾年,socket一詞已經進入我國學界,然後在大約80年代中期套接字這一翻譯被逐漸普遍接受。嗯,謝謝觀賞。然而看到這也還是沒有x用啊,我只是說了說歷史,還是沒說清為什麼是不是,可是我從一開始就說了這是未知之謎啊,哈哈哈哈。其實我也很不喜歡這種生澀的譯名,比如context設備上下文、handle句柄、macro宏,我小時候自己看計算機書籍好辛苦的,都是漢字但就是不知道在說什麼。


我也一直對這個翻譯抱有疑問,也未找到答案。既然找不到現成的答案,只能自己動手去想辦法理解了。
如果通過百度搜索「套接字」,除了作為「socket」的中文翻譯,找不到其他的結果,看來無法通過這個詞來搜尋其來源。
那麼何不轉念一想,搜索一下「套接」這個詞呢?實際上,我們通過搜索「套接」,可以找到「套接管」這個詞,以及他是什麼東西:套接管_百度圖片搜索
看到圖片搜索的結果,我們大概可以明白一二了。實際上,套接管可以理解為「將兩個管子的介面包裹住用以將兩個管口連接在一起套筒。」這樣,是不是覺得套接管的功能作用和socket在計算機領域的作用類似了呢?
順便,你也可以看看socket pipe在google圖片的搜索結果。
至於「套接字」這個詞中的第三個字——「字」,就相對容易理解了。字,在計算機領域, 對於某種特定的計算機設計而言,字是用於表示其自然的數據單位的術語(維基百科,字 (計算機))。這樣,「套接」和「字」組成一個字,用於表達socket的中文含義,也就可以理解了。
可能有人會覺得我的理解有些牽強,我覺得確實有一點,因為這只是我的猜想,也許第一個把socket翻譯成套接字的那個人根本不是按照我的這個解釋來想的。但是,我覺得,在找不到原本的解釋的情況下,這樣去理解,至少讓初學socket編程的人更容易正確的理解這個詞了,不會在腦中留下懸而未決的疑問,多少還是有些幫助的。


SSL怎麼辦。。


在UNIX Network Programming 1 volume 3th edition中文版page 7下面的譯者注釋中,譯者也注意了這個問題。譯者認為這個詞譯作「套介面」更為合適。


套&>套用;接&>介面;字&>標識=套用介面的標識
多簡單....


套接字的翻譯還是比較貼切的,我畫了兩幅圖解釋,多的也不說了。


我只想知道issue為啥翻譯為「發射」...


我好像一直都是叫套介面的……


在土木工科生觀念里,socket 從來指的都是這玩意


先說下你們都知道的:

網路上的兩個程序通過一個雙向的通信連接實現數據的交換,建立網路通信連接至少要一對埠號(socket)。Socket的英文原義是「孔」或「插座」,通常也稱作"套接字",用於描述IP地址和埠,是一個通信鏈的句柄。

然後跳出各位的領域說些你們不知道的:

套接管:

套接管:兩個管子的介面處用以將兩個管口連接在一起的套筒。

SO翻譯君可能精通管道or水暖技術


看了下面很多回答,感覺有點小尷尬,這裡拋個磚吧。。。
「套接字」其實就是「表示套接的字」。套接就不過多解釋了,挺形象的,不過字是計算機中的字,word。首先,表示一個套接字需要一個四元組&,總計四個位元組(byte),每個位元組8位,在32位計算機的情況下,4個位元組剛好可以用一個字(word)來表示,因此命名為「套接字」。。。雖然「套接標識符」是明顯更好的命名。。。
我覺得以上是一種合理的推測。。。
http://www.zhihu.com/question/22950899/
這個也挺有意思的。。。


長的像插座


不能同意更多了


很多蹩腳的翻譯搞得很不好理解,從漢字的字面完全看不出是什麼意思。


unix網路編程卷一,第一章有註解。


在日本,variant被翻譯為變數,咱們叫變數。
在台灣,software被翻譯成軟體,咱們叫軟體。

哪有什麼道理好講的。


不是插座的意思嗎?


一開始翻譯的時候感覺和socks差不多,所以認為本意是襪子。這樣想來的話,翻譯成套接字就很好理解了。


推薦閱讀:

為什麼單線程下載時速度是慢慢增加到最大帶寬的?
計算機培訓,是去還是留?
英特爾的「處理器信息更新工具」是怎麼工作的,為什麼會有這種工具?
下一個革命性的人機交互方式會是什麼?
對於計算機系學生 MacBook Pro 128G 是否夠用?

TAG:英語翻譯 | 計算機 | Socket |