版权归原作者所有,如有侵权,请联系我们

[科普中国]-用户数据报协议/因特网协议

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

用户数据报协议简介

用户数据报协议(UDP) 在互连的计算机网络环境中规定了分组交换计算机通信的数据报模式。它为应用程序提供一个过程,使之能够在一个最小的协议机制内向其它应用程序发送消息。UDP提供的协议端口能够区分在一台机器上运行的多个程序。也就是说,每个UDP报文不仅传送用户数据,而且包括发送方和接收方的端口号,这使得接收方的可UDP以把报文送到正确的接收进程,而接收进程也可以回送应答报文。UDP使用底层的互连网络协议来传送报文,提供和 IP一样的不可靠的无连接数据报传输服务。它不使用确认信息对报文的到达进行确认,对收到的报文进行排序,也不提供反馈信息来控制机器之间传输的信息流量。所以使用UDP的应用程序要承担全部可靠性和流量控制方面的工作1。

报文格式每个UDP报文分UDP报头和UDP数据区两部分。报头由四个16位长(8字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验和。用户数据报其中包含了8字节固定长度的UDP数据报头和可变长的数据区。其中,数据报头中个字段定义如下:

源端口和目的端口,分别用于标识数据报的源端进程和目的端进程所使用的端口。字段长度为16比特,最大支持64 k个端口号。源端进程不需要目的端返回数据报,源端口字段可设为0

报文长度。该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。实际上通过IPv4协议传输时,由于IPv4的头部信息要占用20字节,因此数据长度不可能超过65507字节(65,535 − 8字节UDP报头 − 20字节IP头部)。在IPv6的jumbogram中,是有可能传输超过65535字节的UDP数据包的。依据RFC 2675,如果这种情况发生,报文长度应被填写为0。

校验和。校验和字段可以用于发现头部信息和数据中的传输错误。该字段在IPv4中是可选的,在IPv6中则是强制的。如果不使用校验和,该字段应被填充为全0。

特点UDP有以下特点:

UDP是无连接的,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。

UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用程序交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,这就是说,应用层交给UDP多长的报文,UDP照样发送,即一次发送一个报文,因此,应用程序必须选择合适大小的报文。若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率。反之,若太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,也降低了IP层的效率2。

UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低,这对某些实时应用是很重要的,在很多的实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但不允许数据有太大的时延。UDP正好适合这种要求。

UDP支持一对一、一对多、多对一和多对多的交互通信。

UDP的首部开销小,只有8个字节。

因特网协议简介IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。因特网协议(Internet Protocol,缩写为 IP),是用于分组交换网络的一种面向数据的协议。IP是在TCP/IP协议中网络层的主要协议,任务是仅仅根据源主机和目的主机的地址传送数据。为此目的,IP定义了寻址方法和数据报的封装结构。第一个架构的主要版本,现在称为IPv4,仍然是最主要的互联网协议,尽管世界各地正在积极部署IPv6。

IP封装数据在IP互联网中传送时会被封装为数据报文。IP协议的独特之处在于:在报文交换网络中主机在传输数据之前,无须与先前未曾通信过的目的主机预先创建好一条特定的“通路”。互联网协议提供了一种“不可靠的”数据包传输机制(也被称作“尽力而为”);也就是说,它不保证数据能准确的传输。数据包在到达的时候可能已经损坏,顺序错乱(与其它一起传送的报文相比),产生冗余包,或者全部丢失。如果应用需要保证可靠性,一般需要采取其他的方法,例如利用IP的上层协议控制。

IP提供的服务由于封装带来的抽象机制,IP能够在各种各样的网络上工作,例如以太网,ATM,FDDI,Wi-Fi,令牌环等等。每个链路层的实现可能有自己的方法(也有可能是完全没有它自己的方法),把IP地址解析成相应的数据链路地址。IPv4使用地址解析协议(ARP),而IPv6采用邻居发现协议(NDP)。

可靠性互联网协议的设计原则,假定网络基础设施本身就是不可靠的单一网络元素或传输介质,并且它使用的是动态的节点和连接。不存在中央监测和性能衡量机制来跟踪和维护网络的状态。为了减少网络的复杂性,大部分网络智能故意地分布在每个数据传输的终端节点。传输路径中的路由器只是简单地将数据报文发送到下一个匹配目的地址的路由前缀的本地网关。

由于这种设计的结果,互联网协议只提供尽力传送,其服务也被视为是不可靠的。在网络专业语言中是一种无连接的协议,相对于所谓的面向连接的模式。在缺乏可靠性的条件下允许下列任何故障发生:

数据损坏

丢失数据包

重复到来

数据包传递乱序;意思是,如果包'A'是在包'B'之前发送的,但B可能在A到达前到达。

互联网协议提供的唯一帮助是,IPv4规定通过在路由节点计算校验和来确保IP数据报头是正确的。这个带来的副作用是当场丢弃报头错误的数据报文。在这种情况下不需要发送通知给任一个终端节点,但是互联网控制消息协议(ICMP)中存在一个机制来做到这一点。

但是,IPv6为了快速传输已经放弃了计算校验和的使用。

对这些可靠性问题的更正是一个上层协议的责任。例如,一个上层协议为了确保按顺序传送可能要缓存数据,直到数据可以传递给应用程序。

除了可靠性问题,互联网及其组成部分的动态性和多样性不能确保任何路径是有能力地或合适地完成所要求的数据传输,即使路径是有效并且可靠的。技术限制之一是在给定的链路上允许的数据包的大小。应用程序必须确保它使用适当的传输特性。这种责任还在于一些在应用层协议和IP之间的上层协议。存在审查的本地连接尺寸最大传输单位(MTU),以及整个预计到目标路径时使用IPv6。IPv4的网络层有自动分片成更小的单位进行传输原始数据报的能力。在这种情况下,IP确实能够为乱序的分片进行顺序排序。

IPv4/ IPv6相互转换协议双协议栈

双协议栈(dual stack )是指在单个节点同时支持 IPv4 和IPv6两种协议栈。由于IPv6和IPv4是功能相近的网络层协议,两者都基于相同的物理平台,而且加载于其上的传输层协议TCP (传输控制协议 )和 UDP(用户数据报文协议)也没有区别,所以可以在一台主机上同时支持 IPv4和IPv6。双协议栈技术的工作原理是:一台主机同时支持 IPv6 和 IPv4 两种协议, 该主机既能与支持 IPv4 协议的主机通信,又能与支持 IPv6 的主机通信。双协议栈是其他 IPv4/ IPv6 互通技术的基础,它有 3 种工作模式 :只运行 IPv6,此时表现为 IPv6 节点; 只运行 IPv4,此时表现为 IPv4节点;同时打开IPv6和 IPv4。

隧道技术

隧道机制就是用 IPv4 封装 IPv6 数据包并且把这些封装了的数据包通过 IPv4 网络送往一个 IPv4 目的节点,目的节点拆封数据包并剥离出 IPv6 数据包。

ISATAP隧道

ISATAP(站点间自动隧道寻址协议 )由 RFC 4212 定义,它是一种地址分配技术,是一主机到主机、 主机到路由器以及路由器到路由器的自动隧道技术, 它可以在 IPv4 网络上创建一个虚拟 IPv6 网络。IPv6 数据包在IPv4 中的隧道封装在ISATAP 主机之间或者ISATAP 主机和 ISATAP路由器之间执行。隧道封装是自动的,意味着当启用了ISATAP 时没必要在主机上应用手动配置。对于ISATAP 主机到ISATAP 路由器的隧道,ISATAP 主机必须首先从可用的路由器列表中找出一个 ISATAP 路由器的IPv4 地址。分配给ISATAP主机和路由器的地址由专用的可聚合全球单播 IPv6 地址和特殊格式的接口标识组合而成。一个 ISATAP 主机上启用的ISATAP 地址使用本地链路前缀 (FE80: : / 10 )。必须给站点内的 ISATAP 操作分配一个可聚合或者本地站点的 / 64 前缀。ISATAP 主机通过在 IPv4 上建立起来的 ISATA 隧道从ISATAP 路由器发送的广播消息中接收 / 64 前缀。ISATAP 在ISATAP?IPv6 地址中嵌入 IPv4 地址。接口标识在IANA(因特网号码分配部门)保留给 ISATAP 的高阶32位 0000: 5EFE后追加 32 位 IPv4 地址 IPv4 兼容隧道3。

6 to4 (IPv6 to IPv4) 隧道

在两个 IPv6 域间建立、操作、管理和支持配置隧道至少需要两个实体的同步,对于某些组织来说有些麻烦。IETF(因特网工程任务组 ) 定义了另一种称为 6t o4 的机制来简化通过隧道在IPv4网络上配置IPv6。 这种机制在由 IPv6节点组成的站点之间采用动态隧道方法,不需要手动地事先调整隧道的源和目的IPv4地址。 IP数据包的隧道封装是根据 6 to 4站点上产生的数据包的目的地址自动完成的。这种机制在站点边缘的边界路由器上启用,6 to 4 路由器必须通过IPv4 路由器基础设施到达其他的6 to 4 站点和6 to 4 路由器。6 to 4 前缀都基于IANA 分配的2002: : / 16地址空间。每个6 to 4站点至少使用一个分配给6 to 4路由器的全球单播 IPv4 地址,IPv4 的 32 位地址被转换为16进制格式后附加在 2002: : / 16 前缀后面。最终表现形式是 2002:IPv4-address: : / 48。6 to 4前缀基于全球唯一的 IPv4地址, 所以没必要在6 to 4站点之间传播/ 48前缀的 IPv6路由。