在这篇文章中,我将从较高层次上解释 TCP/IP 堆栈在 Linux 上的工作原理。特别是,我将探讨套接字系统调用如何与内核数据结构交互,以及内核如何与实际网络交互。写这篇文章的部分动机是解释监听队列溢出(listen queue)机制是如何工作的,因为它与我在工作中一直在处理的问题有关。

阅读全文 »

在这篇文章中,我想准确解释当您使用非阻塞 I/O 时会发生什么。特别是,我想解释一下:

  • 使用 fcntl 在文件描述符上设置 O_NONBLOCK 的语义
  • 非阻塞 I/O 与异步 I/O 有何不同
  • 为什么非阻塞 I/O 经常与 select、epoll 和 kqueue 等 I/O 多路复用器结合使用
  • 非阻塞模式如何与 epoll 的边缘触发轮询交互
阅读全文 »