在套接字接口(Socket API)的抽象之下,网络I/O操作的核心在于Socket的读写功能。在操作系统层面,Socket被视作数据流,因此网络I/O操作本质上是对这些数据流的操作。每当进行网络访问时,从远程主机接收到的数据首先会被存放到操作系统内核的缓冲区中。随后,这些数据会从内核缓冲区复制到应用程序的地址空间,以供应用程序使用。

这样的网络请求过程可以分解为两个阶段:首先是等待数据从远程主机传输到内核缓冲区,其次是将内核缓冲区中的数据拷贝到应用程序的地址空间。根据这两个阶段的不同处理方式,网络I/O模型被划分为两大类:同步I/O和异步I/O

同步I/O意味着应用程序在发出I/O请求后,必须等待操作完成才能继续执行后续操作。在这一大类中,又可以进一步细分为四种模型:阻塞 I/O非阻塞 I/O多路复用 I/O信号驱动 I/O