第7章 用户数据报协议(UDP)1主要内容n认识传输层nUDP服务n UDP的端口号和套接字地址n用户数据报nUDP检验和nUDP的操作nUDP的应用2v传输层为相互通信的应用进程提供了逻辑通信54321传输层提供应用进程间的逻辑通信主机 A主机 B应用进程应用进程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 层LAN1AP1AP2AP4 端口端口54321IP 协议的作用范围传输层协议 TCP 和 UDP 的作用范围AP33v传输层协议和网络层协议的主要区别应用进程…应用进程…IP 协议的作用范围 (提供主机之间的逻辑通信)TCP 和 UDP 协议的作用范围 (提供进程之间的逻辑通信)因 特 网4v传输层向上提供可靠的和不可靠的逻辑通信信道?应 用 层传 输 层发 送 进 程接 收 进 程接 收 进 程数据数据全双工可靠信道数据数据使用 TCP 协议使用 UDP 协议不可靠信道发 送 进 程5传输层中的两个协议TCP/IP的传输层有两个不同的协议:(1) 用户数据报协议 UDP (User Datagram Protocol)(2) 传输控制协议 TCP (Transmission Control Protocol)TCPUDPIP应用层与各种网络接口传输层6v TCP 与 UDPn UDP在传送数据之前不需要先建立连接。
对方的传输层在收到 UDP 报文后,不需要给出任何确认虽然 UDP 不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式n TCP则提供面向连接的服务TCP 不提供广播或多播服务由于TCP要提供可靠的、面向连接的传输服务,因此不可避免地增加了许多的开销这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源 77.1 UDP服务nUDP提供无连接的服务nUDP发出的每一个用户数据报都是独立的数据报,都携带了完整的目标地址,每一个用户数据报可以被系统独立的路由 n用户数据报不进行编号87.2.1 UDP的端口号n n端口端口是计算机与外界通讯交流的出口其中:ü 硬件领域的端口又称接口,如:USB端口、串行端口等ü 软件领域的端口是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区,指网络中的通信协议端口n 端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程n 通常端口用一个 16 bit 端口号进行标志7.2 UDP的端口号和套接字地址9v 端口号的分类互联网号码分配机构(IANA)定义的UDP端口号分为三类:n 熟知端口号熟知端口号:由IANA负责分配给一些常用的应用程序固定使用的端口号。
端口号范围为 0~1023n n注册端口号注册端口号:用户根据需要可以在IANA注册以防止重复端口号的范围1024~49151n 动态端口号动态端口号:用来随时分配给请求通信的客户进程端口号的范围49152~6553510n一个IP地址与一个端口号合起来称为套接字地址套接字地址n要使用UDP的服务,需要一对套接字地址:ü客户套接字地址ü服务器套接字地址 7.2.2 套接字地址 11v套接字(socket)IP=131.6.23.13IP=128.36.1.12端口 1500端口 1501端口 1500IP=130.42.85.15端口 25ABC连接 1连接 2连接 312首部 数据8字节0 15 16 31 源端口号 目的端口号 16位 16位 总长度 检验和 16位 16位7.3 用户数据报UDP分组称为用户数据报(User Datagram) 用户数据报格式:13v UDP 用户数据报的首部格式§ 用户数据报 UDP 有两个字段:数据字段和首部字段。
首部字段有 8 个字 节,由 4 个字段组成,每个字段都是两个字节伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报14v UDP 用户数据报的首部格式§ 在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起伪首部仅仅是为了计算检验和伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报157. 4 UDP检验和n UDP检验和包括三个部分:伪首部、UDP首部、从应用层来的数据n伪首部既不向下传送,也不向上递交16发送端的检验和计算:Ø伪首部填加到UDP用户数据报上把检验和字段填入全零;Ø每16bit划分为一段若字节总数不是偶数,则增加一个字节的填充(全0);Ø所有的16bit段使用反码算术运算相加(在伪首部中的各行的顺序对检验和的计算没有任何影响此外,增加0也不影响计算的结果),把得到的结果取反码后插入到检验和字段 Ø伪首部和任何增加的填充丢掉,把UDP用户数据报交付给IP软件进行封装。
17接收端的检验和计算:Ø伪首部加到UDP用户数据报若需要,就增加填充;Ø每16bit划分为一段,所有的16bit段使用反码算术运算相加;Ø得到的结果取反码若得到的结果是全0,则丢弃伪首部和任何增加的填充并接受这个UDP用户数据报若得到的结果非0,说明接收端检测到校验和有差错,就丢弃这个UDP用户数据报18n将数据1000 1101 0101 1110分成四段,利用反码运算 求出校验和1000 11011010110110v 例10110 010110111011 11101100111010(求和)0101(0101(校验和校验和) )19v 例210011001 00010011 → 153.19 00001000 01101000 → 8.104 10101011 00000011 → 171.3 00001110 00001011 → 14.11 00000000 00010001 → 0 和 17 00000000 00001111 → 15 00000100 00111111 → 1087 00000000 00001101 → 13 00000000 00001111 → 15 00000000 00000000 → 0(检验和) 01010100 01000101 → 数据 01010011 01010100 → 数据 01001001 01001110 → 数据 01000111 00000000 → 数据和 0(填充)10010110 11101011 → 求和得出的结果 01101001 00010100 → 检验和 12 字节 伪首部8 字节 UDP 首部 7 字节 数据填充按二进制反码运算求和 将得出的结果求反码153.19.8.104 171.3.14.11 全 0 17 151087 1315 全 0 数据 数据 数据 数据 数据 数据 数据 全 0假设数据为:TESTING20用户数据报协议UDP优点n UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
n 虽然UDP用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点v 发送数据之前不需要建立连接;v UDP 的主机不需要维持复杂的连接状态表;v UDP 用户数据报只有8个字节的首部开销;v 网络出现的拥塞不会使源主机的发送速率降低;这对某些实时应用是很重要的 217.5 UDP的操作7.5.1 报文的封装和拆封n当进程有报文要通过UDP发送时,将UDP封装成一份IP数据报 n当这个报文到达目的主机网络层,剥去IP首部后,将用户数据报连同发送端和接收端的IP地址一起传递给UDP 227.5.2. 多路复用与多路分用n在发送端,可能有多个需要发送用户数据报的进程 UDP使用多路复用技术处理用户数据报的发出 n在接收端也只有一个UDP,但有多个进程可能接收用户数据报根据端口号UDP把每一个报文交付给适当的进程UDP使用多路分用技术处理用户数据报的到来 23应 用 层传 输 层网 络 层TCP 报文段UDP 用户数据报应用进程TCP 复用IP 复用UDP 复用TCP 报文段UDP 用户数据报 应用进程端口端口TCP 分用UDP 分用IP 分用IP 数据报IP 数据报发送方接收方247.6 UDP的应用n适用需要简单的请求—响应通信的进程,而不太关心流量控制和差错控制。
而快速递交比精确递交更为重要的场合 n适用于具有内部流量控制和差错控制机制的进程 n适合多播和广播的传输协议 n可用于管理进程,如简单网络管理协议SNMP n可用于某些路由选择更新协议UDP被用于RIP选路表的更新 n与实时传输协议一起使用,对多媒体是很方便的一种协议 25在应用层使用UDP的主要有:Ø简单文件传输协议(TFTP)Ø引导程序协议(BOOTP)Ø简单网络管理协议(SNMP)Ø网络文件协议(NFS)Ø远程过程调用(RPC)Ø域名解析服务(DNS):也可以使用TCP。