TCP三次握手四次挥手

本文详细解释了TCP协议中的三次握手和四次挥手过程,包括各自步骤和标志位的作用,以及它们在建立和关闭连接中的关键作用。
摘要由CSDN通过智能技术生成

本文转载于【转】计算机网络——三次握手与四次挥手_三次握手和四次挥手-CSDN博客

一、三次握手

1.什么是三次握手?

手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。

TCP共有6个标志位,常见的:

标志位含义
SYN(synchronous)建立连接
ACK(acknowledgement)响应确认
FIN(finish)结束
RST(reset)重置

2.过程解析:

(1)第一次握手

客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。

j是一个随机数,通过看服务器返回的j+1是否正确,判断第一次握手服务器是否正确响应。

(2)第二次握手

服务器确认客户的SYN包,同时发送ACK包(ack = j+1)作为回应;

自己也发送一个SYN包(syn=k),共两个包,此时服务器进入SYN_RECV状态;

k也是一个随机数,也是用于看客户端返回的k+1是否正确,判断第二次握手客户端是否正确响应。

(3)第三次握手

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

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

二、四次挥手

1.什么是四次挥手

2.过程解析:

(1)第一次挥手

客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。

意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。

(2)第二次挥手(半连接)

服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态(半连接状态),继续等待服务器端的FIN报文。

(3)第三次挥手

当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。

(4)第四次挥手

客户端收到FIN=N报文后,就知道可以关闭连接了。

但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。

客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。

最终完成了四次握手。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值