当前位置:首页 > 嵌入式 > 嵌入式动态
[导读]16为UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度(64KB)

16为UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度(64KB)

检验和:如果校验和出错,就会直接丢弃(检验的是把首部和数据部分一起都检验)

校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还要在重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检验是否出错。

源端口号:在对方回信是选用,不需要时可用全0

目的端口号:在终点交付报时必须要用到

长度:UDP用户数据报的长度,其最小值是8(仅有首部)

UDP的特点

无连接:直到对端的IP和端口号就直接进行传输,不需要建立连接

不可靠:没有确认机制,没有重传机制;因为没有网络故障该段无法发送到对方,UDP协议层也不会给应用层返回任何错误信息

面向数据报:不能够灵活的控制读写数据的次数和数量

控制选项较少,数据传输过程中延迟小,数据传输效率高

面向数据报

应用层交给UDP多长的报文,UDP原样发送,既不会拆分也不会合并

例:用UDP传输100个字节的数据

如果发送端调用一次sendto,发送100个字节。那么接收端也必须调用对应的一次recvfrom,接收100字节;而不能循环调用10次recvfrom,每次发送10个字节

UDP的缓存区

UDP没有发送缓存区,调用sendto之后会直接交给内核,由内核·将数据传给网络层协议进行后续的传输动作。因为UDP是不面向连接的,所以没有重发机制,也就不需要发送缓存区将已经发送的数据保存下来为了发送失败进行重传做准备

UDP具有接收缓存区。但是这个接收缓存区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;如果缓存区满了,在到达的UDP数据就会被丢弃

UDP的使用注意事项

UDP协议首部中有一个16位的最大长度,也就是说一个UDP能传输的数据的最大长度是64K(包含UDP首部)。但是64K在当今的互联网环境下,是一个非常小的数字。如果我们需要传输的数据超过64K,就需要应用层手动的分包,多次发送,并在接收端拼装

UDP首部中校验和的计算方法有些特殊。在计算校验和时,要在UDP用户数据报之前增加12个字节的伪首部

伪首部既不向下传输也不想上递送,而仅仅是为了计算校验和

与IP数据报的校验和只检验IP数据报的首部不同,UDP的校验和是把首部和数据部分一起都检验

伪首部:

基于UDP的应用层的协议

NFS:网络文件系统

TFTP:简单文件传输文件协议

DHCP:动态主机配置协议

DNS:域名解析协议

对于UDP书写服务器的思路

由于UDP是无连接的,所以对于两个处于同一局域网下计算机的进程之间通信,是不需要两台计算机之间的进程进行连接的,对于UDP使用的接口是需要包含知道从哪里接收消息的,要发送消息到哪里的。

实现本地通信

服务器

只需要在服务器创建一个套接字

使该套接字对于本地地址(127.0.0.1)进行绑定,并且绑定一个端口号(1024--65535)就行

绑定本地地址是为了对于本地计算机的两个进程进程通信,而绑定端口号是为了绑定一个进程,是为了对于客户端进行发送消息到服务器的时候,可以找到服务器

然后就接受客户端发来的消息

对于客户端的消息进行处理然后就可以再次将处理后的消息进行返回

客户端

绑定一个套接字

为了绑定一个进程,可以和服务器进行通信,将消息发送过去的时候要让服务器知道是哪一个进程再和他进程通信

客户端只需要向服务器发送消息

然后再次从客户端接收消息就好了,不需要考虑要进行连接

实现处于同一局域网下的不同主机间进行通信

和本地通信的一致,只是对于套接字绑定的ip地址不一样了

也对于套接字要绑定该局域网的ip地址以及一个端口号,不需要在绑定本地地址(127.0.0.1)

这样的话处于同一局域网下的计算机的进程就可以进行通信了

对于客户端来说没有任何改变,仍然是只需要知道服务器的ip和端口号就行了

对于UDP服务器要注意的问题

启动客户端

启动客户端的时候必须给客户端输入一个ip地址和端口号,这个ip地址和端口号也就是要知道客户端要发送消息给哪一个服务器进行发送

启动服务器

必须要给服务器绑定一个ip地址和端口号,也就是要注意该服务器处于该计算机上的哪一个进程上

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