专栏首页cwl_Java速读原著-TCP/IP(最大UDP数据报长度)

速读原著-TCP/IP(最大UDP数据报长度)

第11章 UDP:用户数据报协议

11.10 最大UDP数据报长度

理论上,I P数据报的最大长度是6 5 5 3 5字节,这是由I P首部(图3 - 1)1 6比特总长度字段所限制的。去除 2 0字节的I P首部和8个字节的U D P首部,U D P数据报中用户数据的最长长度为6 5 5 0 7字节。但是,大多数实现所提供的长度比这个最大值小。

我们将遇到两个限制因素。第一,应用程序可能会受到其程序接口的限制。 socket API提供了一个可供应用程序调用的函数,以设置接收和发送缓存的长度。对于 UDP socket,这个长度与应用程序可以读写的最大 U D P数据报的长度直接相关。现在的大部分系统都默认提供了可读写大于 8 1 9 2字节的U D P数据报(使用这个默认值是因为 8 1 9 2是N F S读写用户数据数的默认值)。

第二个限制来自于T C P / I P的内核实现。可能存在一些实现特性(或差错),使I P数据报长度小于6 5 5 3 5字节。

作者使用s o c k程序对不同U D P数据报长度进行了试验。在SunOS 4.1.3下使用环回接口的最大I P数据报长度是3 2 7 6 7字节。比它大的值都会发生差错。但是从B S D / 3 8 6到SunOS 4.1.3的情况下,S u n所能接收到最大I P数据报长度为3 2 7 8 6字节(即3 2 7 5 8字节用户数据)。在Solaris 2.2下使用环回接口,最大可收发 I P数据报长度为6 5 5 3 5字节。从Solaris 2.2到AIX 3.2.2,发送的最大IP数据报长度可以是65535字节。很显然,这个限制与源端和目的端的实现有关。

我们在3 . 2节中提过,要求主机必须能够接收最短为 5 7 6字节的I P数据报。在许多U D P应用程序的设计中,其应用程序数据被限制成 5 1 2字节或更小,因此比这个限制值小。例如,我们在1 0 . 4节中看到,路径信息协议总是发送每份数据报小于 5 1 2字节的数据。我们还会在其他U D P应用程序如D N S(第1 4章)、T F T P(第1 5章)、B O O T P(第1 6章)以及S N M P(第2 5章)中遇到这个限制。

数据报截断 由于I P能够发送或接收特定长度的数据报并不意味着接收应用程序可以读取该长度的数据。因此,U D P编程接口允许应用程序指定每次返回的最大字节数。如果接收到的数据报长度大于应用程序所能处理的长度,那么会发生什么情况呢?不幸的是,该问题的答案取决于编程接口和实现。

典型的B e r k e l e y版socket API对数据报进行截断,并丢弃任何多余的数据。应用程序何时能够知道,则与版本有关(4.3BSD Reno及其后的版本可以通知应用程序数据报被截断)。

S V R 4下的socket API(包括Solaris 2.x) 并不截断数据报。超出部分数据在后面的读取中返回。它也不通知应用程序从单个UDP数据报中多次进行读取操作。TLI API不丢弃数据。相反,它返回一个标志表明可以获得更多的数据,而应用程序后面的读操作将返回数据报的其余部分。

在讨论T C P时,我们发现它为应用程序提供连续的字节流,而没有任何信息边界。 T C P以应用程序读操作时所要求的长度来传送数据,因此,在这个接口下,不会发生数据丢失。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 速读原著-TCP/IP(局域网输出)

    现在已经做好运行 Tr a c e r o u t e程序并观察其输出的准备了。我们将使用从 s v r 4到s l i p,经路由器b s d i的简单互联网...

    cwl_java
  • 3分钟速读原著《Java数据结构与算法》(三)

    cwl_java
  • 快速学习-Oozie的功能模块介绍

    cwl_java
  • ceph工作原理和安装

    一、概述 Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目。随着云计算的发展,ceph乘上了OpenStack的春...

    小小科
  • Quorum联盟链开发入门

    Quorum是一个许可制的以太坊联盟区块链实现,包含了金融巨头JP摩根开发的一个GETH分支版本,可以在节点之间实现私有和快速的交易。Quorum为保证隐私对节...

    用户1408045
  • leetcode 6 ZigZag Conversion

    The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of ...

    流川疯
  • 【一天一大 lee】按奇偶排序数组 II (难度:简单) - Day20201112

    对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。

    前端小书童
  • 还在为大屏分辨率困扰?图扑提供响应式(自适应)可视化大屏

    数据可视化在当下信息时代已经成为炙手可热的话题,而 B/S 化趋势,也使得许多大屏应用上在网页端出现,今天给大家分享一套不一样风格的大屏页面,与传统深蓝色不同,...

    HT for Web
  • 图文并茂、生动有趣,“数据故事”自动生成系统实现可视化创新

    日前,一款能够自动创建 “数据故事” 的智能在线系统 CalliopeTM,引起了广泛关注。不同于自然语言生成技术,该系统提供了更加有趣强大的功能:能够根据用户...

    AI科技评论
  • 【案例】中国人民银行——结合大数据和复杂网络技术实现企业关联关系计算及图谱展示

    数据猿导读 随着大数据处理技术的逐步成熟和广泛应用,金融机构根据业务发展需要,开始尝试采用大数据和复杂网络技术来建立便捷性、直观性和快速反应的企业关联查询生产系...

    数据猿

扫码关注云+社区

领取腾讯云代金券