第五章 传输层
文章目录
5.1 运输层协议概述
5.1.1 进程之间的通信
- 运输层是用户功能中的最底层,也是面向通信部分的最高层,是一个承上启下的层
- 运输层的作用:
- 提供进程之间的通信
- 复用和分用
- 屏蔽网络的复杂结构
- 信道的两种类型:
- 面向连接的可靠信道
- 无连接的不可靠信道
5.1.2 运输层的两个主要协议
-
两个协议:
- 用户数据报UDP
- 传输控制协议TCP
-
这两个协议的区别;
UDP是无连接的,不需要任何确认,不提供可靠交付
TCP可靠的,不提供广播或多播服务,开销较多
5.1.3 运输层的端口
-
为什么要端口?
- 多个os给进程取名字的方式不一样
- 进程的创建和撤销都是动态的,因此发送方几乎无法识别其他机器上的进程
- 需要利用目的主机提供的功能来识别重点,而不需要知道具体实现这个功能的进程是那个
- 有时候,我们需要该换进程
-
什么是端口号?
-
即为通信链路的抽象终点
-
门
-
缓存
-
-
端口怎么取名?
十六位二进制编码
-
端口值具有本地意义,只是为了标志本计算机应用层的各进程
-
软件端口的分类:
- 客户端使用的端口:一般是临时的
- 服务器端使用的端口:一般是长时间存在的
5.2 用户数据报协议UDP
5.2.1 UDP概述
- UDP主要特点:
- 无连接
- 使用尽最大努力交付
- 面向报文(报文的长度要适中,不能太大,因为太大就会切片浪费时间;也不能太小,否则首部的相对长度太大,效率太低)
- 没有拥塞控制
- 一对一,一对多,多对一,多对多
- 首部开销小,只有8个字节
5.2.2 UDP的首部格式
- UDP在计算校验和的时候要加上伪首部,这点要注意,不是直接计算
5.3 传输控制协议TCP概述
5.4 可靠传输
5.5 TCP报文段的首部格式
5.6 TCP可靠传输的实现
5.6.1 以字节为单位的滑动窗口
5.6.2 超时重传时间的选择
-
超时重传时间的设置:
- 不能太长:否则会引起很多报文段的不必要重传,网络负荷增大
- 不能太短:网络空闲时间增大,降低了传输效率
-
加权平均往返时间: R T T S RTT_S RTTS,又称为平滑的往返时间
-
R T T S = ( 1 − α ) × ( 旧 的 R T T S ) + α × ( 新 的 R T T S ) RTT_S=(1-\alpha)\times(旧的RTT_S)+\alpha\times(新的RTT_S) RTTS=(1−α)×(旧的RTTS)+α×(新的RTTS)
-
超时重传时间:RTO
-
R T O = R T T S + 4 × R T T D RTO = RTT_S + 4 \times RTT_D RTO=RTTS+4×RTTD
-
Karn算法
- 在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间
5.7 TCP流量控制
5.7.1 利用流量窗口实现流量控制
5.7.2 TCP的传输速率
5.8 TCP的拥塞控制
5.8.1 拥塞控制的一般原理
-
拥塞:在某一段时间,对网络中的某资源的需求超过了该资源所能提供的可用部分,网络的性能就要明显变坏,吞吐量随负荷的增大而下降,这种现象就叫拥塞,最坏的结果就是系统崩溃了
-
拥塞发生的原因:
- 因素很多,如结点缓存容量太小
- 链路容量不足
- 处理机处理速率太慢
- 拥塞本身会进一步加剧拥塞
-
出现拥塞的条件:对资源的需求求和 > 可用资源
-
增加资源能够解决拥塞吗?
不能,而且还可能使网络 的性能更坏
-
拥塞控制:防止过多的数据注入到网络中,避免网络中的路由器或链路过载
-
拥塞控制使一个全局性的过程,设计到所有的主机,路由器,以及与降低网络传输性能有关的所有因素。
-
拥塞控制的一般原理:
- 拥塞控制的前提:网络能够承受的现有网络负荷
- 拥塞控制很难设计,因为它是一个动态问题
- 开环控制和闭环控制:
- 开环控制:在设计网络时,事先考虑周全,力求工作时不发生拥塞
- 基于反馈环路的概念,根据网络当前的运行状态采取相应的控制措施
- 闭环控制的措施:
- 监测
- 传送
- 调整
5.8.2 TCP的拥塞控制方法
- 发送方判断拥塞的方法:隐式反馈
- 慢开始:
- 目的:
5.8.3 主动队列管理AQM
5.9
5.9.1 TCP连接建立
5.9.2 TCP连接释放
5.9.3 TCP有限状态机
- 调整
5.8.2 TCP的拥塞控制方法
- 发送方判断拥塞的方法:隐式反馈
- 慢开始:
- 目的: