目錄
一、Socket抽象層
我們知道兩個進程如果需要進行通訊最基本的一個前提是能夠唯一標示一個進程,在本地進程通訊中我們可以使用PID來唯一標示一個進程,但PID只在本地唯一,網絡中的兩個進程PID沖突幾率很大,這時候我們需要另辟它徑了,我們知道IP層的IP地址可以唯一標示主機,而TCP層協議和端口號可以唯一標示主機的一個進程,這樣我們可以利用IP地址+協議+端口號唯一標示網絡中的一個進程。
能夠唯一標示網絡中的進程后,它們就可以利用Socket進行通信了,什么是Socket呢?我們經常把Socket翻譯為套接字,Socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用已實現進程在網絡中通信。
Socket起源於UNIX,在Unix一切皆文件哲學的思想下,Socket是一種"打開—讀/寫—關閉"模式的實現,服務器和客戶端各自維護一個"文件",在建立連接打開后,可以向自己文件寫入內容供對方讀取或者讀取對方內容,通訊結束時關閉文件。