一,计算机网络运输层
一、TCP 可靠传输的实现
1、TCP的滑动窗口以字节为单位
2、窗口越大,发送方就可以在收到确认之前发送更多的数据,传输效率高,但是接收方必须来的及接收。
3、 窗口的分类:发送窗口,可用窗口,未确认窗口
4、 A 的发送窗口并不总是和B 的接收窗口一样大(因为有一定的时间滞后)。
5、TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。
6、缓存和窗口的关系:缓存一般大于窗口
7、发送缓存与接收缓存的作用
发送缓存用来暂时存放:
发送应用程序传送给发送方TCP 准备发送的数据;
TCP 已发送出但尚未收到确认的数据。
接收缓存用来暂时存放:
按序到达的、但尚未被接收应用程序读取的数据;
不按序到达的数据。
8、超时重传时间的选择: RTO RTTS + 4 RTTD
平均往返时间
新的RTTS (1 ) (旧的RTTS) (新的RTT 样本)
0 1推荐=0.125
RTT 的偏差的加权平均值
新的RTTD = (1 ) (旧的RTTD) + RTTS新的RTT 样本
推荐=0.25
9、如何判定一个确认报文段是对原来的报文段1 的确认,还是对重传的报文段2 的确认?
采用Karn算法:在计算平均往返时间RTT 时,只要报文段重传了,就不采用其往返时间样本。
修正的Karn算法:报文段每重传一次,就把RTO 增大一些:
10、选择确认sack是解决:接收方收到了和前面的字节流不连续的两个字节块,怎样让发送方只发送没有到达的数据段
11、使用SACK时要将TCP首部中的SACK位置1,然后再选项字段填入未接受到的断块的边界值,每个边界值占4个字节,确定一个断块要用两个边界值,所以选项字段最多只能指明4个字节块的信息。另外还要一个选项指明是SACK选项,一个指明SACK占用的字节数
二、TCP 的流量控制:利用滑动窗口实现流量控制
1、流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
2、丢失报文导致互等死锁的解决办法:持续计时器
TCP 为每一个连接设有一个持续计时器。
只要TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。
若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1 字节的数据),而对方就在确认这个探测报文段时给出了现在的