图解TCP的三次握手连接和四次握手断开连接

来源:互联网 发布:淘宝透明拉链袋 编辑:程序博客网 时间:2024/05/17 03:27

TCP三次握手建立连接过程:
(1)第一次握手:建立连接时,客户端A发送SYN包到服务器,并进入SYN_SEND状态,等待服务器B确认。
(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN,同时自己也发送一个SYN包,此时服务器B进入SYN_RECV状态。
(3)第三次握手:客户端A收到服务器B的SYN和ACK包,向服务器B发送确认包ACK.此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成这三次握手,客户端和服务器开始传送数据。
这里写图片描述
这里有个知识点:当TCP第三次握手失败时,服务器并不会重传ack报文,在等待一定时间后直接发送RST(复位)报文段,进入CLOSED状态这样做目的是为了防止SYN洪泛攻击。(SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接过程总消耗了资源,如果有成千上万这种连接,主机资源将被耗尽,从而达到攻击的目的。)
TCP关闭连接的四次握手:由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成他的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的的一方将执行主动关闭,而另一方执行被动关闭。
(1):客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送;
(2):服务器B收到这个FIN,它发回一个ACK,确认序号为收到的FIN序号加一;
(3):服务器B关闭与客户端A的连接,发送一个FIN给客户端A;
(4):客户端A发回ACK报文确认,并将确认序号设置为收到的FIN序号加一
这里写图片描述
这里写图片描述

1 0
原创粉丝点击