tcp

发送方

  • 对一个ack应等待多长时间?

接收方

  • 接收到的分组有错误
    A:不回复ack,等待发送方重传

  • 收到重复的分组
    A:使用序列号处理,序列号相同的,则丢弃。

  • 接收速率小于发送速率
    A:流量控制,可分为两种

  • 基于速率的流量控制——设定一个最大速率,发送方不能超过这个速率。

  • 基于窗口大小的流量控制——在回复的ack中告诉发送方改变窗口大小。

中间设备

  • 由于路由器转发能力不足,内存限制等因素,导致无法承受发送方的快速发送速率怎么办
    A:拥塞控制,可分为两种
  • 明确发信:一个协议字段用来告诉发送方(ECN位)
  • 隐性发信:根据其他因素某些因素来判断。

1.窗口机制

  • 分组窗口:作为接收发送方发送的但还没完成确认的分组的集合。其中,分组的最大数量就是窗口大小。

  • 滑动窗口

    • 发送方:用于记录哪些分组可以被释放,哪些分组已经发送,正在等待ack,哪些分组还不能被发送
    • 接收方:哪些分组已经被接收和确认(无误),哪些分组是期望收到的(以及分配了多少内存给他们),哪些分组即使被接收了也会因为内存限制而丢弃
  • 窗口缩放选项:比例系数0表示没有放大(即窗口大小原来的值),最大为14,能够将窗口大小放大214倍,所以TCP窗口最大为65535x214,正好1GB。所以TCP使用一个32位的值来维护真实的窗口大小。

    • 该选项只能出现在SYN报文中,建立连接之后,比例系数与方向绑定。
    • 比例系数(因子)是多少,读窗口大小的时候就左移多少位。

2.超时重传

超时应该要设置为比RTT平均值要大的某个值,若设置太小,则可能会发送很多重传包,占用带宽,若设置太大,使得网络变空闲,从而降低吞吐量。

你可能感兴趣的:(tcp)