UDP协议相关内容总结

来源:互联网 发布:数据库三大范式的理解 编辑:程序博客网 时间:2024/06/05 15:49

本篇blog的主要内容就是根据TCP/IP详解中第11章的内容总结的。

首先是一个基本概念,

UDP是一个面向数据报的传输层协议:进程的每个每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。正是这一发送方式,造成了UDP在数据报的发送过程中保持了边界。此处的“保持边界”可以通过一个例子理解:对于UDP协议而言,客户端连续发送数据,此时不管服务器的接收缓冲区有多大,也只能一次一次的接收,这一做法恰好保留了数据报的边界。

与之相对的就是TCP协议,在客户端连续发送数据时,只要服务器缓冲区足够大,可以一次全部接收所有消息,则此时在发送发中存在的边界到了服务器这一端就没有了,这一要对比的一点是TCP传输给IP的数据单元被称为报文段,而UDP的被称为数据报。

由于IP首部中包含有协议字段,因此TCP与UDP程序可以共用相同的端口。UDP首部长为8字节,IP首部长为20字节。UDP支持发送长为0字节的数据。

IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。

IP首部中的标识字段在分片时被复制到每个片中,这一字段用于区分不同的包(packet)。

IP数据报是指IP层端到端的传输单元(在分片之前和重新组装之后),分组是指在IP层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是IP数据报的一个分片。

UDP编程接口允许应用程序指定每次返回的最大字节数(recvfrom函数)。

每个UDP端口都与一个有限大小的输入队列相联系。这意味着,来自不同客户的差不多同时到达的请求将由UDP自动排队。接收到的UDP数据报以其接收顺序交给应用程序。但排队溢出可能造成UDP模块丢弃数据报。

0 0
原创粉丝点击