您的位置:首页 > 理论基础 > 计算机网络

tcp/ip之面试必备

2015-07-26 13:35 399 查看
一 拥塞控制

3个变量:cwnd(拥塞窗口)、ssthresh(慢启动门限)、win(滑动窗口)

1.1慢启动:tcp数据开始发送时,和ack包超时时,会执行慢启动

1)传输开始->执行慢启动,cwnd初始化为1,ssthresh=65535,每收到一个ack,cwnd就增加一个报文段cwnd 会以指数速度增大;

2)超时->执行慢启动,cwnd=1,ssthresh=min(cwnd,win)/2,直到cwnd>sshresh,转为拥塞避免算法;

1.2拥塞避免:cwnd大于ssthresh时,开始执行拥塞避免算法,每收到一个ack,cwnd更新为cwnd+1/cwnd(此处cwnd单位为报文段);

1.3快速重传和快速回复:当收到三个重复的ack时,会执行快速重传和快速恢复,过程如下:

收到三个重复的ack->sshresh设为cwnd/2,cwnd设为ssthresh+3,重传丢失的报文,每次收到另外一个重复的ack,cwnd=cwnd+1,直到收到一个新的ack,cwnd设为ssthresh,进入拥塞避免算法;

二 MSS、TIME_WAIT

MSS(最大报文长度),建立连接时,双方会在tcp选项里互发MSS,通常为MTU-IP首部-TCP首部;

TIME_WAIT状态,当tcp执行主动关闭,发回ack,必须在TIME_WAIT状态停留2MSL的时间,这样可以让tcp再次发送最后一个丢失的ack,设置SO_REUSEADDR选项可以重新使用此端口,但tcp不允许一个连接建立在相同的socket对上;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: