1.建立连接部分。
2.等待数据传输部分
3.关闭连接部分:
TIME_WAIT状态:
1.此状态大概2MSL时间。
2.如果最后一个ACK N+1丢失了,服务器会以为自己发的FIN N丢失了,需要重传,重传的时间是2MSL。原因是如果客户进入CLOSED状态并在2MSL之前关闭,那么客户将永远收不到FIN重传的报文段,服务器也永远收不到ACK,服务器不能关闭。
3.假定客户和服务器已经关闭了连接,经过短暂时间后又打开了一个连接,使用同样的socket端口地址,如果这2个连接相隔时间很短,那么从前一个连接来的重复报文段可能会收到这个连接,TCP规定2MSL时间内本地端口不能再被使用。
4.同样的,如果服务器终止了一个已经建立的连接,然后试图立即重启这个服务器程序在相同的端口上,服务器不能在2MSL时间内不能使用这个端口。
FIN_WAIT_2状态:
客户端发送完第一个FIN后,客户端来了确认,此时进入FIN_WAIT_2状态,但是!服务器得等到应用层收到EOF才能发送他的FIN,也就是说客户端可能由于一直在等待服务器的FIN而处在FIN_WAIT_2状态,使得另一端也一直处于CLOSE_WAIT状态。TCP对这个有超时的限制,具体不废话了。
阅读(8742) | 评论(0) | 转发(5) |