您的位置  > 互联网

目录用户数据报协议简介(18页珍藏版)

1、UDP是User的缩写,中文名为用户数据包协议。 它是OSI参考模型中的无连接传输层协议,提供简单且不可靠的面向事务的信息传输服务。 它是 IETF RFC 768,它是 UDP 的官方规范。 目录 用户数据报协议介绍 使用UDP UDP头 UDP协议的几个特点 化学中的UDP UDP vs TCP UDP协议的应用 UDP编程 1. 1. 编写UDP程序的步骤 2. 2. .c程序内容 3. 操作示例程序 4 . 操作UDP程序 用户数据报协议简介 使用报头 化学中UDP协议与TCPUD的几个特点

2. P 协议 UDP 程序设计的应用 1. 1. 编写 UDP 程序的步骤 2. 2. .c 程序内容 3. 运行示例程序 4. 运行 UDP 程序 展开 编辑本段 用户数据报协议 UDP 在 ISO 参考模型中一种无连接传输层协议,提供简单且不可靠的面向事务的信息传递服务。 UDP协议基本上是IP协议和上层协议之间的接口。 UDP 协议使用端口来识别同一设备上运行的多个应用程序。 编辑本段简介 UDP协议的全称是用户数据报协议。 在网络中,它也像TCP协议一样用于处理UDP数据包。 在 OSI 模型中,第四传输层是 IP 协议之上的层。 UDP的缺点是它不提供数据报分组、数据包的组装和排序,即

3. 意味着消息发出后,无法知道是否已经安全、完整地到达。 UDP用于支持需要在计算机之间传输数据的网络应用程序。 许多涉及网络视频会议系统的客户端/服务器网络应用程序都需要使用UDP协议。 UDP协议自诞生以来已经使用了很多年。 尽管它最初的辉煌被一些类似的协议所掩盖,但即使在今天,UDP仍然是一个非常实用可行的网络传输层协议。 与众所周知的 TCP(传输控制协议)协议一样,UDP 协议直接位于 IP(互联网协议)协议之上。 根据OSI(开放系统互连)参考模型,UDP和TCP都是传输层协议。 UDP协议的重要作用是将网络数据流量压缩成数据报的形式。典型的数据报是二进制数据的传输单元。

4 位。 每个数据报的前8个字节用于包含报头信息,其余字节用于包含具体的传输数据。 编辑此段落以使用 UDP。 选择要使用的协议时,选择 UDP 时必须小心。 在网络质量不是很理想的环境下,UDP协议丢包会比较严重。 但由于UDP的特点:它不是连接型协议,因此具有资源消耗低、处理速度快的优点。 因此,音频、视频和普通数据通常都使用UDP进行传输,因为即使偶尔丢失一两个数据包也不会对验收结果产生太大影响。 例如我们用于聊天的ICQ和QQ就使用UDP协议。 编辑本段UDP头 UDP头由4个字段组成,每个字段占用2个字节,如下: UDP源端口号 目的端口号 数据报长度 校验值UDP协议使用

5、端口号为不同的应用保存了自己的数据传输通道。 UDP和TCP协议使用这种机制来支持多个应用程序同时发送和接收数据。 数据发送方(可以是客户端或服务器)通过源端口发送UDP数据报,数据接收方通过目的端口接收数据。 有些网络应用程序只能使用预先为其保留或注册的静态端口; 而其他网络应用程序可以使用未注册的动态端口。 由于UDP头使用两个字节来存储端口号,因此端口号的有效范围是从0到65535。一般来说,大于49151的端口号代表动态端口。 数据报的长度是指包括报头和数据部分在内的总字节数。 由于报头的长度是固定的,所以该字段主要用于计算变长数据部分(也称为数据负载)。

6. 最大报告长度因运行环境而异。 理论上,包含报头的数据报的最大长度为 65535 字节。 然而,一些实际应用经常限制数据报的大小,有时将其减少到8192字节。 UDP协议利用报头中的校验值来保证数据的安全。 一方面,校验值是在数据发送方通过特殊算法计算出来的,传输到接收方后需要重新计算。 如果数据报在传输过程中被第三方篡改或者由于线路噪声等因素而损坏,则发送方和接收方的校验和计算将不匹配,因此UDP协议可以检测是否发生了错误。 这与 TCP 协议不同,TCP 协议需要校验值。 很多链路层协议都提供错误检查,而说到流行的以太网协议,你可能会想为什么UDP也提供校验和。因素在链路层下面

