3分钟搞懂TCP通信过程!

本文深入解析了TCP通信的全过程,从需求出发,阐述了三次握手建立连接、数据分段传输及失败重传机制,再到四次挥手断开连接的细节,为理解计算机网络通信提供了清晰的思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需求?

网络的高速发展迫切需要解决两台计算机之间互相通信的问题。

二、面临的问题?

  1. 发送方如何确认接收方准备好接收信息了:解决方式是三次握手
  2. 信息量过大:解决方式是分段传输
  3. 信 息 丢 失 : 解决方式是失败重传

三、两台计算机通过TCP进行通信的过程?

  1. 建立连接:客户端和服务器需要通过三次握手建立连接
    tcp3ack
    第一次客户端发送syn问服务器:你能收到我消息不?
    第二次服务器发送消息问客户端:ack(我能收到消息)+syn(你能收到我消息不)?
    第三次客户端发送消息回答服务器:ack (能收到消息)
    进入estalished(连接已建立)状态
    2、发送消息:客户端会将一份数据分成多份来发送,最多发送三份数据,过段时间收到几份服务器的签收信息就再发送几份,保证不超过三份正在发送的数据,如果超时仍然收不到某些数据的签收信息就重新发送对应的数据信息。
    3、断开连接:通过四次挥手断开连接
    tcp4fin

第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-乾坤-

????????????????????????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值