tcp之三次握手/四次挥手

tcp之三次握手/四次挥手

三次握手

tcp的三次握手用于建立服务器与客户端之间的通信连接,服务器与客户端之间通过数据段和报文段的交换建立起有效可靠的连接。

个人认为三次握手和四次挥手都是基于tcp/ip协议的,而非http协议。

传输流程图如下

Created with Raphaël 2.1.2 客户端 客户端 服务器 服务器 发送连接请求(syn报文) 回复报文,并且加上自己的标志(syn+1),然后回复一个响应(ack数据包) 确认收到ack数据包,然后将数据包进行标志化后返回给服务器

四次挥手

tcp的四次挥手用于确保服务器与客户端之间安全的断开连接

传输流程图如下

Created with Raphaël 2.1.2 客户端 客户端 服务器 服务器 发送结束数据请求FIN关闭数据以及一个ACK报文用于告诉服务器,数据发送完毕,即将关闭 回复ACK表示收到断开请求(可能继续发送一些给数据给客户端) 发送FIN表示数据发送完毕,即将断开连接 客户端表示自己收到FIN消息,并且 回复一个ACK给服务器

tcp四次挥手存在一个结束等待的问题,以上面的例子为例来说,客户端在最后一次向服务器回复ACK消息-表示已经接受到服务器的FIN信息之后,开始等待。等待的原因,是需要确保服务器接受到这个ACK消息,如果服务器没有收到这个ACK消息,就会给客户端超时重传(timeout retransmit)一份FIN报文,之后继续循环,所以,客户端在结束ACK发送后,至少需要等到(客户端发送一次ACK+服务器回复一次FIN)的时间,也就是所谓的2mls。

猜你喜欢

转载自blog.csdn.net/newbietan/article/details/79891653