Unix Network Programming vol1 笔记 TCP/IP的缓冲,全双工,半关闭 shutdown 函数

来源:互联网 发布:知乎 英语语言文学 编辑:程序博客网 时间:2024/05/29 14:22

1. TCP/IP 连接是全双工的连接,连接端两端同时可以发送和接受数据;

2. 如果连接的一端A对一个全双工工作的TCP/IP连接调用close,A会先把发送送缓冲区的数据发送完,然后,发送FIN,但同时A却丢弃接受缓冲区的数据,并且对于对方B继续发送的数据,直接丢弃,这会造成A接受到的数据小于对方发送的数据的情况;如果A调用shutdown(socket, SHUT_WR)的话,只关闭A的写,即只关闭A向B发送数据的方向的连接,A可以接受B发送过来的数据,这样不会造成主动调用close这方的数据丢失。2.6,6.5,6.6

 

3. 问题:主动调用close,FIN发出以后,如果在TCP/IP连接的管道中还有数据,这些数据还没有被确认,接受方如何保证接受到并处理FIN前,合理的处理这些数据?还是会忽略这些数据,这样也会造成数据丢失。

 

 

待续。。