从进程的角度上讲,可以调出send,sendto来发送一段数据,也可以使用文件系统中的write和writev.同理,接收数据可以使用相应的recv,recvfrom这样的接口,或者使用文件系统提供的read,readv.对于接收来说,是异步进行的,也就是说,是中断驱动的,在以后的分析中,我们要注意这点。为简单起见,同时又不失一般性,我们将分析TCP协议的输入输出全过程,并对Linux及FreeBSD的实现作一对比。
在实现上,FreeBSD与最初的实现一脉相承,而Linux的实现自成体系,仅与传统实现保持接口上的兼容,我们将针对源码级的实现,来分析一下两者的异同。