建立tcp连接:三次握手

9369856-f52744ab37cfa7d3.png
1550199133(1).png

在tcp/ip协议中,tcp协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:
建立连接时,客户发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:
服务器收到SYN包,必须确认客户的SYN(ack=j+1),同时自己发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入到SYN_RECV状态;

第三次握手:
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手

1、利用三次握手的原因:
初始化 Sequence Number的初始值;

2、首次握手存在的隐患:
server收到client的SYN,回复SYN-ACK的时候未收到ACK确认(进入到等待63秒的过程)
恶意程序向服务器发送SYN请求占尽对列,让正常连接无法进行;
解决方案:针对SYN Flood的防护措施
正常的连接请求, 在SYN队列满了以后,通过根据destinationIP和sourceIP生成一个Sequence Number(SYN cookie),恶意程序无法仿造此过程,所以正常连接可以直接进行连接。

3、建立连接后,client出现故障怎么办?
保活机制:
向对方发送保活探测报文,如果未收到响应则继续发送

猜你喜欢

转载自blog.csdn.net/weixin_33762130/article/details/88111699
今日推荐