计算机网络(八):传输层与用户数据报协议——UDP

计算机网络(八):传输层与用户数据报协议——UDP

一、传输层
传输层位于网络层和应用层之间。传输层负责向应用层提供服务,接收来自网络层的服务。

  1. 传输层的基本功能
    传输层协议的首要任务是提供进程到进程通信。其根本目的在于在网络层提供的数据通信服务基础上,实现主机进程间可靠服务。
  2. 传输层与应用层、网络层之间的关系
    传输层与应用层、网络层之前的关系以及报文格式如下图所示。
    在这里插入图片描述
  3. 网络环境中的应用进程标识
    传输层进程寻址是通过TCP/UDP端口号实现的。而进程标识可以通过三元组结构进行标识。
    三元组结构:协议、本地地址、本地端口号。示意图如下所示。
    在这里插入图片描述
    网络环境中的进程通信要涉及两个不同主机的进程,因此一个完整的进程通信标识需要一个五元组标识:协议、本地地址、本地端口号、远程地址、远程端口号
  4. TCP/UDP协议与应用层协议的关系
    传输层协议TCP/UDP协议与应用层协议关系如下图所示。
    在这里插入图片描述

二、用户数据报协议——UDP
用户数据报协议——UDP的主要原则是协议简洁、运行快捷,它是一种基于不可靠的数据传输,因此它只能适用于高可靠、低延迟的局域网上运行。UDP提供了进程到进程之间的通信

  1. UDP协议的主要特点
     UDP是一种无连接、不可靠的传输协议
    UDP协议在传输文件之前不需要在通信双方之间建立连接,因此减少了协议开销和传输延时。UDP对报文除了提供一种可选的校验和之外,几乎没有其他保证数据传输可靠性的措施。如果UDP检测出在收到的分组中有差错,丢弃这个分组,不通知发送方重传,因此UDP协议提供的是“尽力而为”的传输服务。
    在这里插入图片描述
     UDP是一种面向报文的传输层协议
    如下图所示为UDP对应用程序提交的数据处理方式示意图。UDP对应用程序提交的报文既不合并也不拆分,而是保留原报文的长度和格式。因此使用UDP协议时,应用程序必须选择合适长度的报文。
    如果应用程序提交的报文太短,则协议开销相对较大;如果提交报文太长,则UDP向IP层提交的TPDU可能在IP层被分段,会减低协议的效率。
    在这里插入图片描述
  2. 用户数据报(UDP分组)格式
    如下图所示为UDP分组即用户数据报的格式。其中有8字节的固定头部,由4个字段组成,前两个字段定义了源和目的端口号,第三个字段定义了用户数据报的总长,即头部加数据的长度,最后一个字段为可选校验和
    在这里插入图片描述
  3. UDP校验
    UDP提供的服务是进程到进程的通信,并且是一种无连接的服务。在UDP中,其没有流量控制,也没有窗口机制,除了校验和之外UDP也没有差错控制机制,不提供拥塞控制。(流量控制、窗口机制、差错控制以及拥塞控制机制在后续的笔记:计算机网络(十):传输层之TCP(中)以及计算机网络(十一):传输层之TCP(下)中有详细的介绍)
    UDP的校验和包含三个部分:伪报头、UDP头部以及应用层数据
    伪报头结构如下图所示。
    在这里插入图片描述
    需要注意的是,伪报头中的UDP总长度与UDP头部中的UDP总长度是一致的。另外,伪报头并不进行传输,而是发送方和接收方计算校验和的时候添加上的信息而已
  4. 校验和的计算
    UDP分组的发送方可以选择不计算校验和,这种情况下,在发送前校验和字段全填入0。在发送方决定计算校验和的情况下,如果碰巧结果全是0,那么在发送前校验和全改为1。换而言之,发送方填充两次校验和
    发送方计算校验和的一个例子如下。
    在这里插入图片描述
    校验和的计算,一开始将校验和填充为0,并且对于数据不是32位整除的进行0填充。此外进行二进制求和的时候,产生的进位加到下一列,如果最高位相加后产生进位,则最后结果加1,即进位加到最后一列
    对于接收方,在添加伪报头之后进行校验和计算,若计算结果为全0,那么说明数据传输正确,丢弃伪报头和任何填充,并接收已经经过校验正确的UDP数据报;否则丢弃数据报。

参考资料:《计算机网络教程:自顶向下方法》
《计算机网络与下一代互联网》

猜你喜欢

转载自blog.csdn.net/weixin_38196407/article/details/88777533