Socket Server (1) 初探



  • 甚麼是 Socket Server  

                凡是網路兩端互相連線傳送資料時的溝通介面就是socket,是一個網路系統的通訊函式庫,在任何作業系統中可以通用。主要的5大函式組成:
  1. socket()  
  2. bind() 
  3. listen() 
  4. connect() 
  5. accept() 
bind()一般用於服務器端,將一個套接字與一個套接字地址結構相關聯,比如,一個指定的PORT和IP地址。

listen()是使Socket進入等待連線狀態,等待客戶端(Client) 連上線來,很顯然的呼叫此函式的主機,功能會是一台伺服器(Server)。

如果有Client想要連過來,此時可以呼叫connect()來跟Server 連線。而Server接受後會建立新的socket和Client通訊,listen socket則繼續存在等待其他Client,直到關閉為止。

-----------------------------------------------------------------------------------------------

  • TCP 的連線建立概論

Client端若要與Server溝通,必須透過connect建立連線,經過驗證確定連線成功後,才能進行資料傳輸。在TCP的通訊協定中存在著一種三向交握(three-way handshake)機制:

  1. Client向Server提出連線要求(connect())
  2. .Server若接到要求,則回應Clinet接到要求
  3. .Client接到回應,向Server表示收到回覆

(Ref: http://mis.bankshung.net/2013/12/port-nmap.html)


至此才算連線建立完成,雙方可以開始交換資料若發生錯誤,則會由轉送中繼站回傳ICMP錯誤訊息connect函式讀到後,會回報錯誤給程式。

------------------------------------------------------------------------------------------------------------

下一篇將會探討python socket server 與 client 的實作方法。

留言

這個網誌中的熱門文章

【Python】py2exe 使用方法教學

【Python】將python 打包成exe執行檔 (pyinstaller 使用方法教學)

【作業系統】重點名詞解釋