计算机网络基础
大家好呀!我是小笙,本章我主要分享计算机网络基础 - 传输层(3)学习总结,希望内容对你有所帮助!!
传输层
面向连接的传输 TCP
可靠数据传输
概述
TCP在IP不可靠的尽力而为服务之上创建了一种可靠数据传输服务
- 单个重传定时器(定时器的管理需要相当大的开销,类似于 GBN)
- 累计确认,累计确认 ACK 以前的所有分组(不包括本身,类似于 GBN,但是有区别,区别在于 GBN 包括分组本身的确认)
- 超时重传的条件
- 超时,重传具有最小序号但仍未应答的报文段
- 重复的确认,例如收到同一分组数据的3个重复的 ACK
TCP 发送方事件(以下为为伪代码)
- 从应用层接收到数据
- 定时器超时
- 收到确认号
// 假设发送方不受 TCP流量 和 拥塞控制 的限制,来自上层数据的长度小于 MSS,且数据传送只在一个方向进行
NextSeqNum = InitialSeqNumber
SendBase = InitialSeqNumber
loop(永远){
switch(事件)
事件:从上面应用程序接收到数据 e
生成具有序号 NextSeqNum 的TCP报文段
if(定时器当前没有运行)
启动定时器
向IP传递报文段
NextSeqNum = NextSeqNum + length(data)
break;
事件:定时器超时
重传具有最小序号但仍未应答的报文段(不像 SR,需要重传所有未确认的段)
启动定时器
break;
事件:收到ACK,具有ACK字段值 y
if(y > SendBase) {
SendBase = y
if(当前仍无任何应答报文段)
启动定时器
}
break;
}
快速重传
超时触发重传存在的问题:当一个报文段丢失时,这种相对较长超时周期迫使发送方延迟重传丢失的分组,因而增加了端到端的时延
快速重传就是在没有超时重传的情况下就进行重传已知丢失