三次握手与Socket API

本文详细解释了TCP协议中的三次握手过程,强调了序号在确保通信可靠性中的关键作用。三次握手旨在交换双方通信的起始序号,是TCP可靠性的基础。此外,文章还探讨了Socket API中的connect、listen和accept函数如何与三次握手相关联,明确了它们在客户端和服务器端的不同角色。

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

什么是三次握手?

所谓三次握手其实指的是三次信息交换过程,三次信息交换完毕后我们就可以认为一个“连接”建立好了,那么什么是一个“连接”呢?

一个连接唯一确定了发送方和接收方,除此之外一个连接还确定了双方“说话的方式”,三次握手规定:双方在说话前都要加一个数字,该数字用来记录这是彼此的第几句话了,比如:

A: 1,今天天气不错啊
                  1,对啊 :B
                  2,明天天气也不错 :B
A:  2,不过好像明天有雨
A:  3,而且明天还要加班
A:  4,不想上班 :(
                  3, 我明天休假啦 :B
                  6, 下班啦 :B
                  4, 今天可以早点撤 :B
                  5, 开心 :B           

从这里我们可以看出双方说话前都报上这是自己说的第几句话,当然在真实情况下只有无聊到极点的人才会在微信里用这种方式聊天。但是微信所依赖的网络通信协议其实就用这种看上去略显神经质的方式在彼此通信,有的同学可能已经看出来了,这种方式的好处在于可靠性

从上面的聊天中我们可看到,B最后说的几句话可能因为网络问题出现了乱序,但A依然知道该怎么阅读B发过来的信息,原因就在于每一句都带有编号,A可以依照编号的顺序而不是接收数据的顺序进行阅读,这就是每句话加编号的作用。

真实的网络协议双方的第一句话都不是从1开始的,三次握手的目的就在于协商双方最开始的数字是几,比如A和B说:“我的信息序号从X开始”,B对A说:“我的信息序号从Y开始”,此后双方在X和Y的基础上每说一句就加1,以此来确保通信的可靠性。

那么什么网络协议需要依赖三次握手交换说话序号来确保可靠性呢,答案就是网络通信协议中的TCP,只有TCP协议在通信前才需要进行三次握手彼此交换起始序号。

那么UDP协议在双

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值