三次握手和四次挥手

三次握手

是指建立一个 TCP 连接时,需要客户端和服务器总共发送 3 个包。

a)客户端发起连接请求到服务端

        客户端会发送一个带有SYN标志的报文到服务端

b)服务端响应请求返回到客户端

        服务端接收到客户端的请求,并向客户端回应了一个ACK+SYN标志的报文,ACK是对客服端SYN标志的回应,SYN是对客服端的一个确认,询问客户端是否准备好数据的传输

c)客户端反映接收状况到服务端

        客户端接收到服务端的回应,针对服务端的SYN报文回应了一个ACK标志的报文,然后同服务端建立连接,进行数据的传输

通俗化例子:①小明给小红打电话:“小红你好”

                      ②小红回复:“你好,你是小明吗?”

                       ③小明回复:“是的”,于是两方正式开启了会话

四次挥手

是指断开一个 TCP 连接时,需要客户端和服务器总共发送 4个包。

【注意】中断连接端可以是Client端,也可以是Server端。

a)客户端发起断开连接请求到服务端

        客户端发送一个带有FIN标志的报文到服务端,告诉服务端我没有数据进行传输了,可以关闭链接了

b)服务端接收请求

        服务端收到客户端的请求,回复了一个带有ACK标志的报文到客服端,告诉客户端我收到你的关闭链接消息了,但我还存在未处理完的事情,所以需要客户端进行等待,这个时候客户端就进入FIN_WAIT状态,继续等待服务端的FIN报文

c)服务端响应客户端

        服务端处理完自己的业务后,发送了FIN标志的报文给客户端,告诉客户端我已经处理完所有事情了,服务端进入LAST_ACK阶段(超时等待)

d)客户端反映接收状况到服务端

        客户端收到服务端的FIN标志报文后,向服务端发送了一个ACK标志的报文确认,此时两端正式断开连接

通俗化例子:

①用户在美团上下单外卖

②商家看到订单,进行订单确认,用户看到订单确认,表示商家已经受理了订单

③商家进行食物的制作,制作完成后交给外卖小哥送货

④用户收到了食物,在美团上点击确认收货,商家看到了后这笔订单则正是关闭

扩展

Q1:为什么建立连接是三次握手,而断开连接是四次握手呢?

A1:建立连接的时候服务端可以同时把ACK和SYN标志的报文发送到客户端,所以三次即成,断开连接时,服务端接收到客户端的断开请求和实际断开连接为2次,所以断开连接需要四次握手。

Q2:三次握手时第三次可以携带数据吗?为何?

A2:可以,能发出第三次握手报文的主机肯定也接收到了第二次报文,因为伪造IP的主机是收不到第二次报文的,所以可以确认能够发出第三次报文的用户是合法的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值