lwip是什么啊?

[复制链接]
3767|20
手机看帖
扫描二维码
随时随地手机跟帖
xgfgli|  楼主 | 2017-11-27 18:12 | 显示全部楼层 |阅读模式
lwip是什么啊?一种协议?
mdqsdaf| | 2017-11-27 18:14 | 显示全部楼层
wip是Swedish Institute of Computer Science开发的用于嵌入式系统的TCP\IP协议栈,从网上的评论看似乎用的人不少

使用特权

评论回复
mdqsdaf| | 2017-11-27 18:18 | 显示全部楼层
它的实现是应该参考了BSD的实现,在介绍TCP的时候,大家就会发现,其拥塞控制的实现算法机会与BSD的一模一样

使用特权

评论回复
mdqsdaf| | 2017-11-27 18:18 | 显示全部楼层
模块内的函数和全局变量需在.c文件开头冠以static关键字声明

使用特权

评论回复
engao| | 2017-11-27 21:29 | 显示全部楼层
这个就是TCP吧

使用特权

评论回复
zzzhui| | 2017-11-27 21:31 | 显示全部楼层
lwip的内核运行在同一个任务中,lwip提供的系统调用通过mailbox与内核进行通信,然后用户阻塞在一个专门的mailbox上,内核完成用户的请求后post 该mailbox,用户得以继续执行

使用特权

评论回复
zzzhui| | 2017-11-27 21:32 | 显示全部楼层
协议栈的实现却是,每层跑在一个任务中,这样层与层间的相互调用将会引起上下文的切换

使用特权

评论回复
电子信使| | 2017-11-27 21:32 | 显示全部楼层
lwip 可以运行在裸机的环境中,即不需要操作系统的支持

使用特权

评论回复
电子信使| | 2017-11-27 21:32 | 显示全部楼层
struct netconn用一个union将udp、tcp、raw的pcb包含起来,实现由netconn到不同协议的分发,这是c语言编程的一个常用技巧。

使用特权

评论回复
zzzhui| | 2017-11-27 21:32 | 显示全部楼层
sys_mbox_t mbox,用户阻塞在该mailbox上,内核处理完用户的请求后,post该mailbox,用户继续执行

使用特权

评论回复
电子信使| | 2017-11-27 21:32 | 显示全部楼层
sys_mbox_t recvmbox,如其名,用户用该mailbox接收来自内核的数据

使用特权

评论回复
zzzhui| | 2017-11-27 21:32 | 显示全部楼层
sys_mbox_t acceptmbox,用户调用accept阻塞在该mailbox上,内核接收到来自网络的连接请求并完成三次握手后,post该mailbox

使用特权

评论回复
电子信使| | 2017-11-27 21:33 | 显示全部楼层
sys_sem_t sem,系统调用netconn_write发现内核没有足够空间时wait该semaphore,内核在适当的时候会post该semaphore,则操作系统唤醒运行在用户任务的系统调用,再次尝试发送数据

使用特权

评论回复
给力芯片| | 2017-11-27 21:33 | 显示全部楼层
pcb->rto,重传定时器时长,rtt估计时给出初始值,当超时重传时该值按指数增大

使用特权

评论回复
zzzhui| | 2017-11-27 21:34 | 显示全部楼层
pcb->nrtx,segment 重传的次数。在tcp_receive 中,收到新的ack时,该值被置0。在tcp_rexmit、tcp_rexmit_rto中,该值被递增

使用特权

评论回复
给力芯片| | 2017-11-27 21:34 | 显示全部楼层
pcb->rtime,segment从被发出到此时(没有收到ack),所经历的tick数。在tcp_output_segment 中,该值被置0。在tcp_slowtmr中,该值被递增

使用特权

评论回复
zzzhui| | 2017-11-27 21:34 | 显示全部楼层
当重传次数大于TCP_MAXRTX时,segment被扔掉。当rtime大于rto时,启动慢启动流程,慢启动门限被置为当前窗口的一半,但要不小于2个mss

使用特权

评论回复
zzzhui| | 2017-11-27 21:35 | 显示全部楼层
拥塞窗口为一个mss,rto按指数增大;最后重传该segment

使用特权

评论回复
zzzhui| | 2017-11-27 21:39 | 显示全部楼层
tcp_listen_input,在LISTEN状态收到SYN后,通过tcp_enqueue发送SYN、ACK,并转到SYN_RCVD状态

使用特权

评论回复
zzzhui| | 2017-11-27 21:40 | 显示全部楼层
tcp_rst,通过ip_output直接发送RST、ACK

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

45

帖子

1

粉丝