对tcp三次握手四次挥手的一点小理解

1.前言

网络通信的实体是不同主机之间进程的通信,也就是端到端通信,其过程借助于TCP或者UDP协议,基于端口。
倘若利用TCP协议,则传输前有三次握手,传输后有三次挥手,是一个可靠传输。
倘若利用UDP协议,传输前不需要建立连接,对方收到后也不需要发送确认,是一个不可靠的传输,但是胜在消耗资源少,速度快。

2.三次握手

首先我们需要知道为什么要三次握手而不是两次。原因是为了防止之前传输过的请求连接的数据包延时到达服务器后,服务器再次创建新的连接而导致的错误。
如果我们只使用二次握手,假设有这么一种情况,我们先发了一个syn包,这个包因为某种原因被阻塞到网络中,这时候我们又发送了一个syn包,这次收到了对方的ack+syn包,tcp连接已经建立。过了一会儿之前阻塞的syn包发送到了对方主机,对方主机又返回了一个ack+syn包,这时候又建立了一个tcp连接。但我们是只想建立一个tcp连接的,这时候出现了两个,浪费了资源。为了解决这种情况,因此就出现了tcp三次握手。
假设我们使用tcp三次握手,就可以避免这个情况,因为即使之前被阻塞的包被发送到了服务端,服务端返回了ack+syn包,但只要我们不发送最后的第三次握手也就是ack包,就不会建立连接,也就不会有资源的浪费,这就是tcp连接为什么是三次的原因。
在这里插入图片描述

3.四次挥手

在这里插入图片描述

通过四次挥手来结束tcp连接,也是有其原因的,我的理解是这个样子的:

  1. 第一次客户端发送fin包,告诉服务端,我不会再给你传送数据了并且我想要断开连接。
  2. 第二次服务端发送ack包,告诉客户端,这是我这边剩余要发送的数据,等发送完在关。
  3. 第三次服务端发送fin+ack包,告诉客户端,我这边发送结束,可以中断连接了。
  4. 第四次客户端发送ack包,告诉服务端,好的。

4.参考文章

两张动图-彻底明白TCP的三次握手与四次挥手

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Shanfenglan7

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值