tcp接收队列
2016-02-23 22:13
597 查看
对于接收数据包,内核维护如下几个队列:
1>全局 backlog 队列,驱动程序调用 netif_rx 将接收到的数据包缓存于该队列中。
2>sock 结构中 back_log 队列,网络层在 tcp_rcv 函数中将接收到的数据包缓存于该队列中,如果该数据包对应的套接字正在忙于处理其它任务,无暇处理该数据包时。
3>sock 结构中 receive_queue 队列,进入该队列的数据包方可由应用层程序读取。将全局 backlog 队列中数据包向 sock->back_log 队列移动的函数为 net_bh 函数,该函数作为下半部分执行。而将 sock->back_log 中数据包向 sock->receive_queue 队列移动的函数为release_sock。注意以上所指的移动并非直接的从一个队列中删除,并直接的加入的另一个队列中。此处着重强调的是数据包的转移途径和来源,实际上此处所指的移动要复杂的多,而且数
1>全局 backlog 队列,驱动程序调用 netif_rx 将接收到的数据包缓存于该队列中。
2>sock 结构中 back_log 队列,网络层在 tcp_rcv 函数中将接收到的数据包缓存于该队列中,如果该数据包对应的套接字正在忙于处理其它任务,无暇处理该数据包时。
3>sock 结构中 receive_queue 队列,进入该队列的数据包方可由应用层程序读取。将全局 backlog 队列中数据包向 sock->back_log 队列移动的函数为 net_bh 函数,该函数作为下半部分执行。而将 sock->back_log 中数据包向 sock->receive_queue 队列移动的函数为release_sock。注意以上所指的移动并非直接的从一个队列中删除,并直接的加入的另一个队列中。此处着重强调的是数据包的转移途径和来源,实际上此处所指的移动要复杂的多,而且数
相关文章推荐
- 详解GIT网络传递数据的加密解密过程
- 伪造http的ip地址,突破ip限制的投票程序
- TCP连接状态
- MATLAB BP神经网络中仿真结果与手工计算不符合的解决办法
- BZOJ1491 [NOI2007] 社交网络
- bitmap 获取网络图片
- 通过HttpURLConnection获得服务器的数据简单模型
- vim简单配置(cp:http://www.linuxidc.com/Linux/2014-02/96396.htm)
- libcurl库进行http通讯-一些基本的函数
- libcurl库进行http通讯-一些基本的函数
- 【跨站关】网络信息安全攻防学习平台跨站过关的彩蛋
- https://projecteuler.net/problem=6
- 深入探讨 Java 类加载器 https://www.ibm.com/developerworks/cn/java/j-lo-classloader/
- 网络编程3---常用服务器编程模型
- 《python核心编程》读书笔记--第16章 网络编程
- https://projecteuler.net/problem=5
- B树、B-树、B+树、B*树的特点 及其性能比较 http://blog.csdn.net/panghuizl/article/details/6921631
- TCP协议与UDP协议
- 常见网络协议端口号整理
- 基于layer mobile手机端弹出框,询问框(PC端推荐layer和artDialog:http://download.csdn.net/download/cometwo/9437895)