目录
1 传输层
2 可靠(不错、不丢、不乱)数据传输
3 流水线机制和滑动窗口协议
1.1 传输层服务和协议
1、传输层协议为运行在不同Host上的进程提供了一种逻辑通信机制;
2、端系统运行传输层协议:
(1)发送方:将应用递交的消息分成一个或多个的Segment,并向下传给网络层;
(2)接收方:将接收到的segment组装成消息,并向上交给应用层;
3、传输层可以为应用提供多种协议 --- Interrnet上的TCP;UDP;
1.2 传输层与网络层的区别
1、网络层:提供主机之间的逻辑通信机制;
2、传输层:提供应用进程之间的逻辑通信机制;
(1)位于网络层之上;(2)依赖于网络层服务;(3)对网络层服务进行(可能的增强);
1.3 Internet传输层协议
1、可靠、按序的交付服务(TCP)
(1)拥塞控制;(2)流量控制;(3)连接建立;
2、不可靠的交付服务(UDP)
基于“尽力而为(Best-effort)”的网络层,没有做(可靠性方面的)扩展;
3、两种服务TCP/UDP均不保证延迟、带宽;
1.4 多路复用和多路分用
注:Socket是传输层与应用层之间的,“门”;
1、无连接分用---面向UDP
2、面向连接的分用---TCP,一对一
注:一个进程创建多个线程;
1.5 UDP---User Datagram Protocol [RFC 768]
1、基于Internet IP协议----(1)复用/分用;(2)简单的错误校验;
2、“Best effort”服务,UDP服务:(1)丢失;(2)非按序到达;
3、无连接:(1)UDP发送方和接收方之间不需要握手;(2)每个UDP段的处理独立于其他段;
4、UDP优点(存在价值)
(1)无需建立连接(减少延迟);(2)实现简单:无需维护连接状态;(3)头部开销小;
(4)没有拥塞控制:应用可更好的控制发送时间和速率;
5、UDP应用
(1)常用于流媒体应用:容忍丢失;速率敏感;(2)DNS、SNMP;
在UDP上实现可靠数据传输:在应用层增加可靠性机制;应用特定的错误恢复机制;
6、UDP校验和checksum校验和---检测UDP段在传输中是否发生错误(如位翻转);
(1)发送方:
a、将段的内容视为16-bit整数;
b、校验和计算:计算所有整数的和,进位加在和的后面,将得到的值按位求反,得到校验和
c、发送方将校验和放入校验和字段;
(2)接收方
a、计算所收到段的校验和;
b、将其与校验和字段进行对比:不相等---检测出错误;相等:没有检测出错误(但可能也有错误)
(3)校验和计算示例:最高位进位必须被加进去
2.1 可靠数据传输原理
(1)可靠数据传输对应用层、传输层、链路层都很重要;
(2)网络Top-10问题;
(3)信道的不可靠特性决定了可靠数据传输协议(rdt)的复杂性;
2.2 可靠数据传输协议基本结构:接口
2.3 可靠数据传输协议
2.4 Rdt1.0:可靠信道上的可靠数据传输
(1)底层信道完全可靠;不会发生错误(bit error);不会丢弃分组;
(2)发送方和接收方的FSM独立;
2.5 Rdt2.0:产生位错误的信道
(1)底层信道可能翻转分组中的位(bit),利用校验和检测位错误;
(2)如何错误恢复?
a、确认机制(Acknowledgements,ACK):接收方显式地告知发送方分组已正确接收;
b、NAK:接收方显示地告知发送方分组有错误;
c、发送方收到NAK后,重传分组;
(3)基于这种重传机智的rdt协议称为ARQ(Automatic Repeat Request)协议;
(4)Rdt2.0中引入的新机制:差错检测;接收方反馈控制消息:ACK/NAK;重传
2.6 Rdt2.1和2.2
1、Rdt2.0的缺陷:ACK/NAK消息发生错误/被破坏(corrupted)
(1)为ACK/NAK增加校验和,检错并纠错;
(2)发送方收到被破坏ACK/NCK时不知道接收方发生了什么,添加额外的控制消息;
(3)如果ACK/NAK坏掉,发送方重传;
(4)不能简单地重传:产生重复分组;
2、如何解决重复分组的问题
(1)序列号(Sequence number):发送方给每个分组增加序列号;(2)接收方丢弃重复分组;
3、Rdt2.1:应用对ACK/NAK破坏
发送方:
接收方:
4、Rdt2.1 VS Rdt2.0
5、Rdt2.2:无NAK消息协议
2.7 Rdt3.0:信道既可能发生错误,也可能丢失分组
1、“校验和+序列号+ACK+重传”够用吗?
2、 发送方:
3、Rdt3.0示例:
4、Rdt3.0性能分析---Rdt3.0能够正确工作,但性能很差
软硬件协同设计,停等操作,引起的Rdt3.0的性能很差
3.1 流水线协议
1、允许发送方在收到ACK之前连续发送多个分组:
(1)更大的序列号范围;(2)发送方/接收方需要更大的存储空间以缓存分组;
3.2 滑动窗口协议(Sliding-window protocol)
1、窗口---(1)允许使用的序列号范围;(2)窗口尺寸为N:最多有N个等待确认的消息;
2、滑动窗口---随着协议的运行,窗口在序列号空间内向前滑动;
3、滑动窗口协议:GBN,SR
3.3 GBN协议---Go-Back-N协议
1、Go-Back-N(GBN)协议:发送方
(1)分组头部包含K-bit序列号;(2)窗口尺寸为N,最多允许N个分组未确认;
(3)ACK(n):确认序列号n(包含n)的分组均已被正确接收:可能受到重复ACK;累计确认
(4)为空中的分组设置计时器(timer);
(5)超时Timeout(n)事件:重传序列号大于等于n,还未受到ACK的所有分组
2、GBN:发送方扩展FSM
3、GBN:接收方扩展FSM
(1)ACK机制:发送拥有最高序列号的、已被正确接收的分组的ACK;
a、可能产生重复的ACK;b、只需要记住唯一的expectedseqnum;
(2)乱序到达的分组:
a、直接丢弃-->接收方没有缓存;b、重新确认序列号最大的、按序到达的分组;
4、GBN示例
3.4 Selective Repeat---SR协议,多了一个接收方的窗口
1、 GBN协议缺陷:会重传重复分组很多;
2、SR协议改进
(1)接收方对每个分组单独进行确认---设置缓存机制,缓存乱序到达的分组;
(2)发送方只重传那些没收到ACK的分组---为每个分组设置定时器;
(3)发送方窗口:a、N个连续的序列号;b、限制已发送且未确认的分组;
3、SR发送方/接收方窗口
4、SR协议
5、SR协议示例