/* This structure represents a TCP segment on the unsent, unacked and ooseq queues */structtcp_seg{structtcp_seg*next;/* 链表节点 */structpbuf*p;/* TCP报文:TCP首部 + TCP数据 */u16_tlen;/* 报文段的纯TCP数据长度(不统计SYN和FIN) */#ifTCP_OVERSIZE_DBGCHECKu16_toversize_left;/* 当前...
tcpwnd_size_t bytes_acked; struct tcp_seg *unsent; /* 未发送的报文段 */ struct tcp_seg *unacked; /* 已发送但未收到确认的报文段 */ struct tcp_seg *ooseq; /* 已收到的无序报文 */ /* 以前收到但未被上层处理的数据 */ struct pbuf *refused_data; #if LWIP_CALLBACK_API || TCP_...
void tcp_abort (struct tcp_pcb *pcb); //暴力删除pcb并给对方发送rst err_t tcp_close (struct tcp_pcb *pcb); //按步骤断开双方连接 err_t tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx); //关闭连接(可选择是否发送rst使对方也关闭) err_t tcp_write (struct tcp_pcb *pcb...
tcp_seg_free(next); //删除该报文 LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"TCPWNDSIZE_F" (after freeing unacked)\n", (tcpwnd_size_t)pcb->snd_queuelen)); if (pcb->snd_queuelen != 0) { LWIP_ASSERT("tcp_receive: valid queue length", pcb->unacked != NULL || pcb->unsent != NULL);...
最后裁剪TCP_SEG,这个值与RT_LWIP_TCP_SND_BUF缓冲区有关,1k的缓冲区大约需要5个seg 发送窗口的大小不易过大,也不宜过小,更具网卡的性能做调整。网卡性能差,则窗口应该小,性能好则窗口大,相应的其他值也应该调大。 初步裁减 裁剪:静态内存占用最多的是内存池,默认配置内存池占用大约24k作用内存,LWIP内核中没...
我曾经写在新浪博客上面,后来复制到这,图片就不行了。原文地址转载 LWIP协议中tcp_seg结构相关指针的个人理解(http://blog.sina.com.cn/s/blog_7e5869850102wii6.html)
MEMP_NUM_TCP_SEG 同时在队列中的 TCP 段的最大数目. PBUF_POOL_SIZE PBUF_POOL 类型的 pbuf 总数. DocID025731 Rev 1 17/44 43 LwIP 配置 LwIP 内存选项 PBUF_POOL_BUFSIZE TCP_MSS TCP_SND_BUF TCP_SND_QUEUELEN TCP_WND 表 7. LwIP 内存配置 (续) 定义 PBUF_POOL 类型 pbuf 的大小....
struct tcp_seg *seg;struct tcp_seg **cur_seg;**这里定义了一个结构体指针seg,一个结构体二级...
struct tcp_seg *unsent; /*还没有发送的数据分片列表*/ struct tcp_seg *unacked; /*还没有确认的数据分片列表*/ struct pbuf *refused_data; /*已经收到,但是还没有被应用程序领走的数据*/ }; 1、滑动窗口 1.1发送窗口的使用: 网络数据到达时: ...
LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG") #endif /* LWIP_TCP */ 通过上面代码,可发现:不同类型的内存池是通过相应的宏定义声明启用的。LWIP_MEMPOOL这个宏定义用于初始化各种类型的内存池。 iii. memp.h 文件 ...