传输层基础知识

|| 先完成作业咯(__) 嘻嘻……

  • 传输层协议的作用包括哪些?哪些作用是最基本的?

传输层为运行在不同主机上的应用进程之间提供端到端的逻辑通信
复用与分解(最基本)、可靠数据传输、流量控制、拥塞控制。

  • UDP协议的优点是什么?主要用于传输什么类型的业务?

无需建立连接,时延较小;
发送方和连接方无需维持连接状态;
报文段的首部开销小;
无拥塞控制,UDP可以达到很高的发送速率。

主要用于可以容忍丢失但对速率敏感的业务比如流媒体应用,还有DNS,简单网络管理协议SNMP中。

  • 在可靠传输原理中,处理冗余的有效方法是什么?

对分组进行标号,在接收方对相同标号的分组进行处理。

  • 在可靠传输原理中,怎么用ACK代替了NAK?

用ACK代替NAK,接收方为最后一个成功接收的分组发送ACK,接收方必须在ACK报文中包含所确认的分组序号。发送方接收到冗余的ACK可视为接到NAK,重传当前分组。

  • 在可靠传输原理中,处理丢包的有效方法是什么?

每次发送分组时会设置一个定时器,当时间结束还未收到回复时就会重传数据,有效地处理了丢包问题。

|| 传输层服务与协议

物联网组网与通信技术——传输层基础知识
传输层为运行在不同主机上的 应用进程 之间提供端到端的逻辑通信。
网络层为不同的主机提供逻辑通信。
传输层依赖并受限于网络层服务(定时,带宽保证),同时也能增强网络服务(可靠数据传输,安全性)。

发送方收集应用进程数据,封装成报文段,然后传递给网络层(复用网络层服务),接收方将报文恢复成报文,然后传递给正确的应用进程(分解)。

|| 复用与分解

物联网组网与通信技术——传输层基础知识
发送主机的复用: 从不同套接字中收集数据块,并为每个数据块封装上首部信息(将在分解时使用)

接收主机的分解:将接收到的报文段交付给正确的套接字。(套接字是用于区分不同应用进程的)

那复用和分解是怎样完成的呢?

主机接收到一个IP数据报,每个数据报又会有源IP地址和目的IP地址,(这是为了能够正确送达主机),每一个数据报携带一个传输层报文段,每一个报文段都有源端口号和目的端口号(这是为了正确送达具体的进程),就好比你写信一定要写清地址和收信人姓名。

物联网组网与通信技术——传输层基础知识
再了解一些分解的内容,分解有无连接的分解和面向连接的分解。下图解释的很清楚了。

UDP套接字是由二元组识别
物联网组网与通信技术——传输层基础知识
TCP套接字通过四元组识别

物联网组网与通信技术——传输层基础知识
|| 无连接传输 : UDP

我们先来了解一下 UDP 的特点吧

UDP 是最“懒”的因特网传输层协议,它提供“best effort” 的服务,因此报文段可能会丢失,错序;同时,它也是一种无连接的协议,发接双方无需握手。

那既然UDP这么“懒”,我们为什么还需要它呢??

其实,无需建立连接意味着可以减少很大一部分延时,这种协议比较简单,发接双方无需维持连接状态,报文段首部的开销也会比较小,没有拥塞控制可以达到很高的发送速率 ,所以对于那些对速率比较敏感的(比如看视频)可以采取UDP协议。

那UDP能不能进行可靠传输呢?其实是可以依赖应用层进行的!

物联网组网与通信技术——传输层基础知识
发送方会将报文段内容视为16比特字串进行处理,对报文中的所有16比特字进行求和运算(1的补码和),然后将其放入UDP报文段的检验和字段。

接收方会计算接收的报文段的检验和,检查计算出的检验和是否等于传输过来的检验和的值,如果不等,一定有错出现;如果相等,不一定没有错误。

物联网组网与通信技术——传输层基础知识

|| 可靠的数据传输(RDT , reliable data delivery)原理(停等)

没有一个信道是100%可靠的,既有可能 丢去分组,也有可能出现比特 传输错误

物联网组网与通信技术——传输层基础知识
让我们一起来分析一下各种复杂的情况吧!!

Rdt 1.0 : 在可靠信道上的可靠传输

物联网组网与通信技术——传输层基础知识
Rdt 2.0 : 存在比特错误的信道

物联网组网与通信技术——传输层基础知识
物联网组网与通信技术——传输层基础知识
物联网组网与通信技术——传输层基础知识

思考一下这是一个完美的协议吗??显然不是!!!

试想一下如果ACV或者NAK发生错误,那么发送方根本不会知道接收方到底发生了什么!!!也不会立即重传,这样是会发生冗余的。那怎么办呢??

其实可以为每个分组添加序号,如果ACK/NAK受损发送方会重传当前分组(也不排除序号受损的情况),接收方会按照序号丢弃重复分组。

Rdt 2.1 : 处理受损的 ACK / NAK

发送方
物联网组网与通信技术——传输层基础知识

接收方

物联网组网与通信技术——传输层基础知识

Rdt 2.2 : 一个无NAK协议

用ACK代替NAK,接收方为最后一个成功接收的分组发送ACK,接收方必须在ACK报文中包含所确认的分组序号,当发送方接收到冗余的ACK可视为接收到NAK,会重传当前分组。

物联网组网与通信技术——传输层基础知识

要深刻理解什么是最后一个成功发送的分组

Rdt 3.0 : 具有丢失和错误的信道

以上我们分析了无错、出错的情况,其实还有一个更糟糕的情况那是什么呢?试想如果回复信息丢失了,那发送方是不是要一直等待没有结果?那该怎么办呢?答案其实呼之欲出了,就是设置定时器!!!

情况1:ACK/NAK 丢失了,一段时间结束后,发送方自动重传
情况2:网络不太好,ACK/NAK来迟了,没关系,虽然已经进行了重传,但用序号法就可以解决这个问题了

物联网组网与通信技术——传输层基础知识
这个有什么特点呢?就是说发送方接收到corrupt()或者ACK中其他序号时,不用立即重传,等着timer结束即可

以下介绍了无丢包、丢发送包、丢回复包、时间过长的四种情况。
物联网组网与通信技术——传输层基础知识
物联网组网与通信技术——传输层基础知识

我们所讨论的可靠传输协议被称为停等协议
(1) 每次只能发送一个分组,在高带宽,长延时的链路上,效率非常低
(2)通过引入序号解决重发分组可能带来的数据冗余
(3)通过引入定时器解决分组丢失

思考:这种协议是不是高效呢??显然不是

物联网组网与通信技术——传输层基础知识
物联网组网与通信技术——传输层基础知识

有没有解决办法呢??当然啦!!!

下面介绍可以提高信道利用率的 流水线可靠数据传输协议

流水线技术就是说发送方允许多个未被确认的分组同时传输,所以必须增加序号范围,收发双方都需要缓存多个分组(以备重传),还需要确定序号的范围和缓冲的大小
物联网组网与通信技术——传输层基础知识
物联网组网与通信技术——传输层基础知识

有两种基本形式——回退N步,选择性重传

回退N步需接收方发送累积确认,确认序号表明该分组及以前的分组均正确收到,发送方为每个未确认的分组设置定时器,超时则重传。(重传量可能会比较大)

选择性重传是接收方逐个确认每个分组,发送方为每个未确认的分组设置超时定时器,如果超时仅仅重传超时的分组(ACK的量会比较大,但是能够精准定位)

相关文章: