浅析im即时通讯开发中TCP和UDP的区别

      最后更新:2022-06-20 17:53:20 手机定位技术交流文章

      网络协议是每个开发网络通信应用(例如IM、传送、网络交换等)的程序员必须具备的基本知识,而TCP/IP群中最代表性的传输层协议分别是TCP和UDP。

      有网络通信开发经验的学生知道,TCP和UDP协议是最常用的协议,对于许多人来说,在何时和在何情况下应该使用TCP和UDP?这是一个长期的讨论话题。

      与其他长篇讲座不同,本文尽可能简单地总结了TCP和UDP协议之间的主要差异,为那些想掌握知识这一方面并不想花太多时间系统地学习网络理论基础的学生提供便利。

      TCP/IP协议集群的快速理解

      计算机和网络设备需要互相通信,双方都必须采用相同的方法。例如如何检测通信目标,哪些方面开始通信,使用哪个语言,以及如何终止通信需要事先确定。不同硬件和操作系统之间的通信,所有这些都需要一个规则。我们称之为规则协议。

      TCP/IP是互联网相关协议家族的通用术语,例如TCP、UDP、IP、FTP、HTTP、ICMP、SMTP等。

      TCP/IP模型是互联网的基础,是一系列网络协议的通用名称,这些协议可以分为四个层:链层、网络层、传输层和应用层。

      具体是:

      1)链层:负责包装和拆卸IP消息、发送和接收ARP/RARP消息等;

      (二)网络层:负责向目标网络或主机调度和发送组消息;

      (三)传输层:负责组分和重新组织消息,并以TCP或UDP协议格式包装消息;

      4)应用程序层:负责向用户提供应用程序,例如HTTP、FTP、Telnet、DNS、SMTP等。

      在网络架构中,网络通信必须建立在通信的另一层,而不是干涉。

      在整个数据传输过程中,当数据在传输端通过每个层时,必须连接到相应的层的协议头和协议尾(只有数据链层需要协议尾被封入),也就是说,数据必须被封入协议,以识别相应的层的通信协议。

      UDP(User Data Reporting Protocol)是网络中用于处理包的非连接协议,类似于TCP协议。

      UDP 的缺点是不能提供组装、组装和排序的包,也就是说,在发送消息后是否能够安全地到达包是不可能的。

      我将总结UDP协议的一些主要特点,将在下节逐一解释。

      首先,UDP不需要像TCP那样在发送数据前三次创建连接,并且您想要发送的数据可以发送。 它也只是数据消息载体,并不会对数据消息进行任何分离或解析操作。

      具体来说就是:

      1)在传输端:应用层将数据转移到传输层UDP协议上,UDP仅将UDP头添加到数据上,然后将其转移到网络层上;

      2)接收端:网络层将数据传递到传输层,UDP仅删除IP消息头条并将其传递到应用程序层,而不进行任何解析操作。

      UDP不仅支持单向传输模式,而且还支持单向、多向、多向、多向模式,这意味着UDP提供单播、多播和广播功能。

      UDP协议是面向报告的。

      发送者UDP将消息发送到应用程序,并在添加第一个部分后将IP层送到底部。UDP报告在应用程序层中既不合并也不分离,但保留这些报告的边界。

      不可靠的UDP首先反映在缺乏联系,双方的沟通不需要建立联系,想立即发送,这种状况当然是不可靠的。

      任何收到的数据都会发送任何数据,不会备份数据,发送数据不会关心对方是否收到数据正确。

      同样,网络环境是好的和坏的,但UDP发送数据的速率是不变的(即使网络条件不好,也不会对传输速率作出调整),因为没有拥挤控制。

      UDP头条包含下列数据:

      1)两个16位元端口号,分别是源端口(备选字段)和目标端口;

      (二)整个数据报告的长度;

      3)检查整个数据消息和(IPv4选项字段),用于检测头条信息和数据中的错误。

      因此,UDP的标题成本很小,只有8字节,远远低于TCP的至少20字节,并且在传输数据信息方面非常高效。

      当一个计算机想与另一个计算机进行通信时,两个计算机之间的通信必须是平稳可靠的,以确保数据的正确传输。

      例如,当你想看网页或电子邮件时,如果您想要全面有序地查看网站,而不丢失任何内容。当你下载文件时,希望 将 收到 全面 文件,这不仅仅是文件的一部分,因为如果数据丢失或序列化,这不是你想要的结果。所以我使用TCP。

      TCP协议(英语:TCP protocols):传输控制协议(英语:Transmission control protocols)是IETF的RFC 793(英语:RFC 793)定义的基于字节流的基于连接、可靠的传输层通信协议。

      TCP是一个面向连接、可靠的流量协议。 流量是数据结构的连续性,你可以把它想象成排水管中的水流。

      1)第一次握手:客户端将连接请求消息发送到服务端。报告部分包含自己的数据通信初始序列。

      2)第二次握手:接收连接请求消息后,服务器如果同意连接,则发送响应,并包含自己的数据通信初始序列,并在发送消息时输入SYN-RECEIVED状态。

      3)第三次握手:当客户收到连接同意书的相应响应时,一个确认消息也发送到服务端。该消息发送后,客户端将输入“ ESTABLISHED ”状态,接收此响应后,服务端也进入“ ESTABLISHED ”状态,此时连接建立成功。

      TCP建立连接需要三个握手而不是两个握手的原因可能存在一些疑问,这是为了防止服务端接收连接请求消息的失败,从而导致错误。

      1)第一波:如果客户A认为数据传输已经完成,他需要向服务点B发送连接释放请求。

      2)第二波:B收到连接释放请求后,通知应用程序层释放TCP链接。然后发送ACK包,并输入CLOSE_WAIT状态,这表明从A到B的连接已经释放。不再从A接收数据。但由于TCP连接是双向的,因此B仍然可以向A发送数据。

      3)第三波:如果仍未发送数据,B将继续发送数据,完成后将向A发送连接释放请求,B将进入LAST-ACK状态。

      第四波:A收到释放请求后,向B发送确认,此时,A进入时间等待状态。状态持续2MSL(最大生存期,指段落在网络中存活的时间,加班会被浪费时间,在 该 期间 内 没有 再 提出 关于 B 的 请求,进入封闭状态。当B收到回应的确认时,它也进入封闭状态。 即时通讯开发

      TCP协议要点归纳

      1)面向连接:

      连接指在发送数据之前需要在两端建立连接。

      建立连接的方法是握手三次,以便建立可靠的连接。 建立连接是可靠的数据传输的基础。

      2)只支持单轨传输:

      每个TCP传输连接只有两个终端,只能传输数据点到点,并不支持多播和广播模式。

      3)面向字节流:

      与UDP不同,TCP不独立传输单一消息,而是在字节流中传输,而不保留消息边界。

      4)可靠传输:

      对于可靠的传输, 损失的判断, 错误代码, 依靠TCP的段落代码和确认号码.

      为了确保消息传输的可靠性,TCP将每个数据包分配一个序列编号,并确保发送给接收实体的数据包的序列接收。

      然后接收端实体将返回相应的确认(ACK)给成功接收的节点:如果发送端实体在合理调度时间延迟(RTT)内没有收到确认,则相应的数据(假设丢失)将重新传输。

      简单地说,TCP和UDP之间的区别是:

      1)TCP升级提供可靠的连接服务,UDP升级提供不连通、不可靠的服务;

      (二)虽然UDP没有TCP传输精度,但在实时需求高的地方,它可以做一些事情;

      3)数据精度高,速度相对慢,并可选择TCP。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/27836.html

          热门文章

          文章分类