为了准确无误的把数据送达目的处,TVP协议采用了三次握手策略。
1.客户端–发送带有SYN标志的数据包–一次握手–服务端。
2.服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端。
3.客户端–发送带有ACK标志的数据包-三次握手–服务端。
**
主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。
如果采用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传送数据,然后关闭连接。此时此前滞留的那一次连接请求,网络通畅了到达了服务器,这个报文本该是失效的,但是两次握手的机制将会让客户端和服务器再次建立连接,这将导致不必要的错误和资源的浪费。
如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接收到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于服务器收不到确认,就知道客户端没有请求连接。
接收端传回发送端所发送的SYN是为了告诉发送端,我收到的信息确实就是你所发送的信号了。
SYN是TCP/IP建立连接时使用的握手信号。在客户端和服务器之间建立正常的TCP网络连接时,客户端首先发出一个SYN消息,服务器使用SYN/ACK服务器使用SYN/ACK应答表示接收到了这个消息,最后客户机再以ACK(Acknowledgement[汉译:确认字符,在数据通信传输中,接收站发给发送站的一种传输控制字符。他表示确认发来的数据已经接收无误。])消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
双方通信无误,必须是两者互相发送消息都无误。传回SYN,证明发送方到接受方的通道没有问题,但是接受方到发送方的通道还需要ACK信号来进行验证。
断开一个TCP连接则需要"四次挥手":
数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。
TCP是全双工通信,Client在自己已经不会再有新的数据要发送给Server后,可以发送FIN信号告知Server,这边已经终止Client到Server那边的数据传输。但是这个时候对Server端来说,可以继续往Client这边发送数据包。于是,两端数据传输的终止在时序上是独立的并且可能会相隔比较长的时间,这个时候最少需要2+2=4次挥手来完全终止这个连接。但是,如果Server在收到Client的FIN包后,再没数据要发送给Client了,那么对Client的ACK包和Server自己的FIN包就可以合并为一个包发送过去,这样四次挥手就可以变成三次了。
举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。
MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。
第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度来看,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到, 于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。 客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本链接持续的时间内所产生的所有报文段都从网络中消息。这样新的连接中不会出现旧连接的请求报文。
建立连接的时候,服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接受数据,而自己也未必全部数据都发给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端额请求后都会重新复位这个计时器,时间通常设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75分钟发送一次。若一连发送10个探测报文段仍然没反应,服务器就认为客户端出现了故障,接着就关闭连接。
本文发布于:2024-01-28 11:34:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064128837126.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |