TCP 如何保證有效性

一起蕩起雙槳 2022-01-08 03:12:20 阅读数:709

tcp 有效性 有效

一. 數據包校驗:
在這裏插入圖片描述
1、首先將檢驗和置零;
2、然後將TCP偽首部部分,TCP首部部分,數據部分都劃分成16比特的一個個16進制數
3、將這些數逐個相加,記得溢出的部分加到最低比特上,這是循環加法:
0xc0a8+ 0x0166+……+0x0402=0x9b49
4、最後將得到的結果取反,則可以得到檢驗和比特0x64b6

發送方:原碼相加 ,並將高比特疊加到低比特,取反 ,得到反碼求和結果,放入校驗和
接收方:將所有原碼 相加,高比特疊加, 如全為1,則正確

發送的數據包的二進制相加然後取反,目的是檢測數據在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟弃這個報文段和不確認收到此報文段,這時 TCP 發送數據端超時後會重發數據;

二. 確認應答+序列號

序列號:TCP傳輸時將每個字節的數據都進行了編號,這就是序列號。

確認應答:TCP傳輸的過程中,每次接收方收到數據後,都會對傳輸方進行確認應答,也就是發送ACK報文。這個ACK報文當中帶有對應的確認序列號,告訴發送方,接收到了哪些數據,下一次的數據從哪裏發。

序列號的作用不僅僅是應答的作用,有了序列號能够將接收到的數據根據序列號排序,並且去掉重複序列號的數據。

應答機制:當 TCP 收到發自 TCP 連接另一端的數據,它將發送一個確認(累積確認:對所有按序接收的數據的確認)。這個確認不是立即發送,通常將推遲幾分之一秒

TCP給發送的每一個包進行編號,接收方對數據包進行排序,把有序數據傳送給應用層。

三. 超時重傳
當TCP發出一個段後,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段。

四.流量控制

TCP連接的每一方都有固定大小的緩沖空間,TCP的接收端只允許發送端發送接收端緩沖區能接納的數據。當接收方來不及處理發送方的數據,能提示發送方降低發送的速率,防止包丟失。TCP使用的流量控制協議是可變大小的滑動窗口協議。

接收方有即時窗口(滑動窗口),隨ACK報文發送

參考文章:
https://www.cnblogs.com/xiaokang01/p/10033267.html#_label0_3

版权声明:本文为[一起蕩起雙槳]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080312202661.html