tcp和udp使用總結

2021-09-11 21:59:38 字數 1490 閱讀 8908

tcp:

tcp 是面向連線的,並且是一種可靠的協議,在基於 tcp 進行通訊時,通訊雙方需要先建立乙個 tcp 連線,建立連線需要經過三次握手,握手成功才可以進行通訊

1、基於連線的,可靠性高

2、有連線過程(3次握手過程),會有延時,實時性較差,

3、傳輸相同的資料時,tcp首部開銷20位元組;udp的首部開銷小,只有8個位元組,tcp報頭比udp複雜,故實際包含的使用者資料較少。tcp無丟包,而udp有丟包,故tcp的開銷大,udp開銷較小。

4、每一條tcp連線只能是點到點的;udp支援一對一,一對多,多對一和多對多的互動通訊

udp:

是一種面向無連線,且不可靠的協議,在通訊過程中,它並不像 tcp 那樣需要先建立乙個連線,只要(目的位址,埠號,源位址,埠號)確定了,就可以直接傳送資訊報文,並且不需要確保服務端一定能收到或收到完整的資料。它僅僅提供了校驗和機制來保障乙個報文是否完整,若校驗失敗,則直接丟棄報文,不做任何處理。

應用場景:

協議對比:

粘包的原因:

(1)傳送方引起的粘包是由tcp協議本身造成的,tcp為提高傳輸效率,傳送方往往要收集到足夠多的資料後才傳送一包資料。若連續幾次傳送的資料都很少,通常tcp會根據優化演算法把這些資料合成一包後一次傳送出去,這樣接收方就收到了粘包資料。

(2)接收方引起的粘包是由於接收方使用者程序不及時接收資料,從而導致粘包現象。這是因為接收方先把收到的資料放在系統接收緩衝區,使用者程序從該緩衝區取資料,若下一包資料到達時前一包資料尚未被使用者程序取走,則下一包資料放到系統接收緩衝區時就接到前一包資料之後,而使用者程序根據預先設定的緩衝區大小從系統接收緩衝區取資料,這樣就一次取到了多包資料。

粘包的解決辦法————封包:

封包就是給一段資料加上包頭,這樣一來資料報就分為包頭和包體兩部分內容了。包頭其實上是個大小固定的結構體,其中有個結構體成員變數表示包體的長度,這是個很重要的變數,其他的結構體成員可根據需要自己定義。根據包頭長度固定以及包頭中含有包體長度的變數就能正確的拆分出乙個完整的資料報。

拆包:根據封包的包頭規則解析出每乙個完整的資料報,然後做相應的業務處理。

一篇介紹封包和拆包的文章

分包:分包傳送(封裝包的首部,包括包的大小、型別、序號、數量等)

1、在客戶端將你要傳送的內容(檔案什麼的都可以)分塊,每塊內容進行編號,然後傳送;

2、服務端在接收到你的分塊資料以後,根據你的客戶端資料類容的編號重新組裝;

3、一般我們在傳送資料的時候,盡量採用比較小的資料塊的方式(我的都沒有超過1024的),資料塊太大的話容易出現傳送和接收的資料時間長,匹配出問題。

組包:

如果中間有缺少的,就把這一串行都丟掉,直到下乙個i幀。每個幀的序號,最好收發之間協商好,在傳送的時候帶上。

TCP和UDP的使用總結

總結 一.tcp ip協議如何保證可靠性傳輸 二.tcp與udp的區別和各自的使用場景 一.tcp ip協議如何保證可靠性傳輸 tcp是transmission control protocol,即傳輸控制協議。在我看來,為了保證可靠信傳輸,tcp主要依靠的是控制資料傳輸的整個流程來保證可靠信傳輸的...

TCP和UDP的總結

近期正在準備找工作,看了n多筆試題,發現考網路真的還不少,網路中尤其tcp,udp等知識點考的較多,此文做個總結,方便以後查閱,閱讀者歡迎找毛病 tcp實現可靠性傳輸,通過三次握手機制,這一機制保證校驗了資料,保證了他的可靠性。udp沒有三次握手機制,所以不可靠。不過udp的速度是tcp比不了的,而...

TCP和UDP對比總結

傳輸層提供的功能如下 傳輸層提供了兩個傳輸協議 tcp tcp 提供面向連線的服務,在傳送資料之前必須要建立連線,並在核心中為該連線維持一些必要的資料結構,比如連線的狀態 讀寫緩衝區以及諸多定時器等。待資料傳送結束後要釋放連線。由於 tcp 提供可靠的傳輸服務,因此不可避免地增加了許多開銷,如序號 ...