01、TCP 與 UDP 的區別
這兩種協議有什么區別呢?他們又是如何工作的?跟著文檔君往下看~
TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。可靠性,是 TCP 的最大特點,主要體現在:數據無丟失、無錯誤、無失序、無重復到達。就如同上圖,TCP 能將“孩子”(數據包)十分安全地傳送給接收者。
UDP是一種無連接、不可靠、快速傳輸的傳輸層通信協議。快速傳輸,是 UDP 的最大特點,主要體現在:數據發送前,不需要提前建立連接,能更高效地傳輸數據,但可靠性無法保證。就如同上圖,UDP 只負責把“孩子”(數據包)送出去,不管接收者有無收到。
直觀感受了 TCP 協議與 UDP 協議的區別后,咱們來看看 TCP 協議是如何工作的?
02、TCP 是如何工作的?
TCP 通信的連接管理機制 總結為:三次握手建立連接,四次揮手斷開連接。
lt;三次握手建立連接gt;
TCP 是面向連接的協議,所以每次發出的請求都需要對方進行確認。TCP 客戶端與 TCP 服務器在通信之前需要完成三次握手才能建立連接。
第一次握手
目的:這是一個請求建立連接的數據包,客戶端先向服務器發送一個同步數據包。
數據包的 TCP 首部內容:
同步 SYN=1
序號 seq=x
第二次握手
目的:服務器收到客戶端發送的第一個數據包后,判斷出為主動建立連接的數據包。若服務器同意連接,則服務器發送一個數據包進行回應。
數據包的 TCP 首部內容:
同步 SYN=1
確認標記 ACK=1
序號 seq=y
確認號 ack=x+1
第三次握手
目的:客戶端收到服務器的確認之后,再給服務器發送一個數據包。
數據包的 TCP 首部內容:
同步 SYN=1
確認標記 ACK=1
序號 seq=x+1
確認號 ack=y+1
Tips
在客戶端與服務器端傳輸的 TCP 數據中,雙方的序號 seq 和確認號 ack 的值,都是在彼此 seq 和 ack 值的基礎上進行計算的,這樣做保證了 TCP 數據傳輸的連貫性。一旦出現某一方發出的 TCP 數據丟失,便無法繼續 "握手",以此確保了 "三次握手" 的順利完成。
lt;四次揮手斷開連接gt;
聚散終有時,當數據傳輸完成后,TCP 客戶端與 TCP 服務器需要通過四次會話斷開連接,這個過程我們稱之為四次揮手。
第一次揮手
目的:客戶端向服務器發送連接釋放的請求數據包,并停止發送數據。
在連接釋放數據包的 TCP 首部中:
終止 FIN=1
序號 seq=x
第二次揮手
目的:服務器在收到連接釋放的報文之后,給客戶端發送確認報文。因此,客戶端到服務器方向上的連接釋放,TCP 連接此時處于半關閉狀態。半閉因為客戶端已無法發送數據給服務器,半開因為服務器仍可以發送數據給客戶端并被其接收。
在服務器發送給客戶端確認報文的 TCP 首部中:
確認標記 ACK=1
確認號 ack=x+1
序號 seq=y
第三次揮手
目的:若服務器已停止向客戶端發送的數據,則釋放連接,并向客戶端發送確認報文。
在確認報文的 TCP 首部中:
終止 FIN=1
確認標記 ACK=1
確認號 ack=x+1
序號 seq=z
第四次揮手
目的:客戶端收到服務器的連接釋放報文段后,向服務器發出確認報文。
在確認報文的 TCP 首部中:
終止 FIN = 1
確認標記 ACK=1
確認號 ack=z+1
序列號 seq=x+1
了解完 TCP 后,再來了解一下 UDP 是如何工作的~
03、UDP 是如何工作的?
UDP 協議是面向無連接的,即發送數據之前不需要建立連接,發送數據就是簡單的把數據包封裝一下,然后從網卡發出去,數據包之間并沒有狀態上的聯系。UDP 協議基本上是 IP 協議與上層協議的接口,UDP 協議使用 IP 層提供的服務將應用層得到的數據從一臺主機的某個應用進程傳遞到另一臺主機的某個應用進程。
舉個栗子~
當傳輸層從 IP 層收到 UDP 數據報文時,根據 UDP 數據報文首部中的目的端口,把 UDP 數據報文通過相應的端口傳遞給應用進程,如下圖所示。
如上圖中應用進程 4 與端口 2,如果接收方 UDP 發現收到的報文中的目的端口號不正確 ,則丟棄該報文,并由 ICMP 發送“端口不可達 " 差錯報文給發送方。
Tips
ICMP是 TCP / IP 協議簇的一個子協議,用于在 IP 主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。
04、總結一下
數據傳輸看似簡單,其實非常智慧~
TCP 和 UDP 服務的是程序,但程序和人是一樣的,可以你來我往進行交流,也可以一股腦的傾訴。TCP 就是彼此之間坦誠交流。消息有沒有收到,收到的信息是否一致,都可以有及時的反饋。
優點:可靠。
缺點:傳輸速率慢。
適用場景:通信軟件的賬戶登錄、支付等相關功能,采用可靠的 TCP。
UDP 就是傾訴,我不管你有沒有聽進去,不管你有無反饋,我就要不停地說。
優點:傳輸速率快。
缺點:不可靠。
TCP 和 UDP 各有優缺點,就看你實際需求啦~
更多 TCP 干貨,請戳三次握手,四次揮手,原來 TCP 這么有禮貌!
05、小問答
如何讓 UDP 由不可靠傳輸轉為可靠傳輸?
TCP 為什么是三次握手,而不是兩次或者四次?
為什么是四次揮手而不是三次?
鄭重聲明:此文內容為本網站轉載企業宣傳資訊,目的在于傳播更多信息,與本站立場無關。僅供讀者參考,并請自行核實相關內容。
2023年2月15日,湯臣倍健與美團買藥在北京舉辦了2023
2021年收入增長目標應能確保實現,2022年收入增長預計將
具體來看,一是簡化業務流程和材料,便利北京冬奧會相關區域內境
炒股就看金麒麟分析師研報,權威,專業,及時,全面,助您挖掘潛
,據索尼官方消息,新星粉,銀河紫,星光藍,三款全新配色Dua
,新氧數據顏究院發布《2021醫美行業白皮書》,白皮書顯示,