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協議與UDP協議的區別
tcp協議和ucp協議與tcp ip協議的聯絡,一直都是說tcp ip協議與udp協議的區別。所以我想解釋一點的是tcp ip協議是乙個協議簇。裡面包括很多協議的。udp只是其中的乙個。之所以命名為tcp ip協議,因為tcp,ip協議是兩個很重要的協議,就用他兩命名了。那首先我們先總結幾個區別 1...
tcp協議與 udp協議的區別
網上很多文章都說tcp協議可靠,udp協議不可靠!為什麼前者可靠,後者不可靠呢?既然udp協議不可靠,為什麼還要使用它呢?所謂的tcp協議是面向連線的協議,面向連線是什麼呢?這篇文章,我們就是要弄懂以上問題!tcp和udp都是傳輸層的協議!從程式設計的角度看,就是兩個模組 模組就是 的集合,一系列 ...
TCP協議與UDP協議的區別
tcp協議與udp協議的區別 tcp面向位元組流,udp面向資料報 tcp協議較為複雜,udp協議較為簡單 tcp是可靠連線,udp不可靠 tcp的可靠性體現於 1.確認應答機制 三次握手,四次揮手 2.資料的按序到達 3.超時重傳 4.去重 1到4的保證利用32位序號和確認序號來保證 5.流量控制...