TCP與UDP及三次握手,四次揮手

2021-10-11 01:29:24 字數 2694 閱讀 1923

tcp(傳輸控制協議)----提供面向連線的,可靠的資料傳輸服務(全雙工),其資料傳輸的單位是**報文段**。

udp(使用者資料報協議)----提供無連線的,盡最大努力的資料傳輸服務(不保證資料傳輸的可靠性),其資料傳輸的單位是**使用者資料報**。

區別:

1.連線方面區別

tcp面向連線(如打**要bai先撥du號建立連線)。

udp是無連線的,即bai傳送資料之前不du需要建立連線。

2.安全方面的區別

tcp提供可靠的服務,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達。

udp盡最大努力交付,即不保證可靠交付。

3.傳輸效率的區別

tcp傳輸效率相對較低。

udp傳輸效率高,適用於對高速傳輸和實時性有較高的通訊或廣播通訊。

4.連線物件數量的區別

tcp連線只能是點到點、一對一的。

udp支援一對一,一對多,多對一和多對多的互動通訊。

5.首部開銷的區別

tcp首部開銷大

tcpudp

是否連線

無連線面向連線

是否可靠

不可靠傳輸,不使用流量控制和擁塞控制

可靠傳輸,使用流量控制和擁塞控制

連線物件個數

支援一對一,一對多,多對一和多對多互動通訊

只能是一對一通訊

傳輸方式

面向報文

面向位元組流

首部開銷

首部開銷小,僅8位元組

首部最小20位元組,最大60位元組

適用場景

適用於要求可靠傳輸的應用,例如檔案傳輸

三次握手

第一次握手

客戶端向服務端傳送連線請求報文段。該報文段中包含自身的資料通訊初始序號。請求傳送後,客戶端便進入 syn-sent 狀態。

第二次握手

服務端收到連線請求報文段後,如果同意連線,則會傳送乙個應答,該應答中也會包含自身的資料通訊初始序號,傳送完成後便進入 syn-received 狀態。

第三次握手

當客戶端收到連線同意的應答後,還要向服務端傳送乙個確認報文。客戶端發完這個報文段後便進入 established 狀態,服務端收到這個應答後也進入 established 狀態,此時連線建立成功。

注:因為兩次握手容易出現失效的連線請求報文段被服務端接收的情況,從而產生錯誤,所以採用三次握手。

四次揮手tcp 是全雙工的,在斷開連線時兩端都需要傳送 fin 和 ack。

第一次握手

若客戶端 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 狀態。

補充:

*syn:同步標誌(相當於一條線)

同步序列編號(synchronize sequence numbers)欄有效。該標誌僅在三次握手建立tcp連線時有效。它提示tcp連線的服務端檢查序列編號,該序列編號為tcp連線初始端(一般是客戶端)的初始序列編號。在這裡,可以把tcp序列編號看作是乙個範圍從0到4,294,967,295的32位計數器。通過tcp連線交換的資料中每乙個位元組都經過序列編號。在tcp報頭中的序列編號欄包括了tcp分段中第乙個位元組的序列編號。

*ack:確認標誌

確認編號(acknowledgement number)欄有效。大多數情況下該標誌位是置位的。tcp報頭內的確認編號欄內包含的確認編號(w+1,figure-1)為下乙個預期的序列編號,同時提示遠端系統已經成功接收所有資料。

*rst:復位標誌

復位標誌有效。用於復位相應的tcp連線。

*urg:緊急標誌

緊急(the urgent pointer) 標誌有效。緊急標誌置位,

*psh:推標誌

該標誌置位時,接收端不將該資料進行佇列處理,而是盡可能快將資料轉由應用處理。在處理 telnet 或 rlogin 等互動模式的連線時,該標誌總是置位的。

*fin:結束標誌

帶有該標誌置位的資料報用來結束乙個tcp回話,但對應埠仍處於開放狀態,準備接收後續資料

TCP三次握手和四次揮

一 tcp報文格式 在了解三次握手和四次揮手之前,首先要知道tcp報文內部包含了哪些東西。報文主要段的含義 序號 seq 用來標記資料段的順序,確保tcp傳輸有序。ack 確認 確認序號標誌,ack 1表示確認號字段有效,ack 0表示確認序號無效。syn 同步 連線請求序號標誌,用於建立連線。sy...

三次握手和四次揮手 TCP三次握手和四次揮手的理解

相比較於udp傳輸協議,tcp傳輸協議被認為是安全可靠的,這是由於tcp協議的三次握手和四次揮手保證了資料傳輸的安全性。tcp報文格式簡介 要了解tcp協議的三次握手和四次揮手,需要先了解在tcp協議中請求和響應的資料報報文格式。在報文中有幾個值得注意的字段 1 序號 seq序號,佔32位,用來標識...

TCP三次握手與四次握手

當我們從瀏覽器輸入乙個url,http的工作流程如下圖所示 dns解析流程請看dns網域名稱解析過程這篇文章 現在來講tcp三次握手 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。1 序號 seq序號,佔32位,用來標識從tcp源端向目的端傳送的位元組流,發起...