在阅读这篇文章之前,希望可以先阅读我的上一篇文章:
这时候能更好的理解我这篇文章想要讲的一些内容。很久以前,我也是狠狠的把网络编程的BIO、NIO、AIO以及channel,I/O多路复用的一些底层方面的去研究了以下,现在重新整理了一遍TCP协议之后,就像要去思考和总结下,两者之间的一些联系和关系。

接收缓冲区会把数据缓冲到内核,如果用户进程一直没有执行Socket的read方法时,数据就会一直缓存在接收缓冲区中,不管进程是否读取,在对端发来的数据都会经过内核接收,并缓存到Socket的接收缓冲区中。
当调用read时,是把接收缓冲区中的数据拷贝一份到应用层的Buffer中。
当进程调用发送数据时,会把数据从应用层的Buffer中复制到Socket内核中的发送缓冲区,然后send就会在上层返回,换句话说,数据不一定会被发送到对端。

通知对端的TCP协议中窗口关闭,保证TCP接收区的数据不会被移除,保证TCP是可靠性传输的。
还想要讲解一些BIO,NIO,AIO但是感觉太多了,只能另外开一篇了。