codecamp

UDP 用户数据报协议

一、简介

1.简介

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

2.作用

为了在给定的主机上能识别多个目的地址,同时允许多个应用程序在同一台主机上工作并能独立地进行数据包的发送和接收,设计用户数据报协议UDP。

UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接数据包传输服务。它不提供报文到达确认、排序、及流量控制等功能。 UDP Helper可以实现对指定UDP端口广播报文的中继转发,即将指定UDP端口的广播报文转换为单播报文发送给指定的服务器,起到中继的作用。

二、报文

1.报文格式

2.报文字段

字段 长度 描述
Source Port 2字节 标识哪个应用程序发送(发送进程)。
Destination Port 2字节 标识哪个应用程序接收(接收进程)。
Length 2字节 UDP首部加上UDP数据的字节数,最小为8。
Checksum 2字节 覆盖UDP首部和UDP数据,是可选的。
data octets 变长 UDP负载,可选的。

三、协议对比

UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。

TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务;TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;UDP 具有较好的实时性,工作效率较 TCP 协议高;UDP 段结构比 TCP 的段结构简单,因此网络开销也小。TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用 TCP 传输数据。

四、考题

1.UDP使用( )提供可靠性

A. 网际协议 B. 应用层协议 C. 网络层协议 D. 传输控制 正确答案:B UDP本身不提供可靠性,可以在应用层上加一些ACK之类的可靠性机制

2.小于( )的TCP/UDP 端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。

A. 256

B. 512

C. 1024

D. 2048

正确答案:C

3.TCP/IP端口占据两个字节,0~65535。端口分为三类:

1.公共端口(0~1023),由IANA机构分配,也叫“well known ports”;

2.注册端口(1024~49151),由公司或者其他机构向互联网名称与数字地址分配机构(ICANN)登记的端口号;

3.动态端口(49152~65535),客户端使用的端口号,使用时动态分配。

TCP 传输控制协议
SCTP 流媒体控制传输协议
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

MPLS层协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }