三次握手和四次挥手

1、三次握手

首先客户端发送一个带有SYN标志的数据包给服务端;服务器收到之后,会回传一个带有SYN和ACK标志的数据包给客户端,确认信息;最后客户端发再送一个带有ACK标志的数据包给服务器,代表握手结束,链接成功。

为什么需要三次握手呢?为了防止已失效的连接请求报文突然又传送到了服务器,从而产生错误。

可以给面试官举个例子:假如只有前面2次握手,那么服务端来收到SYN并且发出SYN+ACK包之后就会处于工作状态。如果服务端在某一时刻突然收到了一个来自客户端的SYN包,在发出ACK之后,服务端处于工作状态。但是可能这个包是卡了很久已经被客户端给丢弃了。客户端收到SYN+ACK之后,表示情绪淡定不予理会,但是服务端已经处于工作状态了,会造成资源的浪费。

2、四次挥手

四次握手是取消客户端与服务端TCP链接的方式。以客户端发起请求为例,四次握手的过程是这样的:首先客户端发送一个带有FIN标志的数据包给服务端,表示它没有数据要发送了;服务端收到之后,首先会回传一个带有ACK标志的数据包表示服务器收到信息了,接着会回传一个带有FIN标志的数据包,表示服务器也没有数据要发送了。最后客户端再发送一个带有ACK标志的数据包给服务器,表示确认信息,代表握手结束,连接关闭。

为什么需要四次握手?

根据状态流程图,我们可以看出服务端响应断开连接的请求时,其ACK和FIN包并不是一起发送给客户端的,因为第一次由客户端->服务端的FIN信号表示的是客户端想要断开连接。服务端先给出ACK确认信号,表示已经收到FIN请求,然后当自己也可以结束的时候,再次发送FIN信号,所以需要挥手交互需要四次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值