网络协议之UDP 多播

UDP: User Datagram Protocol(用户数据报协议)

  从另一方面说,UDP要简单得多。它做了IP所做的工作,但又增加了端口的概念,因此您可以根据IP地址将消息发送给特定收件人。它不需要排序、连接、双向通信或确认。

  您可能认为UDP是不可靠的,因为如您所知,TCP被认为是同类协议中最可靠的。但实际上,在通过相同的网络段,或者在通过具有良好质量调整并且没有过多通信量的LAN时,UDP还是非常可靠的。如果没有数据包遗漏并且这些数据包是按顺序到达的(在短LAN链接上,这是最常出现的情况),则无需进行任何数据包重发,因为所有确认和围绕着TCP的等待都只是一种开销浪费,并且会产生延时。对于可以忍受数据包丢失的应用程序(比如说,实时音频和视频通信),UDP通常是一个好的选择,即使在不怎么好的网络上也是如此。还可以将UDP用于短消息和通知。例如,DHCP和DNS都使用UDP。值得关注的是,Unix Network File System(NFS)在LAN上使用的也是UDP。尽管您认为文件系统应该使用可靠的TCP连接,但NFS的实现者们认为他们可以使用UDP获得更好的性能,并构建他们自己的确保可靠性的机制,这主要由应用程序决定。

  顺便说一句,UDP之所以称为“用户数据报协议”是因为它是由操作系统的人设计的。“数据报”只是“数据包”的另一种说法。“用户”在这里并不意味着像您这样的用户;它表示计算机上的一个程序,该程序不是操作系统的一部分。人们认为IP是低级的,它由编写部分OS的人使用,尽管UDP提供了大多数类似功能(数据报),但它仍被设计用于“用户”(非OS)程序。

  多播

  在这里,当暗示IP(以及UDP和TCP)将数据包从某个网络上的设备发送到另一个设备时,我稍微简化了一下TCP/IP/UDP的讨论。更确切地说,IP将数据包从一个IP地址发送到另一个IP地址。多播的诀窍在于同一时间将相同数据包发送到多个设备,某些IP地址可以设计为多播地址,并被设计为同一时间可用于许多设备。

  关于IP多播,我知道的第一件事是只存在UDP多播,没有TCP多播这回事。为什么呢?多播的重点是提高网络效率,将同一数据包发送给尽可能多的可能未知的计算机。但是每个TCP连接可能需要重发不同的丢失的数据包,或者可能存在不同延迟、不同顺序的到达和数据包集。因此,为每个可能的设备管理和发送所有数据包是与资源有关的,甚至可能违背使用多播的初衷。(这是无论无何也不可能的,因为多播无法知道数据包实际发往的地方。)

  此外,根据词语的逆构法,常规的非多播UDP(和TCP)消息被称为单播。

  下一件需要知道的事情是,多播通常不是通过路由器发送到另一个网络的。其中的一些原因如下:

  多数多播数据包都有一个很低的TTL:所有IP数据包都有一个生存时间,即TTL。与DNS记录不同,IP数据包的TTL是指数据包到达其目的地所制造的最大网络跳数。单播数据包通常允许跨越大约30个网络(即被发送或“跳跃”29个路由器)。跨越网络很少超过15个跳跃,因此,该限制实际上扼杀了陷入配置不好的网络中的循环的数据包。但大多数发送多播的应用程序将TTL设置为一个较低的数值,通常为0(那儿的消息甚至不需要离开初始设备)、1(消息只能到达本地网络上的计算机)或者2(消息将通过一个路由器)。让打算多播到未知机器的应用程序通过整个校园网络的情况是很少见的,在整个Internet上更少见。

  多数路由器上设置的TTL阈值很高:许多网络路由器,特别是WAN路由器和Internet网关路由器,有一个更高的TTL阈值设置,因此,它们不会发送TTL低于(比如说)15的多播数据包。这样可以阻止本地网络以外的多播的意外泄露。

  路由器根本不能配置用于路由多播,或者只能为特定地址配置,抑或用于组播数据包。

  UDP多播看起来可能有点奇怪,但它实际上比您想象得更普通。它不能用于Web视频站点,比如YouTube,因为这些站点需要在用户需要时立刻发送视频,而不是在同一时间给所有用户发送视频,并且UDP多播不能用于VoIP通信量。但是,可将UDP多播用于应用程序中的许多发现和自动配置,如Skype、iTunes和uPnP。还可以将它用于ALUI门户的少数地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值