故障分类
通过是否有FIN包进行分类
无Fin包
很多原因导致网络中断,TCP程序并不能及时感知到异常信息,除非网络的其他设备。如路由器发出一条ICMP报文,
说明目的网络或主机不可达,这个时候通过read或write调用就返回Unreachable的错误
read设置超时将能检测
write将重传多次后标识异常
系统崩溃导致无FIN包
特殊情况,崩溃后重启
系统将返回RST重置分节,TCP程序通过read或write调用可以分别对RST进行错误处理
有FIN包发出
read直接感知FIN包 正常退出
write产生RST
向一个已关闭的连接连续写,最终导致SIGPIPE