- 可靠是指传输过程中不丢失与损坏数据
- IP并不能保证数据传输可靠
- 因此需要transport layer保证
acknowledgments
- ack
- 数据接收方在接受数据后发回positive ack表示正常,negative ack表示需要重新发送数据
- 这种protocol一般被叫做ARQ (Automatic Repeat reQuest) protocols
sequence number
- 在多个数据包同时传输时,对数据包编号有利于区分被正常传输的数据包和需要重新传输的数据包
- 数据包编号与ack一同被发回发送方
- 该编号初始值可以是随机的
timeout
- 因为发回的ack也有可能丢失,发送方在这种情况下无法知晓接收方的接收情况
- 在这种情况下,数据包发送一段时间但没有收到ack情况下,发送方会重新发送数据
- 如果上次传输的数据是可用的,接受方接受数据后可以选择丢弃
pipelining
- 单次仅发送一个数据包会造成主机资源的极大浪费,因为主机除了处理数据的时间外都在等待
window
- 为了避免接收方无法一次接受太多数据,发送方需要限制在途的数据包数量在一定范围内
- size不能超过数据包总量的一半
两种pipeline error recovery的方法
- Go-Back-N (GBN) protocol
- Selective Repeat