7. 协议可能无法对源和终端之间的某些通道提供错误检测。 虽然UDP提供错误检测,但是当检测到错误时,UDP并不进行纠错,而只是简单地丢弃损坏的报文段,或者向应用程序提供警告消息。 编辑本段UDP协议的几个特点 (1)UDP是一种无连接协议。 源端和终端在传输数据之前不建立连接。 当UDP想要传输时,它只是从应用程序中获取数据,并尽力将其快速扔掉。 在发送端,UDP传输数据的速度仅受应用程序生成数据的速度、计算机的能力和传输带宽的限制; 在接收端,UDP将每个报文段放入队列中,应用程序每次从队列中读取每个报文段。 读取消息段。 (2)由于传输数据时没有建立连接,所以不需要维护连接状态,包括发送和接收状态等,所以

8. 服务器可以同时向多个客户端传输同一条消息。 (3)UDP数据包的报头很短,只有8个字节,与TCP的20个字节的数据包相比,额外的开销很小。 (4)吞吐量不受拥塞控制算法调节,仅受应用软件产生数据的速率、传输带宽、源端主机性能的限制。 (5)UDP采用尽力而为传送,即不保证可靠传送,因此主机不需要维护复杂的链路状态表(里面有很多参数)。 (6)UDP是面向消息的。 发送方的UDP阶段应用程序移交的消息在添加报头后向下传递到IP层。 既不进行分割也不合并,但这些数据包的边界被保留,因此应用程序需要选择合适的数据包大小。 虽然UDP是一种不可靠的协议,但它是分发信息的理想协议。例如,在屏幕上

9、报告股票行情、在屏幕上显示航空信息等。UDP还用于路由信息协议RIP(RIP)来修改路由表。 在这些应用程序中,如果消息丢失,几秒钟后它将被新消息替换。 UDP 广泛应用于多媒体应用中。 例如,该公司开发的软件是一种通过互联网向客户实时传输预先录制或现场音乐的软件。 该软件使用的音频协议在 UDP 上运行。 大多数网络电话软件产品也在 UDP 之上运行。 编辑=本段化学

10. e,尿苷二磷酸,一种嘧啶核苷酸,由碱基、尿嘧啶和核糖组成。 主要用作RNA合成(转录)的原料。 另外,UDP也是DTP能耗的产物。 其功能与ADP类似,但不如ADP常见。 参与微生物肽聚糖的合成等编辑本段UDP与TCP协议的重要区别在于它们如何实现信息的可靠传输不同。 该协议包含特殊的交付保证机制。 当数据接收方收到发送方的信息后,会自动向发送方发送一条确认信息; 发送方只有在收到确认消息后才会继续传输其他信息,否则会等待直到收到确认。 与 TCP 不同,UDP 协议不提供数据传输的保证机制。如果在从发送方到接收方的传输过程中

11. 当数据报丢失时,协议本身无法做出任何检测或提醒。 因此,人们通常称UDP协议为不可靠传输协议。 与TCP协议相比,UDP协议的另一个区别是如何接受多个意外数据报。 与 TCP 不同,UDP 不保证数据发送和接收的顺序。 例如,客户端上的应用程序向服务器发送以下 4 个数据报:D1 D22 D333 D4444。 不过UDP可能会按照以下顺序将接收到的数据提交给服务器上的应用程序: D333 D1 D4444 D22 其实UDP协议的这一部分很少会出现这种乱序,通常只在网络非常拥塞的情况下出现。本段UDP协议的应用 既然UDP是一种不可靠的网络协议,那么它有什么价值或者用途呢?

12、有必要吗? 事实上,在某些情况下UDP协议可能会变得非常有用。 因为UDP具有TCP无法比拟的速度优势。 虽然TCP协议中嵌入了各种安全功能,但在实际执行过程中会占用大量的系统开销,这无疑会严重影响速度。 另一方面,UDP取消了信息的可靠传输机制,将安全、排序等功能交给上层应用程序,大大减少了执行时间,保证了速度。 UDP 协议最早的规范于 1980 年发布。尽管已经存在很长时间,UDP 协议仍然在主流应用中发挥着作用。 许多涉及视频电话会议系统的应用已经证明了UDP协议的价值。由于这些应用更注重实际性能而不是可靠性,因此认为为了获得更好的使用效果(例如更高的使用性能)

13、画面刷新率)往往会牺牲一定的可靠性(例如会议质量)。 这就是UDP和TCP这两个协议之间的权衡。 根据不同的环境和特点,两种传输协议都将在未来的网络世界中发挥更加重要的作用。 编辑本段UDP编程 UDP程序 1.编写UDP程序的步骤 (1)用()创建一个UDP,第二个参数是。 (2) 初始化结构体变量并赋值。 结构体定义:; ; 正弦值

