中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TCP三次握手、糊涂窗口、粘包問題

發布時間:2020-03-27 18:36:38 來源:網絡 閱讀:749 作者:zmh009_NAME 欄目:網絡安全

這是在學習中的總結,若有錯誤請大家不吝指正(^.^)

關于TCP/IP的三次握手:

當服務端的狀態為LISTEN,客戶端的狀態為CLOSED時,客戶端發起連接

客戶端發送有SYN字段報文,此時狀態為SYN_SENT狀態

服務端接收該報文時,狀態處于SYN_REVD狀態,并向客戶端發送有SYNACK字段的報文

客戶端接收到該報文時,狀態處于ESTABLISHED(建立)狀態,并發送有ACK字段的報文

服務端接收到報文后,狀態處于ESTALISHED(建立)狀態,并開始數據的交互

 

關于糊涂窗口:

當在網絡數據傳輸中,大量發送含有少量數據的報文(極端情況一個報文只有一字節數據),因為在協議層中對數據是層層封裝的過程,因此對于數據來說有大量的協議頭,傳輸開銷過大;或接收端在緩存區接受數據過慢;

解決方法:

發送端使用Nagle算法,當發送包長度小于MSS大小時會等待一會,發送條件是:

直到所有發送的小包都有ACK回復且未設置TCP_CORK時;

直到有FIN字段時;

直到數據長度達到MSS時;

直到等待超時(一般200ms);

設置TCP_NODELAY且沒有設置TCP_CORK時;(就是不使用優化算法啦)

(當小包的ACK字段接收較快時算法的作用不大)

發送端使用CORK算法,會將小包拼接成大包,是協議頭在協議報文的比重減小,發送條件是:

拼接的報文大于MTU或超時;

沒有設置TCP_CORK并設置TCP_NODELAY時;(就是不使用優化算法啦)

(當小包的傳輸時間間隔不短時影響實時性,因為都要等待超時傳輸)

接收端使用Clark解決,只要有數據到達就確認,但宣布窗口大小為0,直到緩存空間夠容納一個MSS或緩存空間一半已空;

接收端延遲確認,直到緩存空間足夠為止,防止TCP發送端窗口的滑動,可以減少通信量,不必確認每個報文段,但延遲的確認會導致重發。

 

關于粘包問題:

因為要解決糊涂窗口而使數據積攢發送,或收端不及時接受緩存區數據而同時接收多個包,會導致發送的原數據接收后拼接在一起無法分離。

解決方法:

當數據傳輸是一次交互后立即斷開(多個Client與一個Server)時,數據無結構時(文件傳輸,一方發另一方收),使用UDP時(有消息邊界)不會產生粘包問題;

發送端設置強制數據立即發送,不必等待緩存區滿(無處理優化,效率降低);

接收端優化編程方法,精簡接收過程,提高接收優先級等使其接收效率提高(不能完全避免);

接收端按結構字段、人為控制多次接收,然后合并(效率低,對實時場合不適用);


在這里問一下,怎么美化呀TCP三次握手、糊涂窗口、粘包問題,之前看別人的博客很酷炫的TCP三次握手、糊涂窗口、粘包問題

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康保县| 楚雄市| 乐山市| 济源市| 卢氏县| 双峰县| 化州市| 鸡西市| 木里| 开阳县| 监利县| 永春县| 乐清市| 沧州市| 东山县| 山丹县| 长子县| 凤阳县| 封丘县| 南澳县| 安仁县| 清远市| 平果县| 武威市| 吐鲁番市| 巨野县| 襄城县| 来凤县| 邹平县| 新邵县| 临泉县| 阿巴嘎旗| 陆河县| 福建省| 郎溪县| 五原县| 合水县| 德化县| 和政县| 绥芬河市| 香港|