当前位置:首页 > lwip中各种函数,标志位的总结
struct tcp_pcb {
IP_PCB; //这是一个宏,描述了连接的IP相关信息,包括双方IP地址,TTL等信息
struct tcp_pcb *next; //用于连接各个TCP控制块的链表指针
enum tcp_state state; //TCP 连接的状态,即为状态图中描述的那些状态
u8_t prio; //该控制块的优先级 void *callback_arg;//
u16_t local_port; //?地端口 u16_t remote_port; //远程端口
u8_t flags;// 附加状态信息,如连接是快速恢复、一个被延迟的 ACK 是否被发送等
#define TF_ACK_DELAY (u8_t)0x01U /* Delayed ACK. *///这些宏定义是为flags字段
#define TF_ACK_NOW (u8_t)0x02U /* Immediate ACK. *///定义的掩码
#define TF_INFR (u8_t)0x04U /* In fast recovery. */
#define TF_RESET (u8_t)0x08U /* Connection was reset. */
#define TF_CLOSED (u8_t)0x10U /*
Connection was sucessfully closed. */
#define TF_GOT_FIN (u8_t)0x20U /* Connection was closed by the remote end. */ #define TF_NODELAY (u8_t)0x40U /* Disable Nagle algorithm */ // 接收相关字段
u32_t rcv_nxt; //期望接收的下一个字节,即它向发送端ACK的序号
u16_t rcv_wnd; //接收窗口
u16_t rcv_ann_wnd; //通告窗口大小,较低版?中无该字段
u32_t tmr; // 该字段记录该PCB被创建的时刻
u8_t polltmr, pollinterval; // 三个定时器,后续讲解
u16_t rtime; //重传定时,该值随时间增加,当大于rto的值时则重传发生
u16_t mss; //最大数据段大小
//RTT估计相关的参数
u32_t rttest; //估计得到的500ms滴答数 u32_t rtseq; //用于测试RTT的包的序号 s16_t sa, sv; //RTT 估计出的平均值及其时间差
u16_t rto; // 重发超时时间,利用前面的几个值计算出来
u8_t nrtx; // 重发的次数,该字段在数
据包多次超时时被使用到,与设置rto的值相关// 快速重传/恢复相关的参数u32_t lastack; // 最大的确认序号,该字段不解
u8_t dupacks; // 上面这个序号被重传的次数
// 阻塞控制相关参数
u16_t cwnd; //连接的当前阻塞窗口 u16_t ssthresh; // 慢速启动阈值
// 发送相关字段
u32_t snd_nxt, // 下一个将要发送的字节序号
snd_max, // 最高的发
送字节序号
snd_wnd, // 发送窗口 snd_wl1, snd_wl2, // 上次窗口更新时的数据序号和确认序号
snd_lbb; // 发送队列中最后一个字节的序号 u16_t acked; //
u16_t snd_buf; // 可用的发送缓冲字节数 u8_t snd_queuelen; // 可用的发送包数
struct tcp_seg *unsent; // ?发送的数据段队列
struct tcp_seg *unacked; // 发送了?收到确认的数据队列
struct tcp_seg *ooseq; // 接收到序列以外的数据包队列
#if LWIP_CALLBACK_API // 回调函数,部分函数在较低版?没定义
err_t (* sent)(void *arg, struct tcp_pcb *pcb, u16_t space);
共分享92篇相关文档