TCP的核心算法在lwip中的实现

本文详细探讨了TCP的关键算法在lwip中的实现,包括滑动窗口、拥塞控制、慢启动、快速重传、快速恢复、Nagle算法、捎带ACK等。 lwip是一个轻量级的TCP/IP协议栈,适用于嵌入式系统,通过精简设计减少了内存需求。文章深入解析了tcp_pcb结构体中的各项参数,并介绍了TCP窗口管理、RTT估算、超时重传、慢启动阈值及拥塞避免算法的工作原理和LwIP中的实现方式。
摘要由CSDN通过智能技术生成

      lwip是瑞士计算机科学院的一个开源的TCP/IP协议栈实现.

  LwIP是Light Weight (轻型)IP协议,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,一般它只需要几百字节的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。

      本文主要讨论TCP的核心协议(滑动窗口、拥塞控制、慢启动、快速重传、快速恢复、Nagle 算法、捎带 ACK等 )在lwip中的实现。

      lwip中负责TCP会话管理的核心数据结构是tcp_pcb

1、   滑动窗口

1.1 发送窗口的使用:

        网络数据到达时:

更新 pcb->snd_wnd

        网络数据发送时:

// 发送数据大小不能超过发送窗口和拥塞窗口的最小值。

wnd =MIN pcb->snd_wnd pcb->cwnd );

        if len (待发送数据包) > wnd {

暂不发送;

}

       1.2 接收窗口的使用:

              网络数据到达时:

                     pcb->rcv_wnd -= len

              应用层读取数据时:

                     pcb->rcv_wnd += len

              rcv_wnd 被调整时:

                  u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd;

                  if(new_right_edge>=pcb->rcv_ann_right_edge + MIN((TCP_WND/2), pcb->mss))

                 {//

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值