关于TCP的握手规则
TCP协议可以说是网络运行的基础(比如经常会提到TCP/IP,尽管现在这两个协议已经不能完全说明互联网了,但TCP无疑还是十分重要的)。 《TCP/IP详解 卷1:协议》对TCP的三次握手建立连接过程,四次握手解除连接的过程作了详细的描述。具体的TCP协议可以参考wikipedia. 这里转载一篇讲解三次握手的很有意思的文章《第三次握手——革命斗争中的通信故事》,看完之后将会使你对三次握手有更深的印象。文章是科学松鼠会写的,生动活泼,我这里就不贴过来了,大家去原站点看看吧。顺便说一下,科学松鼠会上的文章都是一些科普文章,但是语言都比较易懂,非常适合一般人来阅读。。 这篇文章主要讲解的是三次握手的原因和实际意义,对于解除连接的四次握手没有叙述,其实原理也比较简单。由于TCP是全双工的,所以在一个方向解除连接之后,另一个方向还应当可以传输数据(当然,方向是固定的),尽管这在实际中应用的比较少。所以在客户端通知服务器断开连接,并且服务器响应了断开请求之后,服务器到客户的单向连接应该可以使用。《TCP/IP详解 卷1:协议》中使用了RSH作了说明。如果服务器也没有其他数据可以传输了,这个时候服务器可以通知客户端连接解除,客户响应之后服务器关闭连接。这就是四次握手的过程。由于服务器在确认客户端的连接解除之后,一般也没有其他数据需要传输了,所以实际使用中,解除连接也是三次握手,服务器的第二次确认和第三次请求在同一数据包发送了。具体的数据包可以使用wireshark这个抓包软件来实验。 其实,通信的基本原则就是:发送方在发出请求之后,需要得到应答才能确认连接,并且这种行为需要双方都实现。 |