计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR

目录

 1 传输层

2 可靠(不错、不丢、不乱)数据传输

 3 流水线机制和滑动窗口协议

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第1张图片

 1 传输层

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 多路复用和多路分用

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第2张图片

 注:Socket是传输层与应用层之间的,“门”;

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第3张图片

1、无连接分用---面向UDP 

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第4张图片

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第5张图片

 2、面向连接的分用---TCP,一对一

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第6张图片

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第7张图片

 注:一个进程创建多个线程;

 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上实现可靠数据传输:在应用层增加可靠性机制;应用特定的错误恢复机制;

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第8张图片

 6、UDP校验和checksum校验和---检测UDP段在传输中是否发生错误(如位翻转);

(1)发送方:

a、将段的内容视为16-bit整数;

b、校验和计算:计算所有整数的和,进位加在和的后面,将得到的值按位求反,得到校验和

c、发送方将校验和放入校验和字段;

(2)接收方

a、计算所收到段的校验和;

b、将其与校验和字段进行对比:不相等---检测出错误;相等:没有检测出错误(但可能也有错误)

(3)校验和计算示例:最高位进位必须被加进去

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第9张图片

2 可靠(不错、不丢、不乱)数据传输

2.1 可靠数据传输原理

(1)可靠数据传输对应用层、传输层、链路层都很重要;

(2)网络Top-10问题;

(3)信道的不可靠特性决定了可靠数据传输协议(rdt)的复杂性;

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第10张图片

2.2 可靠数据传输协议基本结构:接口

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第11张图片

2.3 可靠数据传输协议

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第12张图片

2.4 Rdt1.0:可靠信道上的可靠数据传输 

(1)底层信道完全可靠;不会发生错误(bit  error);不会丢弃分组;

(2)发送方和接收方的FSM独立;

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第13张图片

 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;重传

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第14张图片

 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破坏

发送方:

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第15张图片

接收方:

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第16张图片

 4、Rdt2.1 VS Rdt2.0

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第17张图片

5、Rdt2.2:无NAK消息协议 

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第18张图片

 2.7 Rdt3.0:信道既可能发生错误,也可能丢失分组

1、“校验和+序列号+ACK+重传”够用吗?

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第19张图片

2、 发送方:

 计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第20张图片

3、Rdt3.0示例:

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第21张图片

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第22张图片

 4、Rdt3.0性能分析---Rdt3.0能够正确工作,但性能很差

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第23张图片

软硬件协同设计,停等操作,引起的Rdt3.0的性能很差

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第24张图片

 3 流水线机制和滑动窗口协议

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第25张图片

3.1 流水线协议 

1、允许发送方在收到ACK之前连续发送多个分组:

(1)更大的序列号范围;(2)发送方/接收方需要更大的存储空间以缓存分组;

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第26张图片

 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个分组未确认;

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第27张图片

(3)ACK(n):确认序列号n(包含n)的分组均已被正确接收:可能受到重复ACK;累计确认

(4)为空中的分组设置计时器(timer);

(5)超时Timeout(n)事件:重传序列号大于等于n,还未受到ACK的所有分组

2、GBN:发送方扩展FSM

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第28张图片

 3、GBN:接收方扩展FSM

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第29张图片

 (1)ACK机制:发送拥有最高序列号的、已被正确接收的分组的ACK;

a、可能产生重复的ACK;b、只需要记住唯一的expectedseqnum;

(2)乱序到达的分组:

a、直接丢弃-->接收方没有缓存;b、重新确认序列号最大的、按序到达的分组;

4、GBN示例

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第30张图片

 3.4 Selective Repeat---SR协议,多了一个接收方的窗口

1、 GBN协议缺陷:会重传重复分组很多;

2、SR协议改进

(1)接收方对每个分组单独进行确认---设置缓存机制,缓存乱序到达的分组;

(2)发送方只重传那些没收到ACK的分组---为每个分组设置定时器;

(3)发送方窗口:a、N个连续的序列号;b、限制已发送且未确认的分组;

3、SR发送方/接收方窗口

计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第31张图片

 4、SR协议

 计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第32张图片

5、SR协议示例 

 计算机网络学习笔记(5)---传输层--可靠数据传输、Rdt1.0、2.0、2.1、2.2、3.0、流水线与滑动窗口协议、GBN、SR_第33张图片

你可能感兴趣的:(计算机网络,udp)