文章目录
传输层为网络应用进程之间的通信提供了端到端的报文传输服务。 传输层是除了应用层之外唯一的端到端层。绝大多数应用都直接使用传输层提供的端到端报文传输服务。
关键词: 可靠数据传输基本原理,停-等协议、滑动窗口协议、UDP以及TCP等内容。
第一节 传输层的基本服务
1. 传输层功能:
- 核心任务是:
为应用进程之间提供端到端的逻辑通信服务
.主要实现如下功能:- 传输层寻址;
- 对应用层报文进行分段和重组;
- 对报文进行差错控制;
- 实现进程间的端到端可靠数据传输控制;
- 面向应用层实现
复用
与分解
; - 实现端到端的流量控制;
- 拥塞控制等
2. 传输层寻址与端口
TCP/IP体系结构网络的解决方法就是在传输层使用协议端口号,即端口(PORT), 在全网范围内利用"IP地址+端口号"唯一标识一个通信端点.
传输层端口号为16位整数, 其中0到1023为熟知端口号, 1024到49151为登记端口号为没有熟知商品号的应用程序使用,
第二节 传输层的复用与分解
支持众多应用进程使用同一个传输层协议,并能够将接收到的数据准确交付给不同的应用进程,是传输层需要实现的一项基本功能, 称为传输层的多路复用与多路分解,简称复用与分解。
- UDP 套接字的端口号是UDP实现复用与分解的重要依据。
- 真正唯一标识一个UDP套接字的是一个二元组<目的IP地址,目的端口号>
- TCP通过一个四元组<源IP地址,源端口号,目的IP地址,目的端口号>唯一标识一条TCP连接。
- 在Internet网络中, 唯一标识套接字的基本信息是IP地址和端口号。
第三节 停-等协议与滑动窗口协议
- TCP发送的报文都是交给IP传送的, 而IP只能提供“尽力”(Best Effort)服务,也就是不可靠的数据报传输服务
3.1 可靠数据传输基本原理
在数据传输过程中,可能出现比特跳变, 乱序, 数据丢失等情况,所以实现数据可靠传输的措施主要包括以下几种:
- 差错检测:利用差错编码实现数据包传输过程中的比特差错检测。
- 确认:接收方向发送方反馈接收状态。ACK 称为肯定确认(Positive Acknowledgment),表示已正确接收数据。 NAK称为否定确认(Negative Ackonwlegment)表示没有正确接收数据。
- 重传:发送方重新发送接收方没有正确接收的数据。
- 序号:确保数据按序提交。
- 计时器:解决数据丢失问题。
3.2 停-等协议
自动重传请求(Automatic Repeat reQuest, ARQ) , 最简单的ARQ协议就是停-等协议。
最主要的特点就是:每发送一个报文段后就停下来等待接收方的确认,这也是该协议名称的基本含义。
基本工作过程:
- 发送方发送经过差错检测和编号的报文段,等待接收方的确认
- 接收方如果正确接收报文段,即差错检测无误且序号正确,则接收该报文段,并向发送方发送ACK,否则丢弃该报文段,并向发送方发送NAK
- 发送方如果收到ACK,则继续发送后续的新的报文段,否则重发刚刚发送的报文段。
停-等协议综合应用了差错检测、确认、重传、序号和计时器等措施。每种措施都在协议的运行中起到了至关重要的作用,实现了可靠数据传输。停-等协议的特点是简单、所需要的缓冲存储空间小。
3.3 滑动窗口协议
- 停-等协议的信道利用率很低,性能比较差。
- 回退N步(Go-Back-N,GBN)协议
- GBN协议的发送端缓存能力较高,可以在未得到确认前连续发送多个分组。
- GBN协议的接收端缓存能力很低,只能接收1个按序到达的分组,不能缓存未按序到达的分组,通常称GBN协议的接收端无缓存能力。
- 在差错率较低的情况下,GBN协议的信道利用率会得到很大提高。但是,如果信道误码率或丢包率较高,会导致大量分组的重发,使信道传输能力的降低。GBN协议比较适用于低误码率,低丢包率,带宽高时延积信道且对接收方的缓存能力要求低。
- 选择重传(Selective-Repeat,SR)协议
第四节 用户数据报协议(UDP)
用户数据报协议UDP是Internet 传输层协议,提供无连接、不可靠,数据报尽力传输服务。
UDP是一种轻量级传输层协议,只提供最基本的传输层服务。
为什么应用开发人员宁可以UDP上构建应用,而不选择在可靠的TCP上构建应用呢?
- 应用进程更容易控制发送什么数据以及何时发送
- 无需建立连接
- 无连接状态,UDP系统开销小
- 首部开销小。每个TCP报文段都至少有20个字节的首部开销,而UDP仅有8字节的开销。
UDP校验和
UDP校验和提供了差错检测功能。
参与校验和计算的内容包括3部分:UDP伪首部、UDP首部和应用层数据。
第五节 传输控制协议(TCP)
传输控制协议TCP是Internet一个重要的传输层协议 。TCP提供面向连接、可靠有序、字节流传输服务。
发送缓存是在三次握手初期设置的缓存之一,TCP可从缓存中取出并放入报文段中的数据,数量受限于最大报文段长度(Maximum Segment Size, MSS)
三次握手
- 主机A的TCP向主机B发出连接请求(第一次握手),该报文段中不包含应用数据,其首部中的同步位SYN=1,并选择初始序号seq=x,表明传送数据时的第1个数据字节的顺序为x。 这个特殊的报文段也称为SYN报文段。第一次握手不携带数据
- 主机B发回确认报文段,该同意建立连接的报文段通常被称为SYNACK报文段,不包含应用层数据。
- 主机A收到SYNACK报文段后,也要给该 连接分配缓存和变量,并向主机B发送确认报文段(第三次握手),该报文段是对主机B的同意连接报文段进行确认,第三次握手的ACK报文段可以携带从主机A到主机B的应用层数据。
四次挥手
TCP释放连接过程为“四次挥手过程”(对称断连)
4. 主机A向主机B发送释放连接报文段,其首部FIN=1, 序号seq=u,等待主机B的确认(第一次挥手)
5. 主机B向主机A发送确认段,ACK=1, 确认序号ack_seq=u+1, seq=v(第二次挥手)
6. 主机B向主机A发送释放连接报文段,FIN=1,seq=w,ack_seq=u+1,(第三次挥手)
7. 主机A向主机B发送确认段 ACK=1,seq=u+1, ack_seq=w+1(第四次挥手)。主机B收到该报文段后,可以马上释放连接,主机A在发出确认段后,延迟一段时间后即释放连接。
TCP流量控制
流量控制(flow control)的目的是协调协议发送方与接收方的数据发送与接收速度。
基于滑动窗口协议实现流量控制时, 发送窗口的大小反映了接收方接收和处理数据的能力,发送窗口越大,表明允许发送方以较高的平均速率向接收方发送数据。
TCP拥塞控制
拥塞的直接后果如下:
- 数据分组通过网络的时延显著增加
- 由于队列满导致大量分组被丢弃。
拥塞控制(congestion control) 就是通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率或数据量,以避免拥塞或尽快消除已发生的拥塞。