tcp连接的建立与释放(三次握手和四次挥手)三报文握手

tcp其实握手一次,平时所说是发送三次报文建立一次连接
一、三次握手
1,问什么要发送三次?
答:当客户端想服务器端发送一个报文,中途出演延迟身一系列因素未到达(滞留在网络中),会再发一次,然后服务器返回确认的报文,此时客户端收到确认的报文就建立tcp连接,使用完销毁,然后最初发送的报文又到了服务端,服务端发送确认报文,此时再建立连接就不对了,故此需要第三次报文确认。
2,第三次握手失败了怎么办?
答:当client与server的第三次握手失败了之后,即client发送至server的确认建立连接报文段未能到达server,server在等待client回复ACK的过程中超时了,那么server会向client发送一个RTS报文段并进入关闭状态,即:并不等待client第三次握手的ACK包重传,直接关闭连接请求,这主要是为了防止泛洪攻击,即坏人伪造许多IP向server发送连接请求,从而将server的未连接队列塞满,浪费server的资源。

在这里插入图片描述
TCP连接建立过程:
1、客户端向服务器发送SYN,其中seq=x。
2、服务器收到SYN报文段后,发送SYN+ACK,其中seq=y,确认号=x+1。
3、客户端收到SYN+ACK报文段后,发送ACK,确认号=y+1。服务器收到ACK报文段后,连接建立。
二、四次挥手
在这里插入图片描述
1、为啥等待?
因为如果服务器没有收到第四条线,会认为自己没有发送成功第三条线,会重新发送,故而需要等一等
2、为甚么断开需要4次
当客户端需要关闭的时候,发送报文给服务器,服务器确认回复,此时服务器是可以向服务器发送数据的,当服务器也无数据可发送的话,就发起关闭报文。
3,为什么要四次挥手
答:前两次挥手是为了断开client至server的连接,后两次挥手是为了断开server至client的连接,如果没有第四次挥手,会出现如下状况:
server发送FIN数据包并携带ACK至client之后直接断开连接,如果client没有收到这个FIN数据包,那么client会一直处于等待关闭状态,这是为了确保TCP协议是面向连接安全有保证锝。
上面解释了为什么不是三次挥手,同理,两次挥手也是不安全的。不能保证server与client都能正确关闭连接释放资源,而不会造成资源浪费。
4,四次挥手之后client为什么还要等待2MSL的时间才释放资源关闭连接?
答:如果client第四次挥手的确认报文段没有被server接收,那么server便会重发第三次挥手的FIN报文段,因此client要停留2MSL的时长来处理可能会重复收到的报文段。
让之前建立的client-server通信过程中或者是挥手过程中由于网络不通畅产生的滞留报文段失效。如果不等待2MSL,那么建立新连接之后,可能会收到上一次连接的旧报文段,可能会造成混乱.

看到了一篇通俗易懂的文章,粘在此处:
https://blog.csdn.net/u013066244/article/details/88093533

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值