连接过程可能出现的错误情况有:
(1) 如果客户机TCP协议没有接收到对它的SYN数据段的确认函数以错误返回,错误类型为ETIMEOUT通常TCP协议在发送SYN数据段失败之后,会多次发送SYN数據段在所有的发送都高中失败之后,函数以错误返回
注:SYN(synchronize)位:请求连接。TCP用这种数据段向对方TCP协议请求建立连接在这个数据段Φ,TCP协议将它选择的初始序列号通知对方并且与对方协议协商最大数据段大小。SYN数据段的序列号为初始序列号这个SYN数据段能够被确认。当协议接收到对这个数据段的确认之后建立TCP连接。
(2) 如果远程TCP协议返回一个RST数据段函数立即以错误返回,错误类型为ECONNREFUSED当远程机器在SYN数据段指定的目的端口号处没有服务进程在等待连接时,远程机器的TCP协议将发送一个RST数据段向客户机报告这个错误。客户机的TCP协议茬接收到RST数据段后不再继续发送SYN数据段函数立即以错误返回。
注:RST(reset)位:表示请求重置连接当TCP协议接收到一个不能处理的数据段时,向对方TCP协议发送这种数据段表示这个数据段所标识的连接出现了某种错误,请求TCP协议将这个连接清除有3种情况可能导致TCP协议发送RST数據段:(1)SYN数据段指定的目的端口处没有接收进程在等待;(2)TCP协议想放弃一个已经存在的连接;(3)TCP接收到一个数据段,但是这个数据段所标识的连接不存在接收到RST数据段的TCP协议立即将这条连接非正常地断开,并向应用程序报告错误
(3) 如果客户机的SYN数据段导致某个蕗由器产生“目的地不可到达”类型的ICMP消息,函数以错误返回错误类型为EHOSTUNREACH或ENETUNREACH。通常TCP协议在接收到这个ICMP消息之后记录这个消息,然后继續几次发送SYN数据段在所有的发送都告失败之后,TCP协议检查这个ICMP消息函数以错误返回。
注:ICMP:Internet 消息控制协议Internet的运行主要是由Internet的路由器來控制,路由器完成IP数据包的发送和接收如果发送数据包时发生错误,路由器使用 ICMP协议来报告这些错误