运输层概述
运输层是端到端的通信
可以简单地认为运输层直接为应用进程之间的通信直接提供服务
两个重要协议
RTP 实时传输协议
TCP协议和UDP协议
UDP的效率高于TCP
端口号
熟知端口号 0~1023
运输层端口号 0~65535
注意
发送方的复用和接收方的分用
OSPF直接使用IP协议进行封装
应用实例
UDP和TCP进行对比
实际网络 是全双工的 这里只是简便只用了一个方向的表示
对比总结
TCP报文段的首部格式
数据在和大小= 数据载荷的最后一个数据序号-第一个序号+1
数据偏移字段
保留字段
窗口字段
检验和字段
伪首部
同步标志位SYN
终止标志位 FIN
复位标志为 RST
推送标志位 PUSH
紧急标志位 URG
选项字段
填充字段
三报文握手
过程
注意:主机乙的初始序号是随机选择的
思考为什么是三报文握手而不是两报文握手
四报文挥手释放连接
思考 客户端再发送最后一个确认报文段为什么不直接进入关闭状态而是进入时间等待状态
TCP保活计算器的作用
TCP的流量控制
举例
DATA 表示这是TCP数据报文段
ACK=1 表示这是一个TCP确认报文
ack=201 表示成功接收201之前的所有数据
rwnd窗口字段设置为300 表示当前的可缓存空间是300 不再是之前的400字节 这是第一次对接收端的流量控制
移动滑动窗口 把之前接收到的数据从窗口中删除
由于主机B已经把自己的滑动窗口值设置成了300 相应的主机A的滑动窗口值也设为300 序号201~300的数据是已经发送但是还未被接收的数据 不能删除
至此 序号落在滑动窗口内的数据已经全部发送出去了 不能再发送数据了
一段时间后 序号201~300的数据超时了 进行超时重传
持续计时器
为了打破上面的死锁局面 TCP为每一个连接都设有一个持续计时器
举例说明作用
思考
如果零窗口探测报文在传输过程中丢失了,还会打破这种局面吗?
练习题
TCP的拥塞控制
流量控制与拥塞控制的区别
拥塞控制的方法
闭环控制
显示反馈算法: 更多的源点抑制报文涌入网络中会造成网络更加的堵塞.
进行拥塞控制是需要付出代价的
四种拥塞控制算法
在不考虑拥塞状态的情况下 发送窗口的大小=接收窗口的大小
在不考虑流量控制的情况下 发送窗口的大小=拥塞窗口的大小
慢开始的门限值 有时也称作阈值
慢开始算法和拥塞避免算法
一个传输轮次 就是一个RTT往返时延
发送窗口大小=慢开始的门限值 开始使用拥塞避免算法
1.慢开始 指的是一开始向网络中注入的报文段少 而不是指拥 塞窗口cwnd得值增长的速度缓慢.
2.拥塞避免 也不是指 完全能够拥塞避免,而是指在拥塞避免阶段将cwnd的值按线性规律增长 使网络较为不容易的出现堵塞
快重传和慢恢复算法(改进TCP性能)
快重传算法
快重传举例说明
快恢复算法
四种拥塞控制算法的实例
流程图
TCP拥塞控制与网际层拥塞控制的关系
TCP可靠传输的实现
假设
发送窗口的后沿不会向后移动,因为没办法撤销已经发送并且接受的数据
采用三个指针 p1 p2 p3分别指向相应的字节序号
非按序到达的数据
假设31号数据到了接收方
接收方将31~33号数据交付给应用进程 向前移动滑动窗口(3个字节) 并发送确认字段
37,38,40号数据是未按序到达的数据 先放入接收缓存内
假设接收方先前发送的数据31~33的确认报文 发送窗口向前移动3个字节
TCP超时重传
TCP的选择确认 SACK