欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TCP 缓冲区

程序员文章站 2022-05-09 21:23:53
...

TCP 缓冲区

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

其实 client 和 server 的发送和接收数据 只是把数据放到缓冲区中
如下图 画的有点丑
TCP 缓冲区

比如 client.write(“hello”);

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

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

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

	写的可能有错误,有错误请及时指正.
相关标签: TCP 缓冲区