tcp三次握手学习笔记

在这里插入图片描述

tcp三次握手流程:

首先客户端会主动打开对话链接 ,向服务器开始请求服务器被动打开对话链接:
第一次握手:客户端发出请求SYN包,并且将自己的起始序号发出(seq=x),进入SYN_SEND状态等待回应。
第二次握手:服务端收到SYN包,挺尸自己回复一个SYN,即ACK+SYN,而且与此同时将自己的起始序号发出(seq=y),并且回复客户端的(ack=x+1)表示收到起始序号(因为第一次握手会消耗一个序号,所以+1),此时进入SYN_RECV状态
第三次握手:客户端收到服务器端的ACK+SYN,然后返回确认包ACK,ack=y+1,seq=x+1,表示自己已经确认起始序号,进入ESTAB_LISHED状态,连接建立

为什么需要三次握手才能建立连接?

主要是因为需要确认双方的Sequence Number
就是使客户端和服务器端的双方的起始序号得以确定,这样才保证传输的安全性和稳定性。

首次握手隐患–SYN超时

产生原因:在客户端给服务器端发送SYN后下线,导致服务器端回应ACK+SYN之后得不到回应,服务器端会不断尝试(一般是五次尝试每次间隔翻倍:1s+2s+4s+8s+16s+32s)在63s后tcp断开连接,所以可能会导致SYN队列满,使得不能正常建立连接。
解决办法:在tcp中加入SYN Flood保护措施,就是当SYN队列满时,如果连接可以正常开始,那么就返回SYN Cookie,直接建立连接,那么就避免了SYN超时所导致的SYN队列满的问题。

在连接建立后客户端出现故障怎么办?

tcp有一种保活机制,就是服务器会向客户端发送保活探测报文,如果未收到响应,则会继续发送,服务器自身确定一个保活响应时间,在这个时间间隔内会不断发送保活探测报文,如果一直未收到响应则中断连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值