1. 程式人生 > >day 27 網際網路TCP與UDP協議 ,三次握手四次揮手

day 27 網際網路TCP與UDP協議 ,三次握手四次揮手

一 . OSI七層模型(網際網路核心協議,從下往上的順序是物理層<資料鏈路層<網路層<傳輸層<會話層<表示層<應用層)

     

  也瞭解下五層通訊的流程:

二 . socket

       Socket又稱為套接字,它是應用層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket介面後面,對使用者來說,一組簡單的介面就是全部,讓Socket去組織資料,以符合指定的協議。當我們使用不同的協議進行通訊時就得使用不同的介面,還得處理不同協議的各種細節,這就增加了開發的難度,軟體也不易於擴充套件(就像我們開發一套公司管理系統一樣,報賬、會議預定、請假等功能不需要單獨寫系統,而是一個系統上多個功能介面,不需要知道每個功能如何去實現的)。於是UNIX BSD就發明了socket這種東西,socket遮蔽了各個協議的通訊細節,使得程式設計師無需關注協議本身,直接使用socket提供的介面來進行互聯的不同主機間的程序的通訊。這就好比作業系統給我們提供了使用底層硬體功能的系統呼叫,通過系統呼叫我們可以方便的使用磁碟(檔案操作),使用記憶體,而無需自己去進行磁碟讀寫,記憶體管理。socket其實也是一樣的東西,就是提供了tcp/ip協議的抽象,對外提供了一套介面,同過這個介面就可以統一、方便的使用tcp/ip協議的功能了。

其實站在你的角度上看,socket就是一個模組。我們通過呼叫模組中已經實現的方法建立兩個程序之間的連線和通訊。也有人將socket說成ip+port,因為ip是用來標識網際網路中的一臺主機的位置,而port是用來標識這臺機器上的一個應用程式。 所以我們只要確立了ip和port就能找到一個應用程式,並且使用socket模組來與之通訊。

 

三 . 基於TCP和UDP兩個網際網路協議下的socket的通訊流程對比

       TCP:可靠的,面向連線的協議,資料沒有長度限制,理論上可以無限長,但是為了保證網路的效率,不會唱過IP資料包的長度

傳輸效率低全雙工通訊(傳送快取或接受快取),面向位元組流,TCP的應用:Web瀏覽器,檔案傳輸程式。

       UDP:不可靠,無連線的服務,傳輸效率高(傳送前延時小),"報頭"部分一共只有8個位元組,總長度不超過65535位元組,正好能放一個IP資料包

一對一,一對多,多對一,多對多,面向報文(資料包)盡最大努力服務,無擁塞控制。使用UDP的應用:域名系統 (DNS);視訊流;IP語音(VoIP)。

四 . 三次握手四次揮手

    三次握手完成,TCP客戶端和伺服器端成功的建立連線,可以開始傳輸資料了四次揮手是因為建立雙工管道,你和我斷了,我還是可以給你發訊息的,所以你斷了連線之後,必須由我斷開連線,所以要進行四次揮手。