TCP三次握手、四次挥手概念图详解

109 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

TCP三次握手、四次挥手概念图详解

1.TCP连接的11中状态

tcp11中状态
ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSE
CLOSE_WAIT
LAST_ACK
LISTEN
CLOSING

2.TCP 三次握手、四次挥手

三次握手:

​ 首先客户端处于close关闭状态,与服务器发送第一个SYN请求后(这个SYN请求会带一个seq随机序列),客户端处于SYN_SENT状态,服务器在接收客户端发送的请求的同时一定要处于listen监听状态,否则无法收到请求包,收到请求包之后处于SYN_RCVD状态,这时也会给客户端发送一个SYN的请求包(也有随机序列),并发送一个ACK的确认包(这里ACK的随机序列值就是客户端发送SYN的序列号+1),客户端收到这两个包后会处于ESTABLISHED状态,这时也会给服务器端发送一个ACK的包(这里ACK的随机序列值就是服务端发送的SYN序列+1),服务端收到后状态处于ESTABLISHED

注意这个状态的请求数如果很多会遭到ddos攻击

四次挥手:

​ 需要断开连接时时由服务端主动断开连接的,因为数据传输是服务端发起的,因此断开也是由服务器发起

​ 首先服务端给客户端发送一个FIN的请求包(表示要求断开连接),发送完成后服务端处于FIN_WAIT_1状态(_1只是为了和第二次挥手做一个区分)客户端收到后会发送一个ACK的确认包,发送完成后,客户端处于CLOSE_WAIT状态,服务端收到后会处于FIN_WAIT_2状态,这时客户端也会发送一个FIN的请求包,请求断开连接,客户端发送完成后悔处于LAST_ACK状态,服务端收到FIN请求包后会处于TIME_WAIT状态,这时会有一个2MSL时间(MSL时间为60s,2MSL就是120s),2分钟后会给客户端发送一个ACK的确认包,表示确认断开连接,客户端收到后会处于close状态,四次挥手完成

在这里插入图片描述