【学习笔记】TCP建立连接为什么要三次握手

最近在温习计算机网络,在《计算机网络》谢希仁版一书中提到,三次握手原因的解释。举个例子,假如是两次握手,则A主机向B主机发送了一个tcp建立请求(第一次握手)的时候,假设报文在网络中滞留了,但未丢失。A过了一段时间没有收到B的回复,则认为连接没有建立成功。过了一段时间,B收到了A的请求建立报文,并发送了一个回复报文给A。这时候A并不会理会从B到达的报文,但是B却认为连接已经建立了,并且一直在等待A发送的数据。这样就导致了问题。

 

看了这一段解释,总感觉还是不太理解为什么是三次握手,为什么三次握手就能建立连接,而不是更多次。在知乎上看到一个回答,感觉解释的挺好:

TCP 为什么是三次握手,而不是两次或四次? - 车小胖的回答 - 知乎 https://www.zhihu.com/question/24853633/answer/115173386

简单来说,就是为了确认报文的序号。tcp的传输功能依赖于报文序号,第一次握手,是A向B发送报文序号,第二次握手,是B向A确认收到报文序号,并发送自己的报文序号,第三次握手,是A确认B的报文序号。只有双方都确认收到了对方的报文序号,传输才能开始。这样解释,三次握手的原因就很清晰了。

posted @ 2020-08-15 16:24  stardust2099  阅读(360)  评论(0)    收藏  举报