计算机网络传输层(上)
传输层概述
1.传输层协议为运行在不同host上的进程提供了一种逻辑通信机制。
2.端系统运行传输层协议:
- 发送方:将应用递交的消息分成一个或多个的segment,并向下穿给网络层。
- 接受方:将接受到的segment组装成消息,并向上叫给应用层。
传输层可以为应用提供多种协议,如:TCP、UDP。
3.传输层与网络层
网络层:提供主机之间的逻辑通信机制。
传输层:提供应用进程之间的逻辑通信机制。
- 位于网络层之上
- 依赖于网络层服务
- 对网络层服务进行(可能)增强
4.Internet传输层协议。
(1)可靠、按序的交付服务(TCP)
- 拥塞控制
- 流量控制
- 连接建立
(2)不可靠的交付服务(UDP)
- 基于“尽力而为”的网络层,没有可靠性方面的扩展
(3)两种服务均不保证延迟和带宽。
多路复用和多路分用
1.接受端进行多路分用:传输层依据头部信息将收到的segment交给正确的socket,即不同的进程。
发送端进行多路复用:从多个socket接受数据,为每块数据封装上头部信息,生成segment,交给网络层。
2.分用的工作方式
(1)主机收到IP数据报
-
每个数据报携带IP地址、目的IP地址
-
每个数据携带一个传输层的段
-
每个段携带源端口号和目的端口号
(2)主机收到segment之后,传输层协议提取IP地址和端口号信息,将segment导向响应的socket(TCP做更多处理)。
3.无连接分用(UDP)
(1)利用端口号创建socket。
(2)UDP的socket用二元标识(目的IP地址、目的端口号)。
(3)主机收到UDP段后
- 检查段中的目的端口号
- 将UDP段导向绑定在该端口号的socket
(4)来自不同源IP地址或源端口号IP数据包被导向同一个socket。
4.面向连接的分用(TCP)
(1)TCP的socket用四元组标识(源IP地址、源端口号、目的IP地址、目的端口号)。
(2)接受端利用所有的四个值将segment导向合适的socket。
(3)服务器可能同时支持多个TCPsocket。
(4)web服务器为每个客户端开不同的socket。
无连接传输协议UDP
1.简介
(1)基于Internet IP协议
- 复用/分用
- 简单的错误效验
(2)“best effort”服务,UDP段可能丢失和非按序到达。
(3)无连接:UDP发送方和接收方之间不需要握手,且每个UDP段的处理独立于其他段。
(4)UDP的优点
- 无需建立连接(延迟短)
- 实现简单,无需维护连接状态
- 头部开销小
- 没有拥塞控制:应用可更好地控制发送时间速率
(5)常用与流媒体应用、DNS、SNMP
- 容忍丢失
- 速率敏感
2.UDP效验和checksum
(1)发送方将段的内容视为16-bit整数,计算所有整数的和,进位加在和的后面,将得到的值按位求反,得到效验和,发送方将效验和放入效验字段。
(2)接收方计算所收到段的效验和,将其与效验和字段进行对比,和相等时也可能存在错误。
可靠数据传输的基本原理
可靠数据传输概述
1.可靠数据传输协议
- 可靠数据传输对应用层、传输层、数据链路层都很重要
- 属于网络top-10问题
- 信道的不可靠特性决定了可靠数据协议(rdt)的复杂性
2.接口
rdt 1.0
1.底层信道完全可靠,不会发生错误,不会丢弃分组。
2.发送方和接受方的FSM独立。
rdt 2.0
1.底层信道可能翻转分组中的位
- 利用效验和检测位错误
2.确认机制
(1)接受方显然地告诉发送单分组已正确接收。
(2)NAK:接收方显示地告诉发送方分组有错误。
(3)发送方收到NAK后,重传分组。
3.基于这种重传机制的rdt协议称为ARQ协议
4.FSM规约
5.rdt 2.0的缺陷
- ACK/NAK出现错误
rdt 2.1和2.2
1.rdt 2.1解决了ACK/NAK错误问题。
2.FSM
3.rdt 2.1 和 rdt 2.0
(1)发送方:
- 为每一个分组增加的序列号
- 需效验ACK/NAK消息是否发送错误
- 状态数量翻倍
(2)接收方
- 需判断分组是否重复
4.rdt 2.2 无NAK消息
(1)与rdt 2.1功能相同,但是只使用ACK。
(2)接受方通过ACK告知最后一个被接收的分组,在ACK消息中显示地加入被确认分组的序列号。
(3)发送方收到重复ACK之后,采取重传当前分组。
rdt 3.0
1.相对于rdt 2.2,rdt 3.0增加了定时器功能,解决当信道传输数据时分组丢失问题。
2.FSM
)
3.性能
(1)rdt 3.0能够正常工作,但性能很差,网络协议限制了物理资源的利用。
流水线机制与滑动窗口协议
流水线协议
1.允许发送方在收到ACK之前连续发送多个分组
- 更大的序列号范围
- 发送方和接收方需要更大的存储空间以缓存分组
滑动窗口协议(GBN,SR)
1.窗口:允许使用的序列号范围,窗口尺寸为N,最多有N个等待消息。
2.滑动窗口:随着协议的运行,窗口在序列号空间内向前滑动。
GNB协议
1.发送方
(1)分组头部包含k-bit序列号。
(2)窗口尺寸为N,最多允许N个分组未确定。
(3)ACK:确定到序列号n的分组均已被正确接收(可能受到重复ACK)。
(4)为空中的分组设置计时器。
(5)超时timeout事件:重传序列号大于等于n,还未受到ACK的所有分组。
(6)FSM
2.接收方
(1)ACK机制:发送拥有最高序列号的、已被正确接收的分组的ACK。
- 可能产生重复的ACK
- 只需要记住唯一的expectedseqnum
(2)对乱序到达的分组的处理:
- 直接丢弃(接收方没有缓存)
- 重新确认序列号最大的、按序到达的分组
(3)FSM
SR(Selective Repeat)协议
1.对GNB协议的优化
(1)接收方设置缓存分区,缓存乱序到达的分组,对每个分组单独进行确定。
(2)发送方只重传那些没收到ACK的分组,为每个分组设置定时器。
(3)增加接收方窗口。
乱序到达的分组的处理:
- 直接丢弃(接收方没有缓存)
- 重新确认序列号最大的、按序到达的分组
(3)FSM
[外链图片转存中…(img-0w52Tr9Y-1634648806861)]
SR(Selective Repeat)协议
1.对GNB协议的优化
(1)接收方设置缓存分区,缓存乱序到达的分组,对每个分组单独进行确定。
(2)发送方只重传那些没收到ACK的分组,为每个分组设置定时器。
(3)增加接收方窗口。
[外链图片转存中…(img-Nrun61kg-1634648806861)]