数据通讯与网络 第五版第24章 传输层协议-UDP协议部分要点

24.1 介绍

  本章节主要集中于传输层协议的解读,图24.1展示TCP、UDP、SCTP在TCP\IP协议栈的位置

 

24.1.1 服务(Service)

  每个协议都提供不同的服务,所以应该合理正确的使用

  UDP:UDP 是一种不可靠,不面向连接的协议,UDP具有简单,高效的特点,传输过程中的差错控制有应用层来提供

  TCP:TCP是一个可靠,面向连接的协议,适用于那种对传输可靠性要求较高的应用

  SCTP:是一个新的传输层协议,结合了UDP和TCP两者之间的特征

24.1.2 端口号(Port Number)

  像之前章节讨论一样,传输层在协议中承担几个任务。第一是提供基于过程到过程的通讯,这个过程使用端口号来完成,在传输层中,端口号提供了端对端的地址信息,从而允许该层使用多路复用和多路分解。表格24.1 给出了这三种协议比较常见的端口号

24.2 用户数据报协议(USER DATAGRAM PROTOCOL)

  UDP一种不需要连接,不可靠的通讯协议。UDP协议较为简单,如果一个程序想要发送对可靠性要求不高的数据,它可以使用UDP,使用UDP协议发送信息时,发送者和接受者之间的交互会比用TCP协议发送要少。

24.2.1 用户数据报(user datagram)

  UDP 数据包,简称用户数据报,拥有8个字节固定长度的头部,包括四个字段,每个字段2个字节,图24.2 给出了数据报的格式,前两个字段定义了源地址和目的地址的端口号,第三个字段定义了数据报的整个长度,即头部加上数据的长度,数据长度理论上可以达到65535字节,但是实际的长度会比这个少,因为IP数据包的长度最大为65535字节,最后一个字段是可选的校验码

24.2.2 UDP服务

过程到过程的通讯(Process-to-Process Communication)

  UDP使用socket地址提供基于过程到过程的通讯,结合了ip地址和端口号

不需面向连接的服务(Connectionless Service)

  UDP提供不需连接的服务,意味着每个数据报都是一个独立的数据报,即使源地址是一样的,数据报间是没有关联的,数据报不会进行编号,和TCP不同,UDP通讯没有连接创建和连接终止过程,意味着数据报可以在不同的链路进行传输。UDP不能把像TCP一样进行数据流的传输,你也不用指望UDP能把数据切块传输,而且,要传输的数据长度要小于65507字节(65535-8(UDP头)-20(IP头))

流量控制(Flow Control)

  UDP是一个简单的协议,不存在流量控制,接受者接收数据是可能溢出的,所以使用UDP的应用应该提供流量控制,需要的话。

错误控制(Error Control)

  UDP没有错误控制机制,除了校验码之外。这个意味着发送方不知道数据是否丢失或者损坏。当接受者通过校验码发现数据错误时,数据报就会被丢弃,这个丢弃过程是不会通知发送方的。如果需要的话,使用UDP协议的程序自身一个考虑这个问题。

校验和(Checksum)

  UDP数据报校验和的计算涉及三个部分:伪头部、UDP头部和数据。伪头部是IP数据包头的部分信息,数据报进行校验和计算时,会把伪头部默认填充0。

阻塞控制(Congestion Control)

  UDP没有提供阻塞控制服务,UDP假设数据报在通讯链路中不存在阻塞。这个假设在如今通讯组或许是不正确的,因为如今UDP一般用于实时的视频和音频传输

24.2.3 UDP应用

  UDP的典型特征:1、不需要连接,2、缺乏冲突控制。虽然UDP是一种不可靠的通讯协议,但是有些应用却更偏向与UDP,如DNS,DNS需要发送一个短的请求到服务器,并且需要接受一个快速的响应,请求和响应的数据在一个数据报中就可以封装起来,不用考虑发送的顺序问题。像SMTP电子邮箱服务就不能使用UDP服务了,因为发送的信息可能很长,需要分包处理,而且还需要考虑发送的顺序问题,UDP协议无法处理。

posted @ 2019-05-18 20:48  mango-jun  阅读(344)  评论(0编辑  收藏  举报