计算机网络之TCP的流量控制

332 阅读1分钟

首先和TCP的拥塞控制做一下区别,拥塞控制的概念是有关网络层和链路层的数据链路拥堵。而流量控制的概念是位于TCP和应用层的交互,为了防止接收端系统上TCP的接收缓存的溢出。

TCP在接收端系统接受到数据的时候拥有一个缓存空间,这个空间用来储存接受的数据和供端应用读取数据,把这个空间的大小记作变量RecvBuffer,而TCP在端系统最后接受到的数据字节的位置记为LastByteRecv,端应用从缓存中最后读取的数据字节的位置记为LastByteRead。这些变量之间的关系要始终满足

LastByteRecv - LastByteRead <= RecvBuffer

而接收窗口 rwnd = RecvBuffer - (LastByteRecv - LastByteRead),这个接收窗口rwnd变量就是流量控制的关键。接受方将rwnd变量的值填入发送给发送方的报文端的接受窗口字段中,发送方则根据这个字段来调整发送的报文段字节大小。发送方最后发送数据字节点记为LastByteSend,最后确认的数据字节点记为LastByteAck,与从接受方传过来的接收窗口字段rwnd需要满足以下关系

rwnd = LastByteSend - LastByteAck

总之就是通过动态的接收窗口来进行流量控制,防止端系统上TCP的缓存溢出。

发布于刚刚