运输层
TCP
TCP在关闭的时候,会互相发出终止报文
拥塞控制原理
当网络中发生拥塞时,通常表现为丢包,所以当发送端检测到计时器超时或冗余ACK时,就会知道网络拥塞了,这时候TCP会调节发送方的拥塞窗口(cwnd)的长度
具体来说就是拥塞发生时,cwnd减小,正常传输时,cwnd增大
慢启动
当一条TCP连接开始时,其cwnd通常设置为一个MSS的较小值,则其传输速率为MSS/RTT
当一条报文被ACK时,发送方就增加一个MSS,如图
慢启动状态结束一共有三种方式
第一种方式为遇到一个由超时指示的丢包事件,这时候TCP会将ssthresh(慢启动阈值)设定为cwnd/2,并将cwnd重新置为1,然后重新开始慢启动
第二种方式为cwnd达到ssthresh,这个时候再将cwnd继续翻番可能有些鲁莽,所以这时慢启动模式结束,TCP转移到拥塞避免模式
第三种方式为遇到一个由冗余ACK指示的丢包事件,这时TCP进行一次快速重传,将ssthresh设定为cwnd/2,cwnd设定为ssthresh+3*MSS,然后转移到快速恢复模式
拥塞避免
拥塞避免模式采用一种保守的方法增加cwnd,即每个RTT只增加一个MSS,例如一个MSS为1460字节,cwnd为14600字节,则一个RTT内发送10个报文段,每个ACK增加1/10MSS,当10个ACK全部收到后,增加一个MSS
在拥塞避免模式遇到由超时指示的丢包事件,做法与慢启动一样,将ssthresh(慢启动阈值)设定为cwnd/2,并将cwnd重新置为1,然后重新进入慢启动
在遇到冗余ACK时也与慢启动一样
快速恢复
增长方式同拥塞避免,每个RTT增加一个MSS