LWIP之TCP

来源:互联网 发布:制作二维动漫软件 编辑:程序博客网 时间:2024/06/06 03:15

最近研究lwip源码,对着"lwip协议详解"的资料,还是没能够完全理解其中的机制,特别是TCP滑动窗口,可能因为我还没有去深入了解TCP数据的发送流程。

简单总结一下服务器端的数据接收流程:

从tcp_input函数开始,如果tcp_listen_pcbs链表中查找到匹配的tcp控制块,则把tcp的状态变为SYN_RCVD;如果在tcp_active_pcbs链表中查找到匹配的tcp控制块,则会调用tcp_process函数处理tcp的状态机,然后调用tcp_receive函数,然后分为seqno + 1<rcv_nxt<seqno + tcplen - 1和rcv_nxt<seqno<rcv_nxt +rcv_wnd - 1两种情况进行处理,最后调用TCP_EVENT_RECV函数通知应用程序接收,接收时需调用tcp_recv函数调整rcv_wnd的值。

0 0
原创粉丝点击