我读取了内核tcp / ip堆栈代码,在函数tcp_select_initial_window中,有一个我无法理解的判断。片段代码如下:
if (mss > (1 << *rcv_wscale)) {
if (!init_rcv_wnd) /* Use default unless specified otherwise */
init_rcv_wnd = tcp_default_init_rwnd(mss);
*rcv_wnd = min(*rcv_wnd,init_rcv_wnd * mss);
}
为什么我们需要在这里检查mss > (1 << *rcv_wscale)
?是否有任何特定规则?我在网上找不到任何详细说明。有人可以对此提供一些解释吗?