《TCP/IP协议族》(第三版) 第11章 用户数据报(UDP) 学习笔记
目录
1、UDP
2、运输层通常的责任
3、端口号
4、UDP长度
5、检验和
6、UDP服务
7、UDP的适用范围
8、UDP软件包
1、UDP
全称为User Datagram Protocol用户数据报协议
2、运输层通常的责任:
1)创建进程到进程的通信
2)在运输层提供控制机制
3)和接收站建立连接,把数据流分割成为可运输的单元,标号并逐个发送
3、端口号
1)熟知端口:0~1023,由ICANN指派和控制
2)注册端口:1024~49151,可在IANA注册以防重复
3)动态端口:49152~65535,不指派或注册短暂端口号:CS模型中,客户生存时间较短,一般端口号取1023~65535
UNIX中,熟知端口存储在/etc/services中,可通过命令
$grep ftp /etc/services
查看。
4、UDP长度
1)长度字段为16位,可定义范围0~65535字节。总长度要小于65535字节,因为UDP用户数据报要放在IP数据报中,IP数据报最大长度为65535字节。
2)UDP长度字段可通过IP总长度-IP首部长度计算得到,但UDP协议设计者认为设计这一字段更好。IP软件将UDP用户数据报交付给UDP层时,已剥去IP首部。
5、检验和
1)检验和计算要加入伪首部,形式与IP首部后12字节相似,其中某些字段要全填0。伪首部包括源IP地址、目的IP地址、协议字段、UDP总长度。
2)加入伪首部是为了避免IP首部错误,用户数据报被交付至错误主机。
3)伪首部中各行顺序对计算检验和没有影响。
4)检验和可选,不计算检验和则检验和字段填0。计算出的检验和永远不会是全0,因为在反码算术运算中求和结果不可能全为1(?)。
6、UDP服务
1)无连接服务
使用UDP的进程不能向UDP发送数据流,因为UDP并不能将数据流分割为多个用户数据报。
相反,每一请求必须足够小,能够装入到一个用户数据报中。2)缺少差错控制和流量控制
这意味着使用UDP的进程必须提供这些机制。3)拆装和封装
封装时,进程、UDP和IP之间除了传递数据还要传递一对套接字地址。
拆装时,IP向UDP传递用户数据报与IP目的、源地址,UDP向接收进程传递应用数据和套接字地址。4)排队
A.客户端
进程启动时,其从操作系统请求得到一个端口号。
每个进程有一个入队列。
每个进程有一个出队列,或者没有出队列(?)。
进程终止时,队列被撤销。
出队列溢出时,操作系统要求客户进程在继续发送报文之前要等待。
入队列溢出时,UDP丢弃用户数据报,并请求向服务端发送端口不可达报文。B.服务器端
最简单的形式是,服务器开始运行时就用熟知端口创建入队列和出队列。只要服务器在运行,队列就一直打开。
7、UDP的适用范围
1)适用于需要简单的请求-响应通信,较少考虑流量控制和差错控制的进程。
2)适用于具有内部流量控制和差错控制的进程,如简单文件传送协议TFTP。
3)多播和广播内嵌在UDP软件中,但没有在TCP软件中。
4)可用于管理进程,如SNMP。
5)可用于某些路由选择更新协议,如RIP.
6)不适用于需要传送成块数据的进程,如FTP。
8、UDP软件包
1)简化的UDP软件包包括5个构件:
- 一个控制块列表
- 若干个输入队列
- 一个控制块模块
- 一个输入模块
2)控制模块负责管理控制块表。