1.socket 是什么?
先說說這個單詞的意思吧!
看看有道詞典給出的解釋:
這是我們生活中用到的插座
實際上翻譯成"插口"可能更好理解!
但是現在很多書都翻譯成"套接字",實際上翻譯成"套接口"更易理解些,
在UNIX Network Programming 1 volume 3th edition中文版page 7下面的譯者注釋中,譯者也注意了這個問題。譯者認為這個詞譯作“套接口”更為合適。
知乎上也有人提出了這個問題,
Socket為什么要翻譯成套接字? - 知乎
實際上本身的socket的的作用很明顯,就是實現連接的的!
自己畫了一個簡圖:
圖上反映的是我們的兩臺電腦想通過 internet來實現通信,那么必須先保證兩臺電腦連接到internet中,通過什么連呢,物理上我們常用的就是"網線",插到"網口"中就可以實現上網的功能了!
而這就是socket本身含義的體現!
圖中的的網線接口,我們就可以理解為"socket" ---這是其本意
那么為什么要翻譯成"套接字"呢?
這個我們得分開來看,首先得先理解"套接"二字
但是經過百度搜索并無單純的"套接"二字的解釋
倒是找到了一個叫做"套接管"的東西
先上圖:
實際上就是來源與上面的這種情形,實現兩個管子的連接,起作用的就是中間的套管!
我們姑且可以武斷的下個解釋:
所謂"套接" ---- 就是 "套到一塊,接起來"的意思!
那么,推而廣之,
"套接字 " ---- "就是起套接(連接)作用的 文件描述字"的簡稱 (注:File Descriptors文件描述符或是文件描述字 )
總結:
socket 本身是英文單詞的 "插座""插口"的意思,關鍵是領悟到其核心的作用,是媒介,或者叫中介
實現的是連接的作用!
所以中文在翻譯的時候,翻譯成了"套接字",是取其"套接(連接)"含義的!也是充分站在老外的角度來理解和翻譯的!
溫馨提示:以上內容,多是杜撰,鮮有考證(精力有限,準本溯源,可能也是無功而返,如果您是強迫癥患者,請到這看看,也許可以緩解一下,Socket為什么要翻譯成套接字? - 知乎 )
了解到上面的含義之后我們來看一下,計算機中網絡編程中的socket是什么呢!是如何起到所謂"套接"的作用的呢?
linux下 對socket的描述有兩句話
(1).socket 是一個特殊的文件
(2).socket是一個應用編程接口
2.為什么說socket是一個特殊的文件?---基于文件描述符的
對應的層次結構