日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

http協(xié)議哪一層 tcp如何保證可靠性

1. TCP 可靠性如何保證?

  1. 信道可靠:用三次握手、四次揮手保證連接正確;
  2. 數(shù)據(jù)正確:分區(qū)編號、校驗(yàn)和、超時(shí)重傳;
  3. 傳輸控制:流量控制、擁塞控制
2. 重傳機(jī)制TCP可靠傳輸方式是序列號與確認(rèn)應(yīng)答 。當(dāng)傳送數(shù)據(jù)包丟失時(shí),會用重傳機(jī)制解決 。常見重傳機(jī)制有超時(shí)重傳、快速重傳、SACK、D-SACK 。
2.1 超時(shí)重傳TCP協(xié)議要求在發(fā)送端每發(fā)送一個(gè)報(bào)文段,就啟動(dòng)一個(gè)定時(shí)器并等待確認(rèn)信息;接收端成功接收新數(shù)據(jù)后返回確認(rèn)信息 。若在定時(shí)器超時(shí)前數(shù)據(jù)未能被確認(rèn),TCP就認(rèn)為報(bào)文段中的數(shù)據(jù)已丟失或損壞,需要對報(bào)文段中的數(shù)據(jù)重新組織和重傳 。
2.2 快速重傳?如果收到一個(gè)失序的報(bào)文段時(shí),TCP需要立刻產(chǎn)生一個(gè)ACK,這個(gè)ACK不應(yīng)該被延時(shí),目的在于讓對方知道收到一個(gè)失序的報(bào)文,并告訴對方自己希望收到的報(bào)文seq,我們不知道這個(gè)重復(fù)的ACK的原因,因?yàn)檫€是會等待少量的重復(fù)ACK到來,如果連續(xù)收到3個(gè)或者3個(gè)以上的dup ACK,就被判斷這個(gè)報(bào)文被丟失了,于是就需要立即重傳丟失的數(shù)據(jù)段,這個(gè)地方不用等待定時(shí)器溢出 。
3. 滑動(dòng)窗口協(xié)議在TCP協(xié)議中,發(fā)送方和接受方通過各自維護(hù)自己的緩沖區(qū) 。通過商定包的重傳機(jī)制等一系列操作,來解決不可靠的問題 。為了增加網(wǎng)絡(luò)的吞吐量,想將數(shù)據(jù)包一起發(fā)送過去,便產(chǎn)生了“滑動(dòng)窗口”協(xié)議。
滑動(dòng)窗口實(shí)現(xiàn)
http協(xié)議哪一層 tcp如何保證可靠性


在圖中,我們可看出灰色1號2號3號包已經(jīng)發(fā)送完畢,并且已經(jīng)收到Ack 。這些包就已經(jīng)是過去式 。4、5、6、7號包是黃色的,表示已經(jīng)發(fā)送了 。但是并沒有收到對方的Ack,所以也不知道接收方有沒有收到 。8、9、10號包是綠色的 。是我們還沒有發(fā)送的 。這些綠色也就是我們接下來馬上要發(fā)送的包 ??梢钥闯鑫覀兊拇翱谡檬?1個(gè) 。后面的11-16還沒有被讀進(jìn)內(nèi)存 。要等4號-10號包有接下來的動(dòng)作后,我們的包才會繼續(xù)往下發(fā)送 。
正常情況
http協(xié)議哪一層 tcp如何保證可靠性


【http協(xié)議哪一層 tcp如何保證可靠性】
可以看到4號包對方已經(jīng)被接收到,所以被涂成了灰色 ?!按翱凇本屯乙埔桓?,這里只要保證“窗口”是7格的 。我們就把11號包讀進(jìn)了我們的緩存 。進(jìn)入了“待發(fā)送”的狀態(tài) 。8、9號包已經(jīng)變成了黃色,表示已經(jīng)發(fā)送出去了 。接下來的操作就是一樣的了,確認(rèn)包后,窗口往后移繼續(xù)將未發(fā)送的包讀進(jìn)緩存,把“待發(fā)送“狀態(tài)的包變?yōu)椤币寻l(fā)送“ 。
丟包情況
http協(xié)議哪一層 tcp如何保證可靠性


有可能我們爆發(fā)過去,對方的Ack丟了 。也有可能我們的包并沒有發(fā)送過去 。從發(fā)送方角度看就是我們沒有收到Ack 。
發(fā)生的情況:一直在等Ack 。如果一直等不到的話,我們也會把讀進(jìn)緩存的待發(fā)送的包也一起發(fā)過去 。但是,這個(gè)時(shí)候我們的窗口已經(jīng)發(fā)滿了 。所以并不能把12號包讀進(jìn)來,而是始終在等待5號包的Ack 。
超時(shí)重發(fā)
http協(xié)議哪一層 tcp如何保證可靠性


這個(gè)Ack是要按順序的 。必須要等到5的Ack收到,才會把6-11的Ack發(fā)送過去 。這樣就保證了滑動(dòng)窗口的一個(gè)順序 。這時(shí)候可以看出5號包已經(jīng)接受到Ack,后面的6、7、8號包也已經(jīng)發(fā)送過去已Ack 。窗口便繼續(xù)向后移動(dòng) 。
4. 流量控制如果發(fā)送方把數(shù)據(jù)發(fā)送得過快,接收方可能會來不及接收,這就會造成數(shù)據(jù)的丟失 。所謂流量控制就是讓發(fā)送方的發(fā)送速率不要太快,要讓接收方來得及接收 。原理這就是運(yùn)用TCP報(bào)文段中的窗口大小字段來控制,發(fā)送方的發(fā)送窗口不可以大于接收方發(fā)回的窗口大小 。

推薦閱讀