TCP
面向连接的可靠数据传输协议
首部20字节,主要包括序号(32bit),确认号,源端口,目的端口号(16bit)
序号+累积确认+重传
流量控制:发送方维护接受窗口(接收方缓存空间大小)
四次挥手:全双工,一方请求断开连接,不代表另一方发送数据完毕。fin_wait1---(接收ack)--->fin_wait2---(接收fin,发送ack)--->timewait---()--->closed,time_wait为了给对方重发fin包的时间,且确保该次连接产生的报文段全部消失。
拥塞控制:
1. 慢启动:cwnd初始值为1,每rtt时间翻倍,直到>=ssthresh,进入拥塞避免。或发生一个由超时指示的丢包事件时,ssthresh被置为cwnm/2,cwnd被置为1,并重新开始慢启动。
2. 拥塞避免:每rtt时间cwnd增加1。
3. 快速重传+快速恢复:收到3个冗余的ack将重发未确认的报文段,然后进入快速恢复阶段。
快速恢复:
step1: if(dupacks>=3){ ssthresh=max(2,cwnd/2); cwnd=ssthresh+3; } step2: 重新发送丢失的分组 step3: 此后每收到一次重复的ack,cwnd++。 step4: 收到非重复ack,置cwnd为ssthresh,进入拥塞避免阶段。