TCP/IP 協定與 Internet 網路:第八章 TCP Socket 程式介面  上一頁           下一頁

 

翻轉工作室:粘添壽

 

8-2 Socket 基本功能

        Socket 介面提供六個基本功能,來達成通訊連線的目的:

(A) 開啟插座(Create a socket

我們可以用 socket() 呼叫程式,來產生一個通訊端點。在呼叫 socket() 程序時,必須給予適當的參數作為規劃通訊通道的模式,通道參數如下:

Address Family表示通道的位址模式,例如:Internet Unix 通訊模式。

Type of Service任何一種通道模式都有其特殊的服務模式,一般可區分為電報傳輸(Datagram)或虛擬電路(Virtual Circuit)服務兩大類。

Protocol此通訊端點所使用的通訊協定,可區分為 TCPUDP IP

(B) 連結通訊位址(Bind an address

當開啟一個 Socket 後並不能直接通訊,就好像有一個電話機,但沒有電話號碼一樣,必須將電話機連結到電話交換機上,並給予一個電話號碼。bind() 程序就是將 Socket 連結到通訊端點上,並給予一個通訊埠口號碼,然而通訊號碼是由IP Address + Port Number所構成,有了這個號碼就成為 Internet 網路上一個成員,就好像電話機已連上一個電話號碼一樣,利用這個號碼就可以和其它成員通訊。圖 8-3 表示將 Socket 植入通訊埠口號碼的示意圖,通訊雙方都設定到各自的通訊號碼,雙方便可依照這個號碼來通訊,而不用理會網路實際的連接型態。

8-3 Socket 埠口號碼

(C) 連結到對方插座(Connect to another socket

Socket 連結到位址後,便可以和遠端 Socket 連線,來建構一個完整的通訊連線。通訊模式有兩種連線方式,一者為虛擬電路(Virtual Circuit)方式,通訊雙方需事先建立連線,才可以互相通訊,就好像必須撥接通電話,雙方才可以對話。連線建立後,雙方便依照此連線傳輸資料,資料傳送中無需再建立連線;另一者為電報傳輸(Datagram),雙方 Socket 並未建立連線,便直接將訊息傳送給對方,它的動作就好像將訊息傳送到某一信箱內,每一信息(或稱 Datagram)都必須註明對方的位址,也就是說,每一信息都必須自行建立通訊連線,再將訊息傳送過去,傳送完之後,該連線便自動消失。

(D) 接受對方端點連線(Accept a socket connection

接受對方連線的情況只會發生在虛擬電路方式。當 Socket 連結到網路位址後,便可選擇進入聆聽狀態(Listen State),以等待遠端 Socket 要求連線。當 Socket 接收到要求連線訊息後,可選擇是否接受連線(Accept())。

(E)  傳送資料(Transfer data

Socket 之間傳送資料,就好像一般程式將資料寫入磁碟機或緩衝器一樣的簡單,依照連結方式有不同的介面程式,如虛擬電路連接方式有:

read() write() 系統呼叫是作為一般資料的傳送與接收使用。

send() recv() 提供比 read()/write() 較多功能的系統呼叫。一般使用於較緊急的資料傳輸,這兩個系統呼叫所傳送的資料,會超越一般資料的佇列排序,而優先傳送或接收。

如果採用電報傳輸方式有:

sendto() recvfrom() 系統呼叫是做一般資料傳送與接收使用。

為了達到交談式的連線傳輸,不論虛擬電路或電報傳輸都可用下列兩個系統呼叫來傳輸資料:

sendmsg() recvmsg()

(F)  停止插座操作(Shut down socket

當執行 close() 系統呼叫停止 Socket 動作之後,將禁止所有資料傳輸。

 

 

<GOTOP>