套接字上聯應用進程,下聯網絡協議棧,是應用程序經過網絡協議進行通訊的接口,是應用程序與網絡協議根進行交互的接口
編程
注:要經過互聯網進行通訊,至少須要一對套接字,其中一個運行於客戶端,咱們稱之爲 Client Socket
,另外一個運行於服務器端,咱們稱之爲 Server Socket
api
1.服務器監聽服務器
所謂服務器監聽,是指服務器端套接字並不定位具體的客戶端套接字,而是處於等待鏈接的狀態,實時監控網絡狀態 。網絡
2.客戶端請求socket
所謂客戶端請求,是指由客戶端的套接字提出鏈接請求,要鏈接的目標是服務器端的套接字。爲此,客戶端的套接字必須首先描述它要鏈接的服務器的套接字,指出服務器端套接字的地址和端口號,而後就向服務器端接字提出鏈接請求 。tcp
3.鏈接確認線程
所謂鏈接確認,是指當服務器端套接字監聽到或者說接收到客戶端套接字的鏈接請求,就會響應客戶端套接字的請求,創建一個新的線程,並把服務器端套接字的描述 發送給客戶端。一旦客戶端確認了此描述,鏈接就創建好了。而服務器端套接字繼續處於監聽狀態,接收其餘客戶端套接字的鏈接請求 。code
1.流式套接字(SOCK_STREAM)blog
流式套接字用於提供面向鏈接、可靠的數據傳輸服務。該服務將保證數據可以實現無差錯、無重複送,並按順序接收。流套接字之因此可以實現可靠的數據服務,緣由在於其使用了傳輸控制協議,即 TCP(The Transmission Control Protocol)協議
。接口
2.數據報套接字(SOCK_DGRAM)
數據報套接字提供一種無鏈接的服務。該服務並不能保證數據傳輸的可靠性,數據有可能在傳輸過程當中丟失或出現數據重複,且沒法保證順序地接收到數據。數據報套接字使用 UDP( User DatagramProtocol)協議
進行數據的傳輸。因爲數據報套接字不能保證數據傳輸的可靠性,對於有可能出現的數據丟失狀況,須要在程序中作相應的處理。
根據套接字的不一樣類型,能夠將套接字調用分爲面向鏈接服務和無鏈接服務 。
面向鏈接服務的主要特色以下:
(1)數據傳輸過程必須通過創建鏈接、維護鏈接和釋放鏈接3個階段;
(2)在傳輸過程當中,各分組不須要攜帶目的主機的地址;
(3)可靠性好,但因爲協議複雜,通訊效率不高 。
面向無鏈接服務的主要特色以下:
(1)不須要鏈接的各個階段;
(2)每一個分組都攜帶完整的目的主機地址,在系統中獨立傳送;
(3)因爲沒有順序控制,因此接收方的分組可能出現亂序、重複和丟失現象;
(4)通訊效率高,但可靠性不能確保 。