TCP/IP與UDP究竟有什麼差別

一个新手
發布: 2017-09-07 13:58:45
原創
2606 人瀏覽過

TCP(Transmission Control Protocol,傳輸控制協議)

#是面向連接的協議,也就是說,在收發資料前,必須和對方建立可靠的連結。一個TCP連線必須經過三次「對話」才能建立起來

 TCP三次握手過程:

1 主機A透過向主機B 發送一個含有同步序號的標誌位的資料段給主機B ,向主機B 請求建立連線,透過這個資料段, 主機A告訴主機B 兩件事:我想要和你通訊;你可以用哪個序號作為起始資料段來回應我. 

2 主機B 收到主機A的請求後,用一個帶有確認應答( ACK)和同步序號(SYN)標誌位的資料段回應主機A,也告訴主機A兩件事: 我已經收到你的請求了,你可以傳輸資料了;你要用哪佧序號作為起始資料段來回應我 

3 主機A收到這個資料段後,再發送一個確認應答,確認已收到主機B 的資料段:"我已收到回复,我現在要開始傳輸實際資料了 

這樣3次握手就完成了,主機A和主機B 就可以傳輸資料了. 

3次握手的特點:

1)沒有應用層的資料 

2)SYN這個標誌位元只有在TCP建產連接時才會被置1 

3)握手完成後SYN標誌位元被置0  

#TCP建立連線要進行3次握手,而斷開連線要進行4次   

1 當主機A完成資料傳輸後,將控制位FIN置1,提出停止TCP連線的請求 

2  主機B收到FIN後對其作出回應,確認這一方向上的TCP連線將關閉,將ACK置1 

3 由B 端再提出反方向的關閉請求,將FIN置1 

4 主機A對主機B的請求進行確認,將ACK置1,雙方向的關閉結束. 

#由TCP的三次握手和四次斷開可以看出,TCP使用面向連接的通信方式,大大提高了數據通信的可靠性,使發送數據端和接收端在數據正式傳輸前就有了交互,為數據正式傳輸打下了可靠的基礎 

名詞解釋 

ACK-TCP標頭的控制位元之一,對資料進行確認.確認由目的端發出,用它來告訴發送端這個序號之前的資料段都收到了.比如,確認號為X,則表示前X-1個資料段都收到了,只有當ACK=1時,確認號才有效,當ACK=0時,確認號無效,這時會要求重傳資料,保證資料的完整性. 

#SYN-同步序號,TCP建立連線時將這個位置1 

#FIN-傳送端完成傳送任務位元,當TCP完成資料傳輸需要斷開時,提出斷線的一方將此位置1 

TCP的包頭結構:

 來源埠16位元 

目標埠16位元 

#序號32位元 

回應序號32位元 

TCP頭長4位元 

#reserved 6位元 

控制碼6位元 

視窗大小16位元 

# #偏移量16位元 

校驗與16位元 

選項 32位元(可選)  

#這樣我們就得到了TCP包頭的最小長度,為20位元組。  

UDP(User Data Protocol,使用者資料報協定) 

######

(1) UDP是一個非連接的協議,傳輸資料之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程式的數據,並儘可能快地把它丟到網路上。在發送端,UDP傳送資料的速度只是受應用程式產生資料的速度、電腦的能力和傳輸頻寬的限制;在接收端,UDP把每個訊息段放在佇列中,應用程式每次從佇列中讀一個訊息段。

(2) 由於傳輸資料不建立連接,因此也不需要維護連接狀態,包括收發狀態等,因此一台服務機可同時傳送相同的消息。 

(3) UDP訊息包的標題很短,只有8個位元組,相對於TCP的20個位元組資訊包的額外開銷很小。 

(4) 吞吐量不受擁擠控制演算法的調節,只受應用軟體產生資料的速率、傳輸頻寬、來源端和終端主機效能的限制。 

(5)UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持複雜的連結狀態表(這裡面有許多參數)。 

(6)UDP是面對封包的。發送方的UDP對應用程式交下來的封包,在新增首部後就向下交付給IP層。既不拆分,也不合併,而是保留這些封包的邊界,因此,應用程式需要選擇合適的封包大小。 我們常使用「ping」指令來測試兩台主機之間TCP/IP通訊是否正常,其實「ping」指令的原理就是向對方主機發送UDP封包,然後對方主機確認收到封包,如果封包是否到達的訊息及時回饋回來,那麼網路就是通的。

 UDP的封包結構: 

來源埠16位元 

#目的連接埠16位元 

長度16位元 

校驗和16位元  

##小結TCP與UDP的差異: 

##1.基於連結與無連結; 

##2.對系統資源的要求(TCP較多,UDP少); 

#####3.UDP程式結構較簡單; ############4. 流模式與資料封包模式; ############5.TCP保證資料正確性,UDP可能丟包,TCP保證資料順序,UDP不保證。 ######

以上是TCP/IP與UDP究竟有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!