TCP发送方的窗口可以划分成四个部分:
1、已经发送并且确认的TCP段;
2、已经发送但是没有确认的TCP段;
3、未发送但是接收方准备接收的TCP段,
4、未发送并且接收方也为准备接受的TCP段。
第3部分是可用窗口,长度为snd_una + snd_wnd - snd_nxt。
第2部分和第3部分合并起来,成为发送窗口,简称窗口。
发送窗口的左边界是snd_una,右边界是snd_una + snd_wnd 。
同理,TCP接受方的窗口可以划分成四个部分:
1、已经接收并且已经确认的TCP段;
2、已经接收但是没有确认的TCP段;
2、还未接收但是发送方已经发送的TCP段;
3、还未接收但是发送也不允许发送的TCP段。
第1部分和第2部分合并在一起,因为没有区别(???)。
接收窗口的左边界是rcv_nxt,右边界是rcv_nxt + rcv_wnd。
接收窗口rcv_wnd会通过TCP首部的window字段传递给对方。
在一个TCP连接中,一方的rcv_wnd等于另一方的snd_wnd。
如果一定要严格分成四部分的话,大致这么划分:
窗口左边界是rcv_wup,右边界是rcv_wup + rcv_wnd。
第3部分是 rcv_wup + rcv_wnd - rcv_nxt。
时间: 2024-10-19 13:32:54