tcp udp都在傳輸層:
udp使用者資料報協議,在網路中它與tcp協議一樣用於處理資料報,是一種無連線的協議。當報文傳送之後,是無法得知其是否安全完整到達的。
1.面向無連線
udp 是不需要和 tcp一樣在傳送資料前進行三次握手建立連線的,想發資料就可以開始傳送了。並且也只是資料報文的搬運工,不會對資料報文進行任何拆分和拼接操作。
具體來說就是:
在傳送端,應用層將資料傳遞給傳輸層的 udp 協議,udp 只會給資料增加乙個 udp 頭標識下是 udp 協議,然後就傳遞給網路層了
在接收端,網路層將資料傳遞給傳輸層,udp 只去除 ip 報文頭就傳遞給應用層,不會任何拼接操作
2.單多廣播功能
udp 不止支援一對一的傳輸方式,同樣支援一對多,多對多,多對一的方式,也就是說 udp 提供了單播,多播,廣播的功能。
3.udp是面向報文的
傳送方的udp對應用程式交下來的報文,在新增首部後就向下交付ip層。udp對應用層交下來的報文,既不合併,也不拆分,而是保留這些報文的邊界。因此,應用程式必須選擇合適大小的報文
4. 不可靠性
首先不可靠性體現在無連線上,通訊都不需要建立連線,想發就發,這樣的情況肯定不可靠。
並且收到什麼資料就傳遞什麼資料,並且也不會備份資料,傳送資料也不會關心對方是否已經正確接收到資料了。
再者網路環境時好時壞,但是 udp 因為沒有擁塞控制,一直會以恆定的速度傳送資料。即使網路條件不好,也不會對傳送速率進行調整。這樣實現的弊端就是在網路條件不好的情況下
可能會導致丟包,但是優點也很明顯,在某些實時性要求高的場景(比如**會議)就需要使用 udp 而不是 tcp。
udp 的頭部開銷小,位元組少,只有八字節,相比 tcp 的至少二十位元組要少得多,在傳輸資料報文時是很高效的
tcptcp協議全稱是傳輸控制協議是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。
1.建立乙個tcp連線的過程為(三次握手的過程):
第一次握手
客戶端向服務端傳送連線請求報文段。該報文段中包含自身的資料通訊初始序號。
第二次握手
服務端收到連線請求報文段後,如果同意連線,則會傳送乙個應答,該應答中也會包含自身的資料通訊初始序號
第三次握手
當客戶端收到連線同意的應答後,還要向服務端傳送乙個確認報文。此時連線建立成功。
這裡可能大家會有個疑惑:為什麼 tcp 建立連線需要三次握手,而不是兩次?為了防止出現失效的連線請求報文段被服務端接收的情況,從而產生錯誤。所以還要再確認一下
2. tcp斷開鏈結
第一次握手
若客戶端 a 認為資料傳送完成,則它需要向服務端 b 傳送連線釋放請求。
第二次握手
b 收到連線釋放請求後,會告訴應用層要釋放 tcp 鏈結。然後會傳送 ack 包,並進入 close_wait 狀態,此時表明 a 到 b 的連線已經釋放,不再接收 a 發的資料了。
但是因為 tcp 連線是雙向的,所以 b 仍舊可以傳送資料給 a。
第三次握手
b 如果此時還有沒發完的資料會繼續傳送,完畢後會向 a 傳送連線釋放請求,然後 b 便進入 last-ack 狀態。
第四次握手
a 收到釋放請求後,向 b 傳送確認應答,此時 a 進入 time-wait 狀態。該狀態會持續 2msl(最大段生存期,指報文段在網路中生存的時間,超時會被拋棄) 時間,
若該時間段內沒有 b 的重發請求的話,就進入 closed 狀態。當 b 收到確認應答後,也便進入 closed 狀態。
總結tcp向上層提供面向連線的可靠服務 ,udp向上層提供無連線不可靠服務。
雖然 udp 並沒有 tcp 傳輸來的準確,但是也能在很多實時性要求高的地方有所作為
對資料準確性要求高,速度可以相對較慢的,可以選用tcp
網路位址,tcp udp的區別
今天覆習了一下比較基礎的網路知識,本來以前對網路這塊就比較迷離。網路位址,眾所周知就是用來標識計算機所在位置,並不是標識那一台計算機的名字,而是表明這台計算機和網路之間的關係,所以當這台計算機換了個地方以後,也要相應的改ip位址。tcp udp 當ip協議把資料打包傳送到目地位址時,並不知道應該傳送...
TCP UDP協議的邊界性區別
面向無連線的 udp協議是面向報文的有邊界的報文的協議。傳送方的udp對應用程式交下來的報文,在新增首部後就向下交付給ip層。既不拆分,也不合併,而是保留這些報文的邊界,因此,應用程式需要選擇合適的報文大小。面向連線的tcp協議屬於無邊界的位元組流協議,使用者每次呼叫接收傳送函式介面時,不一定都能接...
網路協議,如TCP UDP的區別?
1 tcp面向連線 如打 要先撥號建立連線 udp是無連線的,即傳送資料之前不需要建立連線 2 tcp提供可靠的服務。也就是說,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達 udp盡最大努力交付,即不保證可靠交付 3 tcp面向位元組流,實際上是tcp把資料看成一連串無結構的位元組流...