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