14. 奥特; ; 字符; ; 这里使用“08”作为服务程序的端口,使用“”作为绑定的IP地址,即任意主机上的地址。 (3) 使用bind()绑定上面定义的IP地址和端口。 这里我们检查bind()是否执行成功,如果出错则退出。 这样可以防止服务程序重复运行。 (4)进入无限循环程序,使用()进入等待状态,直到接收到客户端程序发送的数据,然后处理接收到的数据并将反馈发送给客户端程序。 这里,接收到的数据直接发送回客户端程序。 2..c程序内容###

15. # # # # 80 # 8888 void (int , *, ) int n; 伦; 字符; for(;) 长度 = ; /* 数据 */ n = (, mesg, , 0, , &len); /*se

16. nt数据返回*/(,mesg,n,0,,len); int main(void) int ; , ; = (, , 0); /* a */ /* 初始化 */ bzero(&, (); . = ; .

17.. = htonl(); 。 = htons(); /* 绑定并端口到 */ if(bind(, ( *)&, () = -1) (绑定错误); exit(1); (, ( *)&, (); 0; UDP 程序 1.编写UDP客户端

18、nt 程序的步骤 (1) 初始化结构体变量并赋值。 这里使用“8888”作为连接的服务程序的端口,从命令行参数中读取IP地址,并判断IP地址是否符合规定。 (2)使用()建立UDP,第二个参数是。 (3) 使用()与服务程序建立连接。 与TCP协议不同,UDP的()没有与服务程序进行三向握手。 上面说的是UDP是非连接的,但实际上也是可以连接的。使用连接的UDP,可以将错误信息直接返回给用户程序,从而避免了因接收不到数据而导致的call()等待,使得好像客户端程序没有反映相同的情况

19. (4) 向服务程序发送数据。 由于使用的是连接的UDP,所以使用write()而不是()。 这里的数据直接从标准输入读取用户输入。 (5) 接受服务程序发回的数据,同样使用read()而不是()。 (6) 解析接收到的数据,这里直接输出到标准输出。 .c程序内容:########80#8888 void (FILE *fp, int,

20. *, ) int n; 字符,+1; /* 到 */ if((, ( *), ) = -1) ( 错误); 退出(1); while(fgets(, , fp) != NULL) /* 读取一行并发送到 */ w

21. rite(, , (); /* 数据来自 */ n = read(, , ); if(n = -1) (读取错误); exit(1); = 0; /* */ fputs(, ); int main(int argc, char *argv) int ; ; /* 检查参数 */

22. if(argc != 2) (用法:n); 退出(1); /* 初始化 */ bzero(&, (); . = ; . = htons(); if((, argv1, &.) = 0) (%s 不是有效的 , argv1); exit(1); = (A

23., , 0); (stdin, , ( *)&, (); 0; 运行示例程序 1. 编译示例程序。使用以下命令编译示例程序: gcc -Wall -o .c gcc -Wall -o .c 之后编译,生成两个可执行程序 2、运行UDP程序执行./&命令启动服务程序,我们可以使用-ln命令观察服务程序绑定情况

24. 指定IP 地址和端口。 一些输出信息如下:(仅)Proto Recv-Q Send-Q Local State tcp 0 0 0.0.0.0:32768 0.0.0.0:* tcp 0 0 0.0.0.0:111 0.0.0.0 :* tcp 0 0 0.0。 0.0:6000 0.0.0.0:* TCP 0 0 127.0.0.1:631 0.0.0.0:* udp 0 0 0.0.0.0:32768 0.0.0。

25. 0:* udp 0 0 0.0.0.0:8888 0.0.0.0:* udp 0 0 0.0.0.0:111 0.0.0.0:* udp 0 0 0.0.0.0:882 0.0.0.0:* 可以看到有内容为“0.0.0.0:8888”表示服务程序运行正常,可以接受主机上任意IP地址的数据,端口为8888。此时如果再次执行./&命令,将会出现看到如下信息: 绑定错误:正在使用,说明有一个服务程序已经在运行。 运行UDP程序执行./127.0.0.1命令启动客户端程序,使用127.0.0。

26. 1 连接服务程序,执行效果如下:Hello, World! 你好世界! 这是一个测试 这是一个测试 d 所有输入数据都正确并从服务程序返回。 按ctrl+d结束输入并退出。 程序。 如果服务程序没有启动而执行客户端程序,会看到如下信息: $ ./127.0.0.1 test read error: 表示指定的IP地址和端口没有被服务程序绑定,客户端程序将退出。 这就是使用()的好处。 注意,这里的错误信息是在向服务程序发送数据后收到的,而不是调用()时收到的。 如果您使用程序捕获数据包,您会发现收到 ICMP 错误消息。