發(fā)送方流量控制cwnd: Congestion Window:
流量也受網(wǎng)絡(luò)影響較大仑荐,所以可能發(fā)送的數(shù)量不超過接收方的rmnd但是超過了網(wǎng)絡(luò)能承載的導(dǎo)致通信變慢甚至網(wǎng)絡(luò)癱瘓
cwnd代表發(fā)送方每次發(fā)送的數(shù)據(jù)量蜕猫,他是從1開始指數(shù)級(jí)增長(zhǎng)的艰匙,(慢開始算法)一開始為1是為了探測(cè)網(wǎng)絡(luò)情況栏渺,但是不能讓他一直無(wú)限制增長(zhǎng)该押,需要ssthresh來控制它裙犹,ssthresh是發(fā)送方的一個(gè)初始值伙判,當(dāng)cwnd小于ssthresh象对,才用慢開始算,當(dāng)cwnd大于ssthresh采用擁塞避免算法即cwnd每次加一的增長(zhǎng)而不是指數(shù)級(jí)增長(zhǎng)宴抚,這個(gè)是發(fā)送方的自我限制勒魔。
什么時(shí)候停止的甫煞?當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞的時(shí)候
發(fā)送方怎么判斷什么時(shí)候出現(xiàn)網(wǎng)絡(luò)有擁塞?
1.發(fā)送方?jīng)]有及時(shí)收到接收方的ack也就是timeout signal
2.接收方有一個(gè)超時(shí)重傳機(jī)制冠绢,如果在接收m1 m2的包之后沒有收到m3抚吠,就會(huì)重傳m2,及時(shí)他收到了m4弟胀,因?yàn)閙1 m2 m4 順序不連貫楷力,所以也會(huì)超時(shí)重傳m2,當(dāng)發(fā)送方三次收到了m2的重傳孵户,就知道m(xù)3丟了會(huì)再次發(fā)送m3 這時(shí)發(fā)送發(fā)認(rèn)為出現(xiàn)了網(wǎng)絡(luò)擁塞
針對(duì)第1種:發(fā)送方把cwnd 設(shè)置為1萧朝,ssthresh設(shè)置為初始值的一半 然后開始慢開始算法
針對(duì)第2種:把ssthresh設(shè)置為初始值的一半 cwnd 等于此時(shí)的ssthresh 然后開始擁塞避免算法
接收方流量了控制:rmnd :receiver window在tcp的頭部控制的,詳細(xì)請(qǐng)見流量控制:接收方每次通過ack夏哭,并存放這個(gè)值在tcp head的window里告知發(fā)送方我現(xiàn)在能接收的數(shù)據(jù)量是多大检柬,你發(fā)送多少過來