TCP和UDP對比總結

2021-10-03 15:53:00 字數 3324 閱讀 6230

傳輸層提供的功能如下

傳輸層提供了兩個傳輸協議

tcp

tcp 提供面向連線的服務,在傳送資料之前必須要建立連線,並在核心中為該連線維持一些必要的資料結構,比如連線的狀態、讀寫緩衝區以及諸多定時器等。待資料傳送結束後要釋放連線。由於 tcp 提供可靠的傳輸服務,因此不可避免地增加了許多開銷,如序號、確認號、應答確認、流量控制、擁塞控制、超時重傳、定時器及連線管理等機制,導致協議資料單元的頭部增加了許多,還會占用 cpu 的很多資源;另外,由於 tcp 報文最終是以 ip 資料報傳送的,而 ip 資料報到達接收端可能亂序、重複,因此 tcp 會對接收到的 tcp 報文段重排、整理,再交付給應用層。tcp 適用於對可靠性、資料的傳輸質量要求高,但對實時性要求不高的場景,如檔案傳輸協議 ftp、超文字傳輸協議 http、遠端登入 telnet 、https以及 pop、smtp 等郵件傳輸的協議。

udptcp 協議與 udp 協議的區別

無連線服務與面向連線服務的區別

位元組流服務與資料報服務的區別

tcp 首部大小、欄位的具體含義

連線過程中需要協商什麼,系統需要給 tcp 連線雙方分配什麼資源

tcp 傳送緩衝區、接收緩衝區中的內容

time_wait 狀態何時出現、存在的原因、為什麼要等於 2msl 的時間

如何解決系統中存在大量的 time_wait 狀態的問題

tcp 的粘包、拆包問題的原因和解決方案

解決方案:

tcp 的可靠傳輸實現:序號、確認號、超時重傳、應答確認、流量控制、擁塞機制

流量控制:滑動視窗協議、選擇確認機制

擁塞控制:慢啟動、擁塞避免、快速重傳和快速恢復

快重傳和快恢復演算法是對慢開始和擁塞避免演算法的改進。

快速重傳

使用了冗餘 ack 來檢測丟包的發生,同樣冗餘 ack 也用於網路擁塞的檢測。快速重傳並非取消超時重傳計時器,而是在某些情況下可以更早地重傳丟失的報文段。當傳送方連續收到冗餘 ack 報文時,直接重傳對方尚未收到的報文段,而不必等待那個報文段設定的重傳計時器超時。

快速恢復

傳送端收到連續三個冗餘 ack 時,執行「乘法減小」演算法,把慢開始門限設定為擁塞時傳送方擁塞視窗 cwnd 的一半,然後把擁塞視窗的值設定為慢開始門限 ssthresh 改變後的數值,然後執行擁塞避免演算法,使擁塞視窗緩慢地線性增大。由於跳過了 cwnd 從 1 開始慢啟動過程,因此被稱為快速恢復。

在流量控制中,傳送方傳送資料的量由接收方決定,而在擁塞控制中,則由傳送方自己通過檢查網路狀況來決定。實際上,慢啟動、擁塞避免、快重傳和快恢復幾乎是同時應用在擁塞控制機制中的,在傳送方檢測到超時的時候,就採用慢開始和擁塞避免,當傳送方接收到冗餘 ack 時,就採用快重傳和快恢復。

tcp 流量控制與擁塞控制的區別

tcp 接收方視窗與傳送方視窗的變化由誰來控制

tcp 的 nagle 演算法

如何快速的判斷網路擁塞已經發生

觀察網路的吞吐量與網路負載的關係

udp 協議的首部長度,字段含義

特點

面向資料報

udp的緩衝區

udp使用注意事項

udp 為什麼不可靠,如何實現可靠

既然 tcp 是可靠的,為什麼要有 udp,存在的意義是什麼

由於不用維持大的併發量,所以適合巨量服務的 server,加上合適的時間控制,可以用來設計更大的併發伺服器;

udp 可以更高效的利用網路頻寬,因為如果客戶請求頻繁,tcp 會在連線建立和關閉上浪費大量的時間和頻寬。

socket 的 tcp 與 udp 程式設計流程

基於 tcp 的 socket 服務端程式:

建立套接字(socket)

將套接字繫結到乙個本地位址和埠上(bind)

將套接字設定為監聽模式,準備接收客戶端請求(listen)

等待客戶端請求到來,當請求到來後,接收連線請求,返回乙個新的對應於此次連線的套接字(accept)

用返回的套接字和客戶端進行通訊(send/recv)

返回等待另一客戶端的請求

關閉套接字(close)

基於 tcp 的 socket 客戶端程式:

建立套接字(socket)

向伺服器發出連線請求(connect)

和伺服器進行通訊(send/recv)

關閉套接字(close)

基於 udp 的 socket 伺服器端程式:

建立套接字(socket)

將套接字繫結到乙個本地位址和埠上(bind)

等待接收資料(recvfrom)

處理請求後給客戶端返回資料(sendto)

關閉套接字(close)

基於 udp 的 socket 客戶端程式:

建立套接字(socket)

向伺服器傳送資料(sendto)

接收來自伺服器的資料(recvfrom)

關閉套接字(close)

應用層使用 tcp 的協議有哪些,使用 udp 的協議有哪些執行於 tcp 協議之上的協議:

執行於 udp 協議之上的協議:

ntp 協議:網路時間協議,用於網路時間同步。

tftp 協議:簡單檔案傳輸協議,tcp/ip 協議族中的乙個用來在客戶機與伺服器之間進行簡單檔案傳輸的協議,提供不複雜、開銷不大的檔案傳輸服務。埠號為 69。

snmp 協議:簡單網路管理協議。

nfs: 網路檔案系統

bootp: 啟動協議(用於無盤裝置啟動)

dns: 網域名稱解析協議

自己寫udp程式時自定義的應用層協議

TCP和UDP的對比總結

tcp udp都是是傳輸層協議,但是兩者具有不同的特性,同時也具有不同的應用場景,面向報文的傳輸方式是應用層交給udp多長的報文,udp就照樣傳送,即一次傳送乙個報文。因此,應用程式必須選擇合適大小的報文。若報文太長,則ip層需要分片,降低效率。若太短,會是ip太小。面向位元組流的話,雖然應用程式和...

TCP與UDP的介紹和對比

網路通訊協議是一種網路通用語言,為連線不同作業系統和不同硬體體系結構的網際網路絡提供通訊支援,是一種網路通用語言。tcp和udp tcp 傳輸控制協議,tcp協議是面向連線的通訊協議,即傳輸資料之前,在傳送端和接收端建立邏輯連線,然後再傳輸資料,它提供了兩台計算機之間可靠無差錯的資料傳輸。在tcp連...

tcp和udp使用總結

tcp tcp 是面向連線的,並且是一種可靠的協議,在基於 tcp 進行通訊時,通訊雙方需要先建立乙個 tcp 連線,建立連線需要經過三次握手,握手成功才可以進行通訊 1 基於連線的,可靠性高 2 有連線過程 3次握手過程 會有延時,實時性較差,3 傳輸相同的資料時,tcp首部開銷20位元組 udp...