【待总结】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粘包拆包的产生原因分析及解决思路

 

 

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