1. 程式人生 > 實用技巧 >TCP和UDP的一些概念

TCP和UDP的一些概念

OSI七層模型

在這裡插入圖片描述
HTTP位於應用層,TCP和UDP位於傳輸層,IP位於網路層。

TCP和UDP的區別

在這裡插入圖片描述

面向報文流

面向報文的傳輸方式是指應用層交給UDP多長的報文,UDP就照樣傳送,即一次傳送一個報文。因此,應用程式必須選擇合適大小的報文。若報文太長,則IP需要分片,降低效率,若太短,會使IP太小。UDP對應應用層交下來的報文,即不合並,也不拆分,而是保留這些報文的邊界。

面向位元組流

面向位元組流,雖然應用程式和TCP的互動是一次一個資料塊(大小不等),但TCP把應用程式看成是一連串的無結構的位元組流。TCP有一個緩衝,當應用程式傳送的資料塊太長,TCP就可以把它劃分短一些再傳送。如果應用程式一次只發送一個位元組,TCP也可以等待積累有足夠多的位元組後再構成報文段傳送出去。

流量控制

流量控制:防止傳送方發的太快,耗盡接收方的資源,從而使接收方來不及處理。
流量控制的一些知識點:
1、接收端抑制傳送端的依據:接收端緩衝區的大小
2、流量控制的目標是接收端,是怕接收端來不及處理
3、流量控制的機制是丟包

滑動視窗

使用滑動視窗實現流量控制:滑動視窗是用來告訴傳送端可以傳送資料的大小或者說是視窗標記了接收端緩衝區的大小。

視窗是指一次批量的傳送多少資料。在確認應答策略中,對每一個傳送的資料段,都要給一個ACK確認應答,收到ACK後再發送下一個資料段,這樣會導致效能較差,尤其時資料往返時間長的時候。使用滑動視窗,就可以一次傳送多條資料,從而提高效能。

1、接收端將自己可以接受的緩衝區大小放入TCP首部中的“視窗大小”欄位,通過ACK來通知傳送端(在TCP的首部中,有一個16位的視窗欄位,用來存放視窗大小資訊)

2、視窗大小欄位越大,說明網路的吞吐率越高
3、視窗大小指的時無需等待確認應答而可以繼續傳送資料的最大值,即就是說不需要接收端的應答,可以一次連續傳送的資料
4、作業系統為了維護滑動視窗,需要開闢傳送緩衝區,來記錄當前還有哪些資料沒有應答,只有確認應答過的資料,才能從緩衝區刪掉
5、接收端一旦發現自己的緩衝區快滿了,就會將視窗大小設定成一個更小的值通知給傳送端,傳送端收到這個值後,就會減慢自己的傳送速度
6、如果接收端發現自己的緩衝區滿了,就會將視窗的大小設定為0,此時傳送端將不再發送資料,但是需要定期傳送一個視窗探測資料段,使接收端把視窗大小告訴傳送端

擁塞控制

擁塞控制:防止傳送方發的太快,使網路來不及而處理,從而導致網路擁塞。

擁塞控制使用的機制:慢啟動、加法增加、乘法減少
加法增加是指執行擁塞避免演算法後,在收到對所有報文段的確認後(即一個往返時間),就把擁塞視窗緩慢增大,以防止網路過早出現擁塞。
乘法減少是指出現一次超時(即一次網路擁塞),就把慢開始門限值設定為當前的擁塞視窗值乘0.5