用户态协议中之epoll的实现

1、在网络编程的时候,有以下这些接口,

socket 、listen、 bind、 accept、recv、 send、 close、connect ````
请问有哪些接口,被调用的时候,会给对端发送一个数据呢?

send、connect、close

2、 epoll 需要检测哪些地方?

1)accept队列有了节点,即三次握手成功, 就会回调epoll
2)客户端发送数据到tcp协议栈的时候,且返回了ACK给客户端的时候,回调epoll
3)tcp协议栈调用了send函数, 给客户端发送消息之后 ,tcp协议栈收到了来自客户端的确认。 tcp协议栈把send_buf的空间里面的客户端已经确认收到的消息 对应的空间清空, 回调epoll。
4)客户端调用了close函数,回调了epoll

在这里插入图片描述
在这里epoll只关心哪个fd,status 状态和 epoll_fd(红黑树的代号)。

3、在用户态协议栈里面,为啥自己要实现一个epoll呢?

因为内核epoll是内核协议栈回调的。
既然把写了用户态协议栈TCP/IP的实现, 那么写一个用户态协议栈实现一个epoll。

4、epoll 底层的数据结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值