傳輸層之TCP
阿新 • • 發佈:2021-12-08
傳輸層
計算機網路體系結構中的物理層、資料鏈路層以及網路層解決的是主機與主機之間的通訊。
但是在實際的操作中,兩臺主機間的通訊實際上是兩臺主機程序間的通訊。就像聊QQ,肯定是兩個主機上的QQ程式來相互通訊的。
TCP的出現就是為了解決這個端到端的問題。
傳輸層還有一個很重要的作用:要保證傳輸資料的可靠性
TCP
全稱是 Transmission Control Protocol ,這是一種 面向連線 connection-oriented 協議。
兩臺主機上的程序或者應用程式在進行通訊之前,必須要先進行握手,這個握手是一種邏輯上的連線,並不是兩個主機之間真的握手。
什麼是TCP?
TCP是一種面向連線的、可靠的、基於位元組流
- 一對一,不能像UDP協議可以一對多;
- 可靠的,不管網路鏈路層出現什麼變化,TCP都可以保證一個報文一定能達到接收端;
- 位元組流,沒有邊界、有序、
UDP
使用者資料報協議 User Datagram Protocol
這種協議不需要建立連線們就能直接傳送封裝好的IP資料包。
協議非常的簡單,頭部只有8個位元組
而且你發出去,對方到底收沒收到,收到的完不完整,是沒辦法保證的。
TCP與UDP對比
兩者的不同點:
- 連線
- TCP要先建立連線,才能通訊
- UDP不需要連線,即刻傳輸
- 服務物件
- TCP是一對一
- UDP是一對一、一對多、多對多
- 可靠性
- TCP是可靠交付資料的,資料可以做到無差錯、不丟失、不重複、按需到達
- UDP無法保證
- TCP是可靠交付資料的,資料可以做到無差錯、不丟失、不重複、按需到達
- 擁塞控制、流量控制
- TCP都有,用於保證資料的傳輸的安全性
- UDP都沒有,但即使網路非常擁堵,也不會影響它的傳送速率
- 首部開銷
- TCP較長,有一定的開銷
- UDP則相對較少
兩者的應用場景
- TCP因為足夠可靠,所以常用於FTP檔案傳輸;HTTP/HTTPS
- UDP因為它的實時性,所以常用於:包量較少的通訊(DNS、SNMP);視訊音訊,廣播通訊。
TCP三次握手與四次揮手
三次握手
三次握手都是怎麼握的?
每一次握手,都在改變著客戶端與伺服器端所處的狀態。
為什麼非要握手三次呢?
- 三次握手可以阻止歷史重複連線的初始化(主要原因)
- 三次握手可以同步雙方的初始序列號
- 三次握手可以避免資源浪費
四次揮手
揮手是為了斷開。
為什麼揮手要揮四次?
在關閉連線的時候,客戶端向服務端傳送FIN時,僅僅表示客戶端不再發送資料了,但是還能接收資料。
伺服器接收到客戶端的FIN報文時,先回一個ACK應答報文,而服務端可能還有資料需要處理和傳送,等服務端不再發送資料時,才傳送FIN報文給客戶端表示同意關閉連線。