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

tcpip協(xié)議 tcpip協(xié)議棧( 四 )


具體流程如下圖:

同時(shí)揮手
3.3 通過序列號(hào)與確認(rèn)應(yīng)答提高可靠性
在 TCP 中,當(dāng)發(fā)送端的數(shù)據(jù)到達(dá)接收主機(jī)時(shí),接收端主機(jī)會(huì)返回一個(gè)已收到消息的通知 。這個(gè)消息叫做確認(rèn)應(yīng)答(ACK) 。當(dāng)發(fā)送端將數(shù)據(jù)發(fā)出之后會(huì)等待對端的確認(rèn)應(yīng)答 。如果有確認(rèn)應(yīng)答,說明數(shù)據(jù)已經(jīng)成功到達(dá)對端 。反之,則數(shù)據(jù)丟失的可能性很大 。在一定時(shí)間內(nèi)沒有等待到確認(rèn)應(yīng)答,發(fā)送端就可以認(rèn)為數(shù)據(jù)已經(jīng)丟失,并進(jìn)行重發(fā) 。由此,即使產(chǎn)生了丟包,仍然能夠保證數(shù)據(jù)能夠到達(dá)對端,實(shí)現(xiàn)可靠傳輸 。未收到確認(rèn)應(yīng)答并不意味著數(shù)據(jù)一定丟失 。也有可能是數(shù)據(jù)對方已經(jīng)收到,只是返回的確認(rèn)應(yīng)答在途中丟失 。這種情況也會(huì)導(dǎo)致發(fā)送端誤以為數(shù)據(jù)沒有到達(dá)目的地而重發(fā)數(shù)據(jù) 。此外,也有可能因?yàn)橐恍┢渌驅(qū)е麓_認(rèn)應(yīng)答延遲到達(dá) , 在源主機(jī)重發(fā)數(shù)據(jù)以后才到達(dá)的情況也屢見不鮮 。此時(shí) , 源主機(jī)只要按照機(jī)制重發(fā)數(shù)據(jù)即可 。對于目標(biāo)主機(jī)來說,反復(fù)收到相同的數(shù)據(jù)是不可取的 。為了對上層應(yīng)用提供可靠的傳輸,目標(biāo)主機(jī)必須放棄重復(fù)的數(shù)據(jù)包 。為此我們引入了序列號(hào) 。序列號(hào)是按照順序給發(fā)送數(shù)據(jù)的每一個(gè)字節(jié)(8位字節(jié))都標(biāo)上號(hào)碼的編號(hào) 。接收端查詢接收數(shù)據(jù) TCP 首部中的序列號(hào)和數(shù)據(jù)的長度,將自己下一步應(yīng)該接收的序列號(hào)作為確認(rèn)應(yīng)答返送回去 。通過序列號(hào)和確認(rèn)應(yīng)答號(hào),TCP 能夠識(shí)別是否已經(jīng)接收數(shù)據(jù) , 又能夠判斷是否需要接收,從而實(shí)現(xiàn)可靠傳輸 。

序列號(hào)和確認(rèn)應(yīng)答
3.4 重發(fā)超時(shí)的確定
重發(fā)超時(shí)是指在重發(fā)數(shù)據(jù)之前,等待確認(rèn)應(yīng)答到來的那個(gè)特定時(shí)間間隔 。如果超過這個(gè)時(shí)間仍未收到確認(rèn)應(yīng)答,發(fā)送端將進(jìn)行數(shù)據(jù)重發(fā) 。最理想的是 , 找到一個(gè)最小時(shí)間 , 它能保證“確認(rèn)應(yīng)答一定能在這個(gè)時(shí)間內(nèi)返回” 。TCP 要求不論處在何種網(wǎng)絡(luò)環(huán)境下都要提供高性能通信,并且無論網(wǎng)絡(luò)擁堵情況發(fā)生何種變化,都必須保持這一特性 。為此,它在每次發(fā)包時(shí)都會(huì)計(jì)算往返時(shí)間及其偏差 。將這個(gè)往返時(shí)間和偏差時(shí)間相加,重發(fā)超時(shí)的時(shí)間就是比這個(gè)總和要稍大一點(diǎn)的值 。在 BSD 的 Unix 以及 Windows 系統(tǒng)中,超時(shí)都以0.5秒為單位進(jìn)行控制,因此重發(fā)超時(shí)都是0.5秒的整數(shù)倍 。不過,最初其重發(fā)超時(shí)的默認(rèn)值一般設(shè)置為6秒左右 。數(shù)據(jù)被重發(fā)之后若還是收不到確認(rèn)應(yīng)答,則進(jìn)行再次發(fā)送 。此時(shí),等待確認(rèn)應(yīng)答的時(shí)間將會(huì)以2倍、4倍的指數(shù)函數(shù)延長 。此外,數(shù)據(jù)也不會(huì)被無限、反復(fù)地重發(fā) 。達(dá)到一定重發(fā)次數(shù)之后,如果仍沒有任何確認(rèn)應(yīng)答返回,就會(huì)判斷為網(wǎng)絡(luò)或?qū)Χ酥鳈C(jī)發(fā)生了異常,強(qiáng)制關(guān)閉連接 。并且通知應(yīng)用通信異常強(qiáng)行終止 。3.5 以段為單位發(fā)送數(shù)據(jù)
在建立 TCP 連接的同時(shí),也可以確定發(fā)送數(shù)據(jù)包的單位,我們也可以稱其為“最大消息長度”(MSS) 。最理想的情況是,最大消息長度正好是 IP 中不會(huì)被分片處理的最大數(shù)據(jù)長度 。TCP 在傳送大量數(shù)據(jù)時(shí) , 是以 MSS 的大小將數(shù)據(jù)進(jìn)行分割發(fā)送 。進(jìn)行重發(fā)時(shí)也是以 MSS 為單位 。MSS 在三次握手的時(shí)候,在兩端主機(jī)之間被計(jì)算得出 。兩端的主機(jī)在發(fā)出建立連接的請求時(shí),會(huì)在 TCP 首部中寫入 MSS 選項(xiàng),告訴對方自己的接口能夠適應(yīng)的 MSS 的大小 。然后會(huì)在兩者之間選擇一個(gè)較小的值投入使用 。3.6 利用窗口控制提高速度
TCP 以1個(gè)段為單位,每發(fā)送一個(gè)段進(jìn)行一次確認(rèn)應(yīng)答的處理 。這樣的傳輸方式有一個(gè)缺點(diǎn) , 就是包的往返時(shí)間越長通信性能就越低 。為解決這個(gè)問題,TCP 引入了窗口這個(gè)概念 。確認(rèn)應(yīng)答不再是以每個(gè)分段,而是以更大的單位進(jìn)行確認(rèn),轉(zhuǎn)發(fā)時(shí)間將會(huì)被大幅地縮短 。也就是說 , 發(fā)送端主機(jī) , 在發(fā)送了一個(gè)段以后不必要一直等待確認(rèn)應(yīng)答 , 而是繼續(xù)發(fā)送 。如下圖所示:

推薦閱讀