【待總結】TCP窗口 粘報拆包

1.TCP窗口是啥,原理。

2.和socket緩衝區有什麼關係

3.和拆包解包有啥關係,拆包解包又是啥

4.擁塞控制???????

 

 

發送窗口大小主要由接收端的窗口通告決定,接收端窗口通告由當前接收端剩餘多少空閒的剩餘緩存決定。

藉助於滑動窗口能夠提高TCP 數據的傳輸性能。因爲TCP 無須對每一數據段進行確認, 只需要對發送一個窗口寬度的段確認一次

 

 

一個socket的兩端,都會有send和recv兩個方法,如client發送數據到server,那麼就是客戶端進程調用send發送數據,而send的作用是將數據拷貝進入socket的內核發送緩衝區之中,然後send便會在上層返回。

也就是說send()方法返回之時,數據不一定會

發送到對端即服務器上去(和write寫文件有點類似),send()僅僅是把應用層buffer的數據拷貝進socket的內核發送buffer中,發送是TCP的事情,和send其實沒有太大關係。

接收緩衝區把數據緩存入內核,等待recv()讀取,recv()所做的工作,就是把內核緩衝區中的數據拷貝到應用層用戶的buffer裏面,並返回。若應用進程一直沒有調用recv()進行讀取的話,此數據會一直緩存在相應socket的接收緩衝區內。對於TCP,如果應用進程一直沒有讀取,接收緩衝區滿了之後,發生的動作是:收端通知發端,接收窗口關閉(win=0)。這個便是滑動窗口的實現。保證TCP套接口接收緩衝區不會溢出,從而保證了TCP是可靠傳輸。因爲對方不允許發出超過所通告窗口大小的數據。 這就是TCP的流量控制,如果對方無視窗口大小而發出了超過窗口大小的數據,則接收方TCP將丟棄它。

 

https://www.cnblogs.com/zlingh/p/6161088.html   tcp協議頭窗口,滑動窗口,流控制,擁塞控制關係

可以知道發送窗口原滑動窗口和現滑動窗口的關係

https://blog.csdn.net/yuliantao/article/details/81559580 TCP協議詳解-滑動窗口

具體例子說明發送窗口的滑動原理,並解釋發送窗口大小由接收方控制的原理,講的很好很詳細。

https://www.cnblogs.com/woaiyy/p/3554182.html tcp窗口滑動以及擁塞控制

http://www.togogo.net/article/1351.html 淺談TCP滑動窗口機制

涉及到包,和丟包重傳機制

https://www.cnblogs.com/saryli/p/9821058.html tcp的發送緩衝區和接收緩衝區

https://blog.csdn.net/jjavaboy/article/details/80037057 TCP協議-滑動窗口、拆包和粘包

 

https://www.cnblogs.com/wade-luffy/p/6165671.html TCP粘包/拆包問題

https://blog.csdn.net/feng020a/article/details/60587726  tcp粘包和拆包的處理方案

https://blog.csdn.net/fgx_123456/article/details/80031821 TCP粘包拆包的產生原因分析及解決思路

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章