TCP和UDP协议-什么是三次握手和四次挥手

  • TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。

有3个过程:建立连接、传输数据、断开连接。

  • UDP是基于IP之上开发能和应用打交道的协议。

TCP要完成传输过程,有三个关键步骤,分别是:三次握手、传输确认、四次挥手

三次握手

1. 客户端发送到服务器。客户端发送 SYN 报文给服务器,并且指明客户端初始化序列号为 ISN(c) ,即以 SYN=1, seq=x 的形式发送过去。此时客户端处于 SYN_SEND 状态。

2. 服务器发送给客户端。服务器收到客户端的 SYNISN(c) ,也发送一个 SYN 回去,同时设置 ACK = ISN(c) + 1 以及指明服务器初始化序列号为 ISN(s) ,即以 SYN=1, ACK=x+1,seq=y 的形式发送给客户端。

3. 客户端发送到服务器。客户端收到服务器发送的消息后,设置 ACK = ISN(s) + 1 ,将自身的 ISN(c) + 1 ,即以 ACK=y+1, seq=x+1 的形式发送给服务器。此时客户端处于 ESTABLISHED 阶段,服务器收到报文,也处于 ESTABLISHED 阶段,双方建立了连接。

三次握手的目的

1、 客户端发送数据给服务器,服务器确认自己可以接受客户端的请求。

2、服务器发送数据给客户端,客户端确认可以发送数据给服务器,也可以接受到服务器的请求。

3、客户端发送数据给服务器,服务器确认自己可以发送数据给客户端。

可否携带数据:

答案:第三次握手的时候可以携带,第一第二次不可以携带。

原因:如果第一次可以携带数据的话,有可能是恶意攻击服务器。这时候释放大量的数据,不理会服务器的的承受能力,让服务器花费很多时间、内存空间接收报文。

第三次握手的时候,客户端处于 ESTABLISHED 状态了,它可以建立连接并且知道服务器的接收、发送能力是正常的,所以可以携带数据了。

四次挥手

客户端发送给服务器。客户端以 FIN=1, seq=u 的形式发送给服务器,表示需要关闭客户端和服务器的数据传输。此时客户端处于 FIN_WAIT 状态。

服务器发送给客户端。服务器收到信息,先返回 ACK 给客户端,即以 ACK=1, seq=v, ack=u+1 的形式返回给客户端,表示收到客户端报文了。此时服务器处于 CLOST_WAIT 状态。

服务器发送给客户端。服务器等待一会,看客户端还有没有数据没发过来,等处理完这些数据之后,也想断开连接了,于是发送 FIN 给客户端,即以 FIN=1, ACK=1, seq=w, ack=u+1 的形式发送给客户端。此时服务器处于 LAST_ACK 状态。

客户端发送给服务器。客户端收到 FIN 之后,返回 ACK 报文作为应答,即以 ACK=1,seq=w+1 的形式发送给服务器。此时客户端处于 TIME_WAIT 状态。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值