TCP協議和UDP協議區別
標簽(空格分隔): TCP,udp
TCP的三次握手
TCP被稱為可靠的數據傳輸協議,主要是通過許多機制來實現的其中最主要的就是三次握手的功能,當然,TCP傳送數據的機制非常復雜,有興趣的朋友請自行參考相關的網絡書籍,那么如何利用TCP的包頭來確認這個數據包已經被對方接收,並進一步對方的主機實現連接?我們以圖說明:
在上邊的數據包連接的過程中,必須經過三次確認的動作,所以這種連接方式也被稱為三次握手(Tree-way handshake)那么我們將上邊的步驟分為:A,B,C,D四個階段來說明;
- A:數據包發起:
- B:數據包接受也確認數據包傳輸:
- C:回送確認數據包:
- D:取得最后的確認:
若一切順利,就能建立真正的連接了;
也就是說你必須了解“網絡是雙向的”這個事實,所以不論是客戶端還是服務端都必須通過一次SYN和ACK來建立連接,所以總共進行三次交談!在設定的防火牆或者是追蹤網絡連接的問題時,這個“雙向”的概念是最容易忽略的,而且常常導致無法成功連接的問題;
如下例子模擬三次握手:
有人問:***你在嗎?
回答:在的,你在嗎?
對方回答:在的
此時兩個人確認彼此都可以聽到對方的時候,就可以建立可靠的連接了;
無連接的UDP的協議:
UDP的全稱是即:用戶數據報協議,UDP和TCP不一樣,UDP不提供可靠的傳輸模式,因為它不是面向連接的機制,這是因為在UDP的傳送過程中,接收端在接收導數據包之后,不會回復響應數據包(ACK)給發送端,所以數據包並不像TCP有較為嚴密的檢查機制;
TCP的數據包確實是比較可靠的,因為通過三次握手,不過,也由於三次握手的緣故,TCP數據包的傳輸速度會非常的慢,至於UDP數據包由於不需要確認對方是否正確的收到數據,故報頭數據較少,所以UDP就可以在data 處填充更多的數據,同時UDP比較適合需要實施反映一些數據流,例如影向實時傳輸軟件等等,就可以實用這類的數據包傳輸,也就是UDP的傳輸並不考慮連接要求,連接終止與流量控制等特性,所以適合的場景是:當數據的正確性要求不是很重要的時候,例如:網絡攝影機;
另外的很多的軟件提供了TCP和UDP的傳輸協議的,舉例來說,查看主機的名字DNS服務就同時提供了TCP和UDP協議,由於UDP較為快速,所以我們的client端可以先使用UDP來與服務器連接,但是當使用UDP連接卻還是無法取得正確的數據時,便轉換為較為可靠的TCP協議來傳輸了,這樣可以同時兼顧快速和可靠的傳輸;
- :例子:上課的時候老師一直講很多的東西,不管同學聽不聽他都一直講,也不需要學生的響應,就一直講,這就是UDP協議