Socket是什麼?


通訊端允許兩個不同的進程之間的通訊相同的或不同的機器上。在Unix中,每個I/O操作都是由寫入或讀取一個檔案描述符。檔案描述符是一個開啟的檔案相關聯的僅僅是一個整數,它可以是網路連線、一個文字檔案中或一個終端,還可以是其他的東西。

對於程式員通訊端看起來和行為很像一個較低水平的檔案描述符。這是因為命令,例如read()write()通訊端方式同樣,他們做的檔案和管道的工作。通訊端和正常的檔案描述符之間的差異發生在建立一個socket,並通過各種特殊的操作來控制一個通訊端

通訊端是2.1BSD首次推出,其後細化到當前的形式-4.2BSD。通訊端功能是現在目前大多數的UNIX系統版本。

哪裡使用通訊端?

使用Unix通訊端在用戶端伺服器應用程式框架。一台伺服器是一個過程,從用戶端的請求負責完成一些功能。大部分的應用層協定,如FTP,SMTP和POP3使用通訊端建立連線用戶端和伺服器之間,然後進行資料交換。

Socket 型別:

有四種型別可供使用者使用的通訊端。最常用的是前兩個而最後兩個很少被使用。

進程被推定為只有相同型別的通訊端之間進行通訊,但沒有任何限制,防止不同型別的通訊端之間的通訊。

  • Stream Sockets: 在網路環境下的傳遞保證。如果您傳送通過流通訊端三個專案“A,B,C”,他們將在同一順序到達 - “A,B,C”。這些通訊端使用TCP(傳輸控制協定)進行資料傳輸。如果傳遞是不可能的,傳送者會收到一個錯誤信號。資料記錄沒有任何界限??。

  • Datagram Sockets: 傳遞在網路環境中是無法得到保證。他們是無連線的,因為並不需要有一個開放的流通訊端連線 - 建立了一個資料包的目的地資訊,並將其傳送出去。他們使用UDP(使用者資料報協定)。

  • Raw Sockets: 為使用者提供存取底層通訊協定支援通訊端抽象的。這些通訊端通常是面向資料報,但其確切的特點是依賴於該協定所提供的介面。原始通訊端並不打算為廣大使用者,他們主要是針對那些熱衷於開發新的通訊協定或獲得一些更深奧的裝置,現有協定已提供。

  • Sequenced Packet Sockets: 它們是相似的流通訊端,除了保留記錄邊界。此介面僅提供作為網路系統(NS)的通訊端概念的一部分,並且是非常重要的,在最嚴重的NS應用。序列測定資料包通訊端允許使用者操作序列資料包協定(SPP)或網際網路資料報協定(IDP)可以通過編寫一個原型頭沿與要被傳送的所有資料,或者通過指定一個資料包或資料包的一組接頭連線器上可以使用一個預設的頭部與所有傳出的資料,允許使用者接收傳入的資料包的報頭。

下一步學習什麼?

在接下來的幾章中,將使用使用通訊端寫一個伺服器和用戶端作為範例。如果直接想要跳轉看如何編寫一個用戶端和伺服器,這裡不推薦這樣做。本教學會強烈建議先學習完成前面幾章,了解一些必要的基礎知識,然後開始做程式設計。