TCP三次握手的生活逻辑表现方式

本文通过三个生动的例子,详细解析了TCP三次握手的过程及其在实际生活中的应用,帮助读者更好地理解这一网络通信的基础概念。

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

不小心在学习别的资源时,看到,关于,TCP三次握手的各种理解;


其实,这是一种,流程(事件、生活中的:事情)的首要条件;

如:

A、B说好明天吃完饭后,准备一齐去shopping;

第一种情况:

到了第二天,A吃完饭后,给B打了电话:“你吃完饭没有?”,B回道:“吃了,你呢?”,但A没听到,因为B正刚买完菜回家路上,刚进电梯接了电话,但由于,信号不好;没听到;没有给A正确的回应,则事情(流程)的首要条件,没有通过(协议失败);


第二种情况:

到了第二天,A吃完饭后,准备出发,刚进电梯时,就打电话给B:“你吃完饭没有?”,B接了电话,完全没听到A的任何声音;(因为A刚进电梯,信号隔离了);则事情(流程)的首要条件,没有通过(协议失败);


第三种情况:(当然情况有很多种,我说这么三种是:成功的情况)

到了第二天,A吃完饭,在家里打了个电话给B,同时,B也刚吃完饭,在家休息、看电视;

(第一次握手协议:)A:“吃饭后了吗?”;

(第二次握手协议:)B:“吃完了,你呢?”

(第三次握手协议:)A:“我也吃了,我们出发吧。”,(OK,Let's go go go ~~~ ,,fire in the hold , bom!!!!)

<< TCP三次握手(Three-Way Handshake)是建立可靠连接的过程。它是传输控制协议 (TCP) 的核心机制之一,用于确保两个主机之间通信的可靠性。下面是详细的介绍: ### TCP三次握手过程 1. **第一次握手** - 客户端发送 SYN 包到服务器,并进入 SYN_SENT 状态。 ```java // Java 中通过 Socket 创建客户端时会触发此阶段逻辑 try { Socket socket = new Socket("serverAddress", port); } catch (IOException e) { e.printStackTrace(); } ``` 在这个步骤中,客户端向服务端发起请求并设置一个随机序列号 `x`。 2. **第二次握手** - 服务端接收到 SYN 请求后返回确认包 ACK 并带上自己的初始序列号 `y` 同时将状态变为 SYN_RCVD。 ```java // ServerSocket 监听来自客户的请求 ServerSocket serverSocket; try { serverSocket = new ServerSocket(port); Socket clientSocket = serverSocket.accept(); } catch (Exception e){ System.out.println(e.getMessage()); } ``` 此外,在这一步还会有对上一歩中的SYN进行ACK回应的动作。 3. **第三次握手** - 当客户再次收到服务端传来的信息之后回复最后一个ACK给服务端表明已经准备完毕可开始数据交互了,此时双方都进入了 ESTABLISHED 状态表示现在可以正常地互相传递资料了. ```java // 假设我们已经有了socket实例,则可以通过OutputStream写出消息等操作代表正式的数据交换开始了. try{ OutputStream outStream=clientSocket.getOutputStream (); }catch(IOException ioExcep){} ``` ### 解释原因: 之所以要经过三个回合才能完成整个链接构建是因为每个方向都需要单独被验证以保证任何一方都能正确接收到来自另一方的信息并且没有丢失或错误的情况发生。如果只有两次的话就不能完全做到这一点所以增加了额外的一次检查从而提高了系统的稳定性与安全性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值