写在前面:本文章是针对《计算机网络第七版》的学习笔记

运输层1——运输层协议概述

运输层2——用户数据报协议UDP

运输层3——传输控制协议TCP概述

运输层4——TCP可靠运输的工作原理

运输层5——TCP报文段的首部格式

运输层6——TCP可靠传输的实现

运输层7——TCP的流量控制和拥塞控制

运输层8——TCP运输连接管理

1. UDP概述

用户数据报协议只在IP数据报服务之上增加了很少一点的功能:复用,分用以及差错检测的功能。UDP的主要特点:

  • UDP是无连接的:即发送数据前不需要建立连接,减少了开销和发送数据的时延。

  • UDP使用尽最大努力交付:不保证可靠,因此主机无需维持复杂的连接状态。

  • UDP是面向报文的:发送方的UDP对应用程序交下来的报文添加首部后直接交付给IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

  • UDP没有拥塞控制:因此网络出现拥塞不会影响主机的发送速率,也就是允许丢失数据,但要保证时延。

  • UDP支持一对一,一对多,多对一,多对多的通信。

  • UDP首部开销小:只有8个字节。

2. UDP首部格式

UDP用户数据报分为 = 首部字段 (8个字节,4个字段,每个字段2个字节)+ 数字字段。

首部字段:

  • 源端口: 源端口号。在需要对方回信的时候选用,不需要填0。

  • 目的端口: 目的端口号。必填。

  • 长度: UDP用户数据报的长度。最小为8。

  • 检验和:检测UDP用户数据报传输过程中是否有错。有错就丢弃。

5d3524ef4841844167

3. UDP首部检验和计算方法

在计算检验和时,需要在用户数据报之前加12字节的伪首部。

所谓伪首部,是指他并不是UDP用户数据报的真正首部,只是在计算检验和的时候,临时加上的,检验和就是按照这个临时的用户数据报计算的。既不下传也不向上提交。伪首部的格式如上图。

UDP计算检验和与IP数据报类似,只是UDP的首部校验和把首部和数据一起都检验了。步骤如下:

  1. 在发送方,首先先把全零放到检验和字段;

  2. 再把伪首部和UDP用户数据报看成是由许多16位的字串连接起来的;

  3. 然后按二进制反码计算出这些16位字的和,并将此和的反码写入检验和字段后,就发送这样的用户数据报。

  4. 在接收方,把收到的UDP用户数据报连同伪首部(以及可能的填充全零字节)一起,按二进制反码求这些16位字的和。

  5. 若无差错时其结果应全为1;否则就是有差错出现,可以选择丢失,可以上传(但是要附上错误信息)。

5d354dcc35e6338961