Python 關於TCP簡介以及與UDP的區別

大雄45發表於2022-08-06
導讀 我們來介紹Python 關於TCP簡介以及與UDP的區別
TCP介紹

TCP協議,傳輸控制協議(英語:Transmission Control Protocol,縮寫為 TCP)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,由IETF的RFC 793定義。
TCP通訊需要經過建立連線、資料傳送、終止連線三個步驟。
TCP通訊模型中,在通訊開始之前,一定要先建立相關的連結,才能傳送資料,類似於生活中,"打電話""

TCP特點
1. 面向連線

通訊雙方必須先建立連線才能進行資料的傳輸,雙方都必須為該連線分配必要的系統核心資源,以管理連線的狀態和連線上的傳輸。
雙方間的資料傳輸都可以透過這一個連線進行。
完成資料交換後,雙方必須斷開此連線,以釋放系統資源。
這種連線是一對一的,因此TCP不適用於廣播的應用程式,基於廣播的應用程式請使用UDP協議。

2. 可靠傳輸

1)TCP採用傳送應答機制

TCP傳送的每個報文段都必須得到接收方的應答才認為這個TCP報文段傳輸成功

2)超時重傳

傳送端發出一個報文段之後就啟動定時器,如果在定時時間內沒有收到應答就重新傳送這個報文段。

TCP為了保證不發生丟包,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然後接收端實體對已成功收到的包發回一個相應的確認(ACK);如果傳送端實體在合理的往返時延(RTT)內未收到確認,那麼對應的資料包就被假設為已丟失將會被進行重傳。

3)錯誤校驗

TCP用一個校驗和函式來檢驗資料是否有錯誤;在傳送和接收時都要計算校驗和。
流量控制和阻塞管理
流量控制用來避免主機傳送得過快而使接收方來不及完全收下。

TCP與UDP的不同點
  1. 面向連線(確認有建立三方交握,連線已建立才作傳輸。)
  2. 有序資料傳輸
  3. 重發丟失的資料包
  4. 捨棄重複的資料包
  5. 無差錯的資料傳輸
  6. 阻塞/流量控制

udp通訊模型udp通訊模型中,在通訊開始之前,不需要建立相關的連結,只需要傳送資料即可,類似於生活中,"寫信""

Python 關於TCP簡介以及與UDP的區別Python 關於TCP簡介以及與UDP的區別

TCP通訊模型

udp通訊模型中,在通訊開始之前,一定要先建立相關的連結,才能傳送資料,類似於生活中,"打電話""

Python 關於TCP簡介以及與UDP的區別Python 關於TCP簡介以及與UDP的區別

tcp的3次握手

Python 關於TCP簡介以及與UDP的區別Python 關於TCP簡介以及與UDP的區別

tcp的4次揮手

Python 關於TCP簡介以及與UDP的區別Python 關於TCP簡介以及與UDP的區別

tcp注意點

tcp伺服器一般情況下都需要繫結,否則客戶端找不到這個伺服器
tcp客戶端一般不繫結,因為是主動連結伺服器,所以只要確定好伺服器的ip、port等資訊就好,本地客戶端可以隨機
tcp伺服器中透過listen可以將socket建立出來的主動套接字變為被動的,這是做tcp伺服器時必須要做的
當客戶端需要連結伺服器時,就需要使用connect進行連結,udp是不需要連結的而是直接傳送,但是tcp必須先連結,只有連結成功才能通訊
當一個tcp客戶端連線伺服器時,伺服器端會有1個新的套接字,這個套接字用來標記這個客戶端,單獨為這個客戶端服務
listen後的套接字是被動套接字,用來接收新的客戶端的連結請求的,而accept返回的新套接字是標記這個新客戶端的
關閉listen後的套接字意味著被動套接字關閉了,會導致新的客戶端不能夠連結伺服器,但是之前已經連結成功的客戶端正常通訊。
關閉accept返回的套接字意味著這個客戶端已經服務完畢
當客戶端的套接字呼叫close後,伺服器端會recv解堵塞,並且返回的長度為0,因此伺服器可以透過返回資料的長度來區別客戶端是否已經下線

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2909302/,如需轉載,請註明出處,否則將追究法律責任。

相關文章