UDP协议

一、前言

  UDP协议提供端到端的数据传输。
  UDP是基于流的协议,没有消息边界。
  IPv4协议字段用17表示UDP协议。
  端口号用于在传输层协议(如TCP、UDP中标识不同的应用程序,以确保数据包能够正确地路由到目标应用程序,对从IP层进入的数据进行分离到特定协议。
  端口是数字,通常是2字节(0-65535),每个协议有多个端口。
  端口是抽象的,不与主机上的任何物理实体相关。

二、重要字段

头部

  源端口号、目的端口号:都是2字节。
  长度:单位是字节。在UDP中这是一个多余的字段,因为IP数据报中有长度字段。
  校验和:UDP中的校验和覆盖的是IP层的源IP,目的IP,和UDP的整个头部。UDP的校验也是只能判断是否发送到正确目的地。一般在传送过程中不会修改,除非经过NAT。(而IP数据报的校验和每一跳都会变,因为TTL减少)

有效荷载

三、UDP-Lite

  UDP的校验和要么不用,要么就把目的IP和源IP一起包含,太极端。UDP-Life修改传统UDP,只覆盖部分字段。

四、最大UDP数据报长度

  理论上IPv4的UDP数据报最大长度位65507字节,但是实际场景会有各种各样的限制。(如UDP套接字可以设置大小,并且有自己的默认最大长度)

五、数据报截断

  UDP数据报长度大不意味着一定会被读完,编程接口允许指定最大读取长度,超过这个长度将进行数据报截断,多余的数据报丢弃或者留给拼接到下个数据报。

六、限制本地IP地址

  通常,服务器上的任何网络接口(任何IP地址)都可以接收到目的地是该服务器某端口的UDP数据报。然而,有一些IP用作保留,或只限定在本地网络使用,这种情况下,我们需要对本地IP进行限制。
  当服务器建立一个端点时,我们指定一个主机的本地IP地址作为这个端点的IP,只有UDP数据报以这个指定的IP地址作为目的IP时,这个UDP数据报才会被转到这个端点。这样就让一些特殊的IP地址不被暴露在互联网中。

七、限制远端IP地址

  通常,端点会让任何IPv4地址和任何端口的UDP数据报进入(只要它的目的IP正确)。
  我们可以让端点只接受来自指定IPv4地址和端口号的UDP数据报。实际场景:一旦服务器收到了某个客户机的流量,就会立刻加上这个限制,过滤掉来自其他客户机的流量。
  有一些小疑问,见《TCP/IP详解 卷1》356~357页的内容

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容