对于即时通讯开者新手来说,在开始着手编写IM或消息推送系统的代码前,最头疼的问题莫过于到底该选TCP还是UDP作为传输层协议。
TCP
说到 TCP 建立连接,相信大多数人脑海里肯定可以浮现出一个词,没错就是--“三次握手”。TCP 通过“三次握手”来建立连接,再通过“四次挥手”断开一个连接。在每次挥手中 TCP 做了哪些操作呢?
我们可以先明确一下 TCP 建立连接并且初始化的目标是什么呢?
1)初始化资源;
2)告诉对方我的序列号。
所以三次握手的次序是这样子的:
1)client端首先发送一个SYN包告诉Server端我的初始序列号是X;
2)Server端收到SYN包后回复给client一个ACK确认包,告诉client说我收到了;
3)接着Server端也需要告诉client端自己的初始序列号,于是Server也发送一个SYN包告诉client我的初始序列号是Y;
4)Client收到后,回复Server一个ACK确认包说我知道了。
其中的 2 、3 步骤可以简化为一步,也就是说将 ACK 确认包和 SYN 序列化包一同发送给 Client 端。到此我们就比较简单的解释了 TCP 建立连接的“三次握手”。

UDP
我们都知道 TCP 是面向连接的、可靠的、有序的传输层协议,而 UDP 是面向数据报的、不可靠的、无序的传输协议,所以 UDP 压根不会建立什么连接。
就好比发短信一样,UDP 只需要知道对方的 ip 地址,将数据报一份一份的发送过去就可以了,其他的作为发送方,都不需要关心。
数据发送方式的差异
关于 TCP、UDP 之间

本文详细介绍了TCP的三次握手建立连接过程和UDP的无连接特性,对比了两者在数据发送、有序性、可靠性和使用场景的差异。在实时性要求高和多点通信的场景中,UDP更具优势;而在对数据可靠性要求较高的情况下,TCP是更好的选择。
最低0.47元/天 解锁文章
728

被折叠的 条评论
为什么被折叠?



