简述
- 第一次握手,发送SYN报文,传达信息:“你好,我想建立连接”;
- 第二次握手,回传SYN+ACK报文,传达信息:“好的,可以建立链接”;
- 第三次握手,回传ACK报文,传到信息:“好的,我知道了,那我们连接”。然后就建立连接了。在发送报文之前各方都要确认可以进行连接。
建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。
- TCP的三次握手过程:
主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。
- 采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况:
主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。
- 采用两次握手不行,原因就是上面说的失效的连接请求的特殊情况。
- 如果采取两次握手,相当于第二次握手结束便建立连接,如果发送SYN的一方不想连接了,也不会有反馈,另一方却一直在等待,浪费了时间。
- 当然可以采取4次甚至N次握手,但是建立连接的时间太长,效果也会大打折扣。
- 因此3次握手属于最佳方案,既保证了可靠性,又节俭了建立连接的时间
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)