**1.概述和运输层服务
2.多路复用和多路分解
3.无连接运输:UDP
4.构造可靠数据传输协议
5.TCP概述
6.往返时间的估计和超时
7.TCP流量控制与连接管理
8.拥塞控制及总结
1.传输层服务概述
2.多路复用和多用分用
3.UDP协议
4.可靠传输协议
rdt1.0
rdt2.0
rdt2.0的巨大缺陷:
如果ACK和NAK发生了错误你就没办法知道发送错误了没有,就会无限制等待,那么该怎么办呢?
在rdt2.1中解决办法:如果ACK/NAK发生了错误那就让发送方重传,但是重传可能导致重复,那该怎么应对这种重复呢?
增加序列号(Sequence number):发送方给每个分组增加序列号,接收方根据序列号判断重复了还是新的,如果重复了,那就丢掉,如果是新的那就留下
- 收到了一个 ACK 分组(rdt_rcv(rcvpkt) && isACK(rcvpkt))
- 收到了一个 NAK 分组(rdt_rcv(rcvpkt) && isNAK(rcvpkt))
- 收到的分组受损,即 rdt_rcv(rcvpkt) && corrupt(rcvpkt)
- 收到的分组完好,即 rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
rddt2.1
发送方的状态机:
接收方的状态机:
rdt 2.2
rdt 3.0
红笔就是比rdt 2.2多了的操作
5.滑动窗口协议
1.流水线机制
要实现流水线机制那就需要滑动窗口协议
滑动窗口协议有两种GBN和SR
GBN协议
SR协议
SR协议的问题:
分割线 |
分割线 |
以下为超重点部分—TCP协议
1.TCP协议
TCP报文段的首部格式
TCP的序号和确认号
分割线 |
分割线 |
2.TCP往返时延的估计和超时
经过线性拟合什么的就可以利用公式设置RTT的值
我们一般不愿意让超时发生,因为一旦超时就会重新设置时间间隔导致超时时间间隔加倍,所以我们期望用别的方式来检测丢失-----那就是重复的ACK。因为流水线机制中,这个分组丢了,后面的分组被收到的时候接收方就会说“我要的是这个但你给我的是后面的分组”,如果某一个分组丢失,往往会引发多个重复的ACK。通过重复的ACK就可以确定一个数据段是否丢失。
分割线 |
分割线 |
3.TCP流量控制
分割线 |
分割线 |
4.TCP连接管理
分割线 |
分割线 |
5.TCP拥塞控制
拥塞的成因及其影响
- 流量控制是发送发不要发送的太快以至于接收方处理不了,
- 拥塞控制是发送发不要发送的太快以至于网络处理不了
拥塞控制的方法
Loss事件的处理与拥塞控制
TCP性能分析