当前位置:首页 » 《随便一记》 » 正文

Linux中UDP接收流程详解_张孟浩_jay的博客

19 人参与  2022年02月21日 08:53  分类 : 《随便一记》  评论

点击全文阅读


UDP是一个无连接的协议,在实现上比TCP简单的多。

1、创建socket

无论是TCP还是UDP,底层都是一个socket对应。socket中有着接收队列、等待队列、发送队列三个队列。

接收队列:
用来存放对应的数据

等待队列:
当线程调用recv_msg()的时候,如果接收队列为空,就阻塞,将其加入到等待队列中。如果接收队列不为空,就直接读取对应的数据

发送队列:
当线程调用send_msg()的时候,就将数据挂到发送队列中,对应的内核线程会将其写入网卡中

2、接收数据

当数据到达网卡后,会一层一层的调用到udp_recv(),里面会根据源IP地址、源端口号来找到对应的socket,然后将数据包挂到socket的接收队列中,接着将等待队列中的线程唤醒,线程会继续执行recv_msg(),读取接收队列中的数据。


点击全文阅读


本文链接:http://zhangshiyu.com/post/35061.html

队列  接收  线程  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1