文章目录
1. 概述和传输层服务
- 传输层协议为运行在不同主机上的进程提供了一种逻辑通信机制
- 传输层与网络层的区别
网络层提供主机之间的逻辑通信机制,传输层提供应用进程之间的逻辑通信机制。
- Internet 传输层协议
可靠、按序的交付服务(TCP):拥塞控制、流量控制、连接建立
不可靠的交付服务(UDP):基于“尽力而为(Best-effort)”的网络层,没有做(可靠性方面的)扩展
两种服务均不保证: 延迟 带宽
2. 多路复用与多路分用
接收端的多路分用
:传输层依据头部信息将收到的Segment交给正确的Socket,即不同的进程
发送端的多路复用
:从多个Socket接收数据,为每块数据封装上头部信息,生成Segment,交给网络层
- 分用工作流程
- 无连接分用UDP
一个UDP套接字是由一个二元组全面标识的,该二元组包含一个目的IP地址和一个目的端口号。
- 面向连接的分用
TCP的Socket用四元组标识。即使目的地址和目的端口相同,如果具有不同源地址或者源端口,TCP报文段将会定向到不同的套接字。
多线程Web服务器:在服务器,只开有一个端口号80
3. UDP:无连接运输
UDP协议是基于IP协议的,它提供了上节的多路复用/分用,同时也增加了一些简单的
错误校验。
UDP提供的服务是“Best effort”服务
,UDP段可能 丢失,非按序到达。
无连接: UDP发送方和接收方之间不需要握手,每个UDP段的处理独立于其他段。
- UDP的应用
- 校验和
之所以UDP要进行差错检验,是因为不能保证源和目的之间的所有链路层都提供差错检测。
4. 可靠数据的传输原理
可靠指的是不错(0变成1)、不丢(分组丢失)、不乱(按照发送顺序进行交付)。
1. 构造可靠的数据传输协议
仅考虑单向的数据传输,但是控制信息是双向流动,同时采用有限状态自动机FSM刻画传输协议。
- 经完全可靠信道的可靠数据传输:rdt1.0
可靠信道也就意味着底层信道是完全可靠的,即不会发生错误和丢弃分组,也是按顺序到达。
发送端:
接收端:
- 经具有比特差错信息的可靠数据传输:rdt2.0
具有比特差错信息的可靠数据传输,意味着底层信道可能会反转分组中的位,但是不会产生丢包和乱序。ARQ协议
发送端:
接收端:
- 经具有比特差错信息的可靠数据传输:rdt2.1 和 rdt2.2
- 经具有比特差错信息的丢包信道的可靠数据传输:rdt3
2. 滑动窗口协议与流水线机制
-
rdt3.0的性能分析
假定分组长L=1000bits,信道带宽为1Gbps
-
流水线机制
不用停等方式运行,允许发送方发送多个分组而无需等待确认。
流水线机制对于可靠数据传输协议带来了几个影响:更大的
序列号范围
发送方和/或接收方需要更大的存储空间以缓存分组
为了实现流水线机制,需要引入滑动窗口协议。
1.滑动窗口协议:GBN
窗口的图示以及分段信息,窗口尺寸为N,也就是最多有N歌等待确认的消息,随着协议的运行,窗口在序列号空间内向前移动。:
发送方:
接收方:
整体流程:注意,在接收方,分组2丢失,所以分组3、4、5都会被丢弃。
2. 滑动窗口协议:SR
从上图可以看出,在GBN中,单个分组的差错能够引起GBN重传大量分组,许多分组没必要重传。而选择重传协议(SR)
则通过让发送方仅重传那些它怀疑在接收方出错的分组而避免不必要的重传。窗口长度必须小于或等于序号空间大小的一半
。
窗口图示:
发送方:
接收方:
图示: