您的位置:首页 > 理论基础 > 计算机网络

16.3.3 发送网络数据send()

2009-12-21 16:22 99 查看

16.3.3 发送网络数据send()

Linux对网络数据的发送过程的处理与接收过程相反。在一端对socket进行write()的过程中,首先会把要write的字符串缓冲区整理成msghdr的数据结构形式,然后调用sock_sendmsg()把msghdr的数据传送至inet层。
对于msghdr结构中数据区中的每个数据包,创建sk_buff结构,填充数据,挂至发送队列。一层层往下层协议传递,如图16.13所示。以下每层协议不再对数据进行复制,而是对sk_buff结构进行操作。







图16.11 网卡接收数据流程 图16.12 协议栈处理数据流程 图16.13 协议栈处理数据流程
最后调用网络驱动,发送数据,在网络发送成功后要产生中断,将发送结果反馈回应用层,此过程与接收网络数据的过程类似。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: