UDP协议的详细说明

1、简介

UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议。尽管UDP提供了报头和有效负载完整性验证(通过校验和),但它不能保证将消息传递到上层协议,并且UDP层在发送后将不保留UDP消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。

UDP使用具有最少协议机制的简单无连接通信模型。 UDP提供数据完整性和端口号的校验和,用于在数据报的源和目标处解决不同的功能。它没有握手对话,因此它使用户程序暴露于基础网络的任何不可靠方面。如果需要在网络接口级别进行纠错,则应用程序可以使用为此目的设计的传输控制协议(TCP)。

总结:

UDP是基于IP的简单协议,一种不可靠的协议。

UDP的优点:简单而轻巧。

UDP的缺点:没有流控制,没有响应确认机制,不能解决丢包,重传和顺序错误的问题。

此处应注意,并非所有使用UDP协议的应用程序层都不可靠。应用程序可以自己实现可靠的数据传输。通过添加确认和重传机制,使用UDP协议的最大功能是速度。快。

2、 UDP协议

UDP是基于IP的简单协议。建议查看IP协议“ IP协议的详细说明”的相关内容。

源端口和目标端口,理论上,端口号可以为2 ^ 16。因为它的长度是16位。有关端口的详细信息,请参见下一章。

长度占用2个字节,并标识UDP标头的长度,包括标头长度和数据长度。它可以长达65535个字节。但是,当普通网络正在传输时,长协议不能一次传输(涉及MTU问题),因此必须对数据进行分段。

校验和:校验和,包括UDP标头和数据部分。这是一个可选选项。并非所有系统都检查和检查UDP数据包上的数据(必须说相对于TCP协议),但是RFC标准要求发送方应计算校验和。

UDP校验和涵盖UDP协议标头和数据亚博pt网页版 ,这与IP校验和不同。 IP协议校验和仅覆盖IP数据头,而不覆盖所有数据。 UDP和TCP都包含一个伪标头,用于计算校验和。

伪报头甚至包含IP协议中包含的信息,例如IP地址。目的是允许UDP再次检查数据是否正确到达目的地。如果发送方未打开校验和选项泛亚时时乐 ,而接收方计算出有错误的校验和,则UDP数据将被静默丢弃(无法保证传递),并且不会生成任何错误消息。

Wireshark数据包捕获分析

链接:pan.baidu.com/s/1O6MQUZRsEy9YkyvZNpBqhQ提取代码:quxv

过滤条件

udp.port == 5007

3、端口

端口号是16位非负整数,范围是0-65535。此范围分为三个不同的端口号段。端口号由互联网号码分配机构(IANA)分配确定

众所周知/标准的端口号,范围是0-1023。在Unix操作系统上,使用这些端口之一需要超级用户操作权限

寄存器端口号,范围是1024-49151。这是用于IANA注册服务的注册端口。

私有端口号,范围是49152-6553。它没有正式指定用于任何特定服务,并且可以用于任何目的。这些端口也可以用作临时端口,并且主机上运行的软件可以根据需要使用这些端口动态创建通信端点。

端口的功能仅仅是区分不同的应用程序。当计算机接收到数据报时,它将根据不同的端口将数据发送到不同的应用程序。因此,上面提到的互联网分配号码授权机构(IANA)分配。

有关详细的分发规则,您可以访问以下网站查看

iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

以端口80为例。端口80对HTTP(HyperTextTransport协议)开放,这是浏览Internet时最常用的协议。它主要用于WWW(万维网),用于在万维网上传输信息。协议。

当然,端口不是唯一用来区分不同应用程序的因素。实际上,如果两个数据报通过端口80到达服务器,则这两个数据报需要发送到不同的应用程序。因此,仅根据端口号确定消息显然是不够的。 Internet通常使用源IP地址,目标IP地址,源端口号和目标端口号来区分。如果其中之一不同,则将其视为不同的细分。这些也是解复用和复用的基础。本文将不详细解释解复用和复用。

这部分内容也适用于TCP协议的端口部分。

4、 UDP和ARP之间的交互

这是一个鲜为人知的细节。这是针对某些系统实现的。 ARP缓存仍为空时。在发送UDP之前,必须先发送ARP请求以获得目的主机的MAC地址。如果UDP数据包足够大,则必须由IP层对其进行分段。第一个片段将发送ARP查询请求,所有片段将等待直到查询完成后再发送。真的是这样吗?

结果,某些系统将为每个片段发送ARP查询,所有片段都在等待,但是当接收到第一个响应时,主机仅发送最后一个数据片段并将其丢弃。除了其他方面,这确实令人难以置信。这样,由于碎片化数据无法及时组装,接收主机将丢弃一段时间内无法组装的IP数据包,并发送具有组装超时的ICMP数据包(实际上,许多系统会不会产生此错误),以确保接收主机自己的接收缓冲区中未装满永远不会被汇编的片段。

5、 UDP适用方案

UDP协议通常用作流媒体应用程序,语音通信和视频会议中使用的传输层协议。许多基于Internet的电话服务也使用VOIP(基于IP的语音),这些服务也基于UDP,实时视频和音频运行。流协议旨在处理偶尔丢失的数据包,因此,如果重新传输丢失的数据包,则仅质量会略有下降,而不会出现较大的延迟。

众所周知的基础DNS协议也使用UDP协议。这些应用程序或协议之所以选择UDP,主要是因为以下几点

速度很快。使用UDP协议时,只要应用程序将数据传输到UDP,UDP就会将该数据打包到UDP段中并立即将其传输到网络层。但是使用udp协议,TCP具有拥塞控制功能。发送前判断Internet的拥塞情况。如果Internet极为拥挤,则TCP发送器将被禁止。使用UDP的目的是希望具有实时性能。

无需建立连接。 TCP数据传输之前需要进行三次握手操作,而UDP不需要任何数据传输准备。因此,UDP在建立连接方面没有延迟。

没有连接状态,TCP需要维护最终系统中的连接状态。连接状态包括接收和发送缓冲区,拥塞控制参数以及序列号和确认号参数。在UDP中,这些参数不可用,并且没有发送缓冲区和接收缓冲区。 。因此,当应用程序在UDP上运行时,某些专用于特定应用程序的服务器通常可以支持更多活动用户。

数据包头的开销很小。每个TCP段都有20字节的报头开销,而UDP只有8字节的开销。

6、 UDP Flood

UDP Flood是一种拒绝服务攻击,攻击者向目标服务器发送大量UDP数据包,目的是使设备的处理和响应能力无法承受。由于UDP泛洪攻击,保护目标服务器的防火墙也可能不堪重负bet360官网 ,导致正常流量的服务被拒绝。

UDP Flood攻击如何工作

UDP泛洪的工作原理主要基于服务器响应发送到其端口之一的UDP数据包所采取的步骤。通常情况下,服务器在特定端口上收到UDP数据包时,将通过以下两个步骤进行响应:

服务器首先检查当前是否正在侦听指定端口上的请求的程序。

如果没有程序在此端口上接收数据包,则服务器将以ICMP(ping)包作为响应,以通知发送方目标不可访问。

UDP泛滥就像旅馆接待员转接呼叫的情况。首先,接待员接听电话,呼叫者要求将其连接到特定房间。然后,接待员需要检查所有房间的清单,以确保客人在房间里并愿意接听电话。如果接待员得知客人没有接听电话,则他们必须再次接听电话使用udp协议,并告诉呼叫者客人将不接听电话。如果所有电话线突然同时发送类似的请求,它们将很快变得不知所措。

由于目标服务器使用资源来检查并响应每个收到的UDP数据包,因此,当收到大量UDP数据包时,目标资源将很快耗尽,从而导致对正常流量的服务被拒绝。

如何防范UDP泛洪攻击?

大多数操作系统都会限制ICMP数据包的响应速率,部分是为了中断需要ICMP响应的DDoS攻击。这种保护措施的一个缺点是,在攻击过程中,合法数据包也可能在此过程中被过滤。如果UDP泛洪的大小足以使目标服务器的防火墙状态表饱和,则在服务器级别上进行的任何保护都将是不够的,因为瓶颈将出现在目标设备的上游。

单击以查看本文所在的相册,STM32F207 Web开发

上一篇 微波烘焙设备使食物更美味!