1. 程式人生 > 其它 >傳輸層之TCP

傳輸層之TCP

傳輸層

計算機網路體系結構中的物理層、資料鏈路層以及網路層解決的是主機與主機之間的通訊。

但是在實際的操作中,兩臺主機間的通訊實際上是兩臺主機程序間的通訊。就像聊QQ,肯定是兩個主機上的QQ程式來相互通訊的。

TCP的出現就是為了解決這個端到端的問題。

傳輸層還有一個很重要的作用:要保證傳輸資料的可靠性

TCP

全稱是 Transmission Control Protocol ,這是一種 面向連線 connection-oriented 協議。

兩臺主機上的程序或者應用程式在進行通訊之前,必須要先進行握手,這個握手是一種邏輯上的連線,並不是兩個主機之間真的握手。

什麼是TCP?

TCP是一種面向連線的、可靠的、基於位元組流

的傳輸層通訊協議。

  • 一對一,不能像UDP協議可以一對多;
  • 可靠的,不管網路鏈路層出現什麼變化,TCP都可以保證一個報文一定能達到接收端;
  • 位元組流,沒有邊界、有序、

UDP

使用者資料報協議 User Datagram Protocol

這種協議不需要建立連線們就能直接傳送封裝好的IP資料包

協議非常的簡單,頭部只有8個位元組

而且你發出去,對方到底收沒收到,收到的完不完整,是沒辦法保證的。

TCP與UDP對比

兩者的不同點:

  1. 連線
    • TCP要先建立連線,才能通訊
    • UDP不需要連線,即刻傳輸
  2. 服務物件
    • TCP是一對一
    • UDP是一對一、一對多、多對多
  3. 可靠性
    • TCP是可靠交付資料的,資料可以做到無差錯、不丟失、不重複、按需到達
    • UDP無法保證
  4. 擁塞控制、流量控制
    • TCP都有,用於保證資料的傳輸的安全性
    • UDP都沒有,但即使網路非常擁堵,也不會影響它的傳送速率
  5. 首部開銷
    • TCP較長,有一定的開銷
    • UDP則相對較少

兩者的應用場景

  • TCP因為足夠可靠,所以常用於FTP檔案傳輸;HTTP/HTTPS
  • UDP因為它的實時性,所以常用於:包量較少的通訊(DNS、SNMP);視訊音訊,廣播通訊。

TCP三次握手與四次揮手

三次握手

三次握手都是怎麼握的?

每一次握手,都在改變著客戶端與伺服器端所處的狀態。

為什麼非要握手三次呢?

  1. 三次握手可以阻止歷史重複連線的初始化(主要原因)
  2. 三次握手可以同步雙方的初始序列號
  3. 三次握手可以避免資源浪費

四次揮手

揮手是為了斷開。

為什麼揮手要揮四次?

在關閉連線的時候,客戶端向服務端傳送FIN時,僅僅表示客戶端不再發送資料了,但是還能接收資料。

伺服器接收到客戶端的FIN報文時,先回一個ACK應答報文,而服務端可能還有資料需要處理和傳送,等服務端不再發送資料時,才傳送FIN報文給客戶端表示同意關閉連線。