tcp和udp的区别(TCP和UDP各有什么特点,两者有什么
数据传输——传输层协议原理
在互联网上,每个网络数据包的传输都遵循以下五层结构:
TCP(传输控制协议)和UDP(用户数据报协议)都是传输层协议,是一组在Internet上使用的通信协议,用于在网络内或网络之间传递服务或数据包。它通常称为Internet协议套件。
· 传输层提供一个网络连接以同时允许多个应用程序。就像街道名称带有门牌号码一样,传输层在每个网络连接中的计算机上创建65000个端口。
· 这些端口可以被计算机上的应用程序保留和使用。
· 一个应用程序可以根据需要同时使用多个端口。
传输层协议实现目的
例如,应用程序保留了端口12437,以将消息发送到其他计算机上的端口80。每当应用程序层创建消息时,都会在传输层上传递消息。在这一层中将消息包装在一个段中。该段包含一些其他信息,例如源端口和目标端口。创建段后,该段将传递到网络层以进行进一步处理。
· 当它从网络层传递到传输层时,网段将显示在接收方。
· 将检查网段以确定目标端口。
· 然后,将邮件解包并传递到端口80。
传输协议的重点是使通信独立于底层网络技术,只需关注端到端通讯,而不用考虑路由或媒体访问。
什么是TCP?
TCP是一种面向连接的点对点传输通信协议,它以有序顺序将数据包作为非结构化字节流发送。TCP通过使用序列号和确认消息,从发送节点提供有关传输到目标节点的数据包的传递的信息。TCP确保数据的可靠性,端到端传递,重新排序和重传,直到达到超时条件或接收到数据包的确认为止。
此外,TCP提供流控制机制来维持通过高速网络传输的高数据包,并且TCP协议通过触发数据包的重传直到接收到无错误的确认,从而提供错误检测和丢失的数据功能。TCP协议与应用程序层协议(例如(FTP)文件传输协议,(SMTP)简单邮件传输协议和(HTTP)超文本传输协议)保持通信。
什么是UDP?
用户数据报协议(UDP)是一种无连接的传输层通信协议,用于建立低容忍和丢失等待时间的连接,以在网络内或网络之间传递服务或数据包。它与Internet协议套件结合在一起,可以替代TCP协议。
UDP会构造一个数据报包,并使用IP端口号和数据包以及可选的校验和功能来寻址该数据报包,以验证完整数据到达的接收。由于UDP协议是简单协议,可以在发送方端决定是否重发数据包,以在数据传输上以低延迟换取高可靠性。由于网络广播功能可以将数据包广播到同一网络上的某些计算机,UDP减少了总体网络通信量,并且无需在网络上进行重复。由于UDP是无连接协议,数据内容包的传递或顺序会有所不同。
UDP与更高级别的协议(例如琐碎的文件传输协议,实时流协议,简单的网络协议和域名系统查找)结合使用,以管理整个网络上的数据传输服务。
TCP Vs UDP协议
(1)两者类比
UDP:有人向快递员传递了一条消息,该消息会在他们走开之前尽力向接收者的方向扔。
TCP:有人向快递员传递消息,然后在信笺上写上序号,进行复印,然后将原件尽可能向接收者方向扔,然后等待答复,然后将其递回给发送者。如果他们没有收到答复,则他们再制作一份并发送。当他们收到答复时,将其交给发件人,并丢弃其副本。如果答复不正确,则在将其交给发件人之前,他们会按正确的顺序排列它们。
在UDP情况下,发件人在邮件传递中承担更多责任。在TCP情况下,快递员承担更多责任。在TCP情况下,发件人必须向快递员“支付更多”的内存,延迟和开销。在某些情况下,为保证消息传递而增加的成本是不值得的。
(2)两者区别
(3)连接建立方式
TCP具有类似的建立协议,称为“三向握手”。“客户端”(有人要求连接)将向正在监听这些消息的“服务器”发送“SYN”(同步请求)消息;如果服务器决定接受该请求,它将发送回“SYN/ACK”消息,以确认先前的请求并请求其自己的通信“返回通道”。然后,客户端发送回“ACK”消息,以确认服务器的请求,并建立双向通信通道。
可以将UDP视为对讲机。按下一个按钮并开始通话,任何听过该频率的人都将听到它,除非他们也使用相同的频率进行通话。
(4)区别总结
数据传输功能
TCP支持在两个主机之间建立牢固的连接以交换流中的数据。TCP保证以与服务器发送给用户的顺序相同的方式传递数据,反之亦然。TCP是一种面向连接的协议。UDP是无连接的,并且非专用协议不会检查接收方主机的准备情况。
可靠性
TCP的可靠性相对较高,因为它可以确保在传输过程中丢失数据部分的情况下进行消息确认和数据重传。机不会丢失任何丢失的数据。另一方面,UDP不提供消息确认,超时或重传功能的概念。不存在有关分组是否已到达接收方或在传输中丢失的通信。
序列
TCP传输数据包的顺序与接收到的顺序相同。万一数据包以错误的顺序到达,TCP会对它们重新排序并以正确的顺序传递。在UDP的情况下,以特定顺序发送的消息可能会或可能不会在交付主机时得到维护。传输分组的顺序或顺序是不可预测的。
连接
TCP连接非常重要,它需要将近三个数据包才能进行适当的套接字连接,并且可以处理拥塞控制和可靠的传递。另一方面,UDP连接是轻量级的,可传输通过特定IP设计的层。没有连接正在跟踪或排序消息。
数据流
传输控制协议以字节流的形式读取数据,并将消息传输到段边界。UDP消息包含一一发送的数据包,并在到达时检查其完整性。
传输速度
与UDP相比,TCP的速度较慢,因为它检查错误并重新传输数据包。
标头大小
标头的TCP大小为20个字节,而UDP为8个字节。但是,它们具有公共标头字段,即源点,目标点和校验和。
其他协议的使用
由其他协议使用FTP,SMTP,HTTP,HTTP,Telnet,TCP协议和TFTP,SNMP,DNS,DHCP,RIP,VOIP使用UDP协议。
错误检测
传输控制协议通过校验和检测错误并执行错误恢复。如果有任何数据包有误,则接收者不会确认它们,进而触发主机/发送者的重新传输。
这种机制称为PAR(带重传的肯定确认)。由于TCP比UDP慢,TCP适用于不需要高速或传输时间较长的应用程序。
关于错误检测和错误恢复,UDP会尽力而为。该协议还支持错误检测。但是,校验和检测到的错误数据包将被丢弃。UDP不会尝试重新传输数据包。
UDP不尝试重发数据包的原因是该协议通常用于对时间敏感的应用程序,例如语音传输,游戏等。尝试进行重发时,恢复尝试毫无意义,并且数据包被接收,它们将无用。
总结
TCP/UDP协议,是传输层的标准协议,根据应用的场景和需求来决具体使用何种协议,是网络编程的基本规律,根据不同场景选择合适的协议。
TCP应用场景:
效率要求相对低,但对准确性要求相对高的场景。例如:文件传输、收发邮件、远程登录。
UDP应用场景:
效率要求相对高,对准确性要求相对低的场景。例如:视频会议等。
以上是我的浅薄之见,欢迎指正,谢谢!