TCP 缓冲区

TCP 缓冲区

每一个 tcp 的套接字(socket) 都有两个缓冲区, 发送缓冲区和接收缓冲区
系统专门为socket开辟了一块内存,作为缓冲区的空间

其实 client 和 server 的发送和接收数据 只是把数据放到缓冲区中
如下图 画的有点丑
在这里插入图片描述

比如 client.write(“hello”);

socket只是把这数据拷贝到缓冲区中,然后就不管了 剩下的是tcp的事情了,缓冲区就是个先进先出的队列
看到发送缓冲区中有数据,那么通过tcp协议就发走了
接收数据也一样,缓冲区中有数据那么告诉你 你去read 就可以了

接收缓冲区满了之后,发生的动作是:收端通知发端,接收窗口关闭(win=0)。这个便是滑动窗口的实现。保证TCP套接口接收缓冲区不会溢出,从而保证了TCP是可靠传输。因为对方不允许发出超过所通告窗口大小的数据。 这就是TCP的流量控制,如果对方无视窗口大小而发出了超过窗口大小的数据,则接收方TCP将丢弃它。

tcp 的工作模式:
单工:只允许甲方向乙方传送信息,而乙方不能向甲方传送 ,如汽车单行道。
半双工:半双工就是指一个时间段内只有一个动作发生,甲方可以向乙方传送数据,乙方也可以向甲方传送数据,但不能同时进行,如一条窄马路同一时间只能允许一个车通行。
全双工:同时允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。

	写的可能有错误,有错误请及时指正.
发布了171 篇原创文章 · 获赞 386 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_42837024/article/details/102707314
今日推荐