TCP和UDP之間的關係

2021-08-16 00:19:15 字數 2780 閱讀 6736

tcp是控制傳輸協議,提供的是面向連線、可靠的位元組流服務,當客戶和伺服器彼此交換資料前,必須現在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp提供超時重發、丟棄重複資料、檢驗資料、流量控制等功能,保證資料能夠從一端傳輸到另一端。

udp是使用者資料報協議,是乙個簡單的面向資料報的運輸層協議。udp不可提供可靠性,它只是把程式傳給ip層的資料報傳送出去,但是並不保證它們是否能夠到達目的地。由於udp在傳輸資料報之前不需要在客戶端和伺服器之間建立乙個連線,且沒有超時重發等機制,故而速度極快。

打個比方,兩者的區別可將前者模擬為打**,後者模擬為發郵件。

另外關於tcp的三次握手和四次揮手也是需要熟悉的,如下:

tcp三次握手和四次揮手的全過程

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線

:位碼即tcp

標誌位,有6

種表示:

syn(synchronous建立連線

)ack(acknowledgement 表示響應、確認

)psh(push表示有data資料傳輸

)fin(finish關閉連線

)rst(reset表示連線重置

)urg(urgent緊急指標字段值有效

)三次握手:

第一次握手:客戶端傳送syn

包(syn=x)

到伺服器,並進入

syn_send

狀態,等待伺服器確認;

第二次握手:伺服器收到syn

包,必須確認客戶的

syn(

ack=x+1

),同時自己也傳送乙個

syn包(

syn=y

),即syn+ack

包,此時伺服器進入

syn_recv

狀態;第三次握手:客戶端收到伺服器的syn

+ack

包,向伺服器傳送確認包

ack(ack=y+1)

,此包傳送完畢,客戶端和伺服器進入

established

狀態,完成三次握手。

握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,tcp

連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,

tcp 

連線都將被一直保持下去。

確認號:其數值等於傳送方的傳送序號+1(

即接收方期望接收的下乙個序列號)。

四次揮手:

與建立連線的「

三次握手

」類似,斷開乙個

tcp連線則需要「四次

揮手」。

第一次揮手:主動關閉方傳送乙個fin

,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發資料了

(當然,在

fin包之前傳送出去的資料,如果沒有收到對應的

ack確認報文,主動關閉方依然會重發這些資料

),但是,此時主動關閉方還可以接受資料。

第二次揮手:被動關閉方收到fin

包後,傳送乙個

ack給對方,確認序號為收到序號

+1(與

syn相同,乙個

fin占用乙個序號)。

第三次揮手:被動關閉方傳送乙個fin

,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也傳送完了,不會再給你發資料了。

第四次揮手:主動關閉方收到fin

後,傳送乙個

ack給被動關閉方,確認序號為收到序號

+1,至此,完成四次揮手。

tcp的四次

揮手過程

(簡言之):

主動關閉方

向被動關閉方

傳送不會再給你發資料

了的資訊

;被動關閉方

對收到的

主動關閉方

的報文段進行確認;

被動關閉方向主動關閉方

傳送我也

不會再給你發資料

了的資訊;主動關閉方

再次對被動關閉方

的確認進行確認。

tcp三次握手和四次揮手的全過程如下圖:

tcp的三次握手過程?為什麼會採用三次握手,若採用二次握手可以嗎?

答:建立連線的過程是利用客戶伺服器模式,假設主機a

為客戶端,主機

b為伺服器端。(1)

tcp的三次握手過程:主機a向

b傳送連線請求;主機

b對收到的主機

a的報文段進行確認;主機

a再次對主機

b的確認進行確認。

(2)採用三次握手是為了防止失效的連線請求報文段突然又傳送到主機

b,因而產生錯誤。失效的連線請求報文段是指:主機

a發出的連線請求沒有收到主機

b的確認,於是經過一段時間後,主機

a又重新向主機

b傳送連線請求,且建立成功,順序完成資料傳輸。考慮這樣一種特殊情況,主機

a第一次傳送的連線請求並沒有丟失,而是因為網路節點導致延遲達到主機

b,主機

b以為是主機

a又發起的新連線,於是主機

b同意連線,並向主機

a發回確認,但是此時主機

a根本不會理會,主機

b就一直在等待主機

a傳送資料,導致主機

b的資源浪費。

(3)採用兩次握手不行,原因就是上面說的

失效的連線請求的特殊情況,因此採用三次握手剛剛好,兩次可能出現失效,四次甚至更多次則沒必要,反而複雜了。

TCP和UDP之間的區別

1.連線 無連線 他們之間的第一點並且最重要的區別是 tcp是面向連線的協議,而udp是無連線的協議。這意味著當乙個客戶端和乙個伺服器通過tcp傳送資料之前,必須先建立連線,他們可以通過tcp傳送資料。建立連線的過程也被稱為tcp握手,他通過控制訊息在客戶端和伺服器之間互換來實現。下面的圖形象描述了...

TCP和UDP通訊之間比較

在tcp客戶和伺服器可以彼此通訊之前,每一端都要指定連線的套接字對 本地ip位址 本地埠 外地ip位址 外地埠。下圖為從客戶的角度來看待tcp客戶和伺服器 從客戶的角度來理解tcp客戶和伺服器 下面從伺服器的角度來看tcp客戶 伺服器。本地埠 伺服器眾所周知的埠 用bind來繫結。bind呼叫中伺服...

TCP和UDP之間的區別和聯絡

tcp和udp之間的區別和聯絡 1.面向連線的tcp www.2cto.com tcp transmission control protocol,傳輸控制協議 是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。乙個tcp連線必須要經過三次 對話 才能建立起來,其中的過程非常複...