專利名稱::自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的系統(tǒng)與方法
技術(shù)領(lǐng)域:
:本發(fā)明提供一種自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的系統(tǒng)與方法。當(dāng)來源端主機(jī)收到ICMPUnreachable(FragmentationRequired)錯(cuò)誤信息后,若來源端主機(jī)有處理此種ICMPUnreachable(FragmentationRequired)錯(cuò)誤信息的能力,則之后傳送數(shù)據(jù)封包往該目的地主機(jī)時(shí),數(shù)據(jù)封包便會(huì)予以切割以符合該MTU值,使得送出的封包能通過原先無法通過的路徑;但是,該MTU值只有記錄在該來源端單一主機(jī)上,其他主機(jī)并不知道這個(gè)MTU值,故當(dāng)另一臺(tái)主機(jī)傳送數(shù)據(jù)封包到同一目的地主機(jī)時(shí),須再經(jīng)過相同的處理情形,即得等收到ICMPUnreachable(FragmentationRequired)錯(cuò)誤信息,再重新切割重傳,造成時(shí)間效益上的浪費(fèi)。若來源端主機(jī)并沒有處理這種ICMPUnreachable(FragmentationRequired)錯(cuò)誤信息的能力,則不知傳送前,應(yīng)該將數(shù)據(jù)封包做適當(dāng)?shù)那懈?,將使得?shù)據(jù)封包依舊無法通過該繞送路徑,且會(huì)持續(xù)重傳數(shù)據(jù)封包,直到來源端主機(jī)與目的地主機(jī)間斷線。由此可知,已知的封包傳送方式仍存在有諸多缺點(diǎn),而有必要予以改進(jìn),發(fā)明人爰因于此,本著積極發(fā)明的精神,亟思一種可以解決上述問題的“自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的系統(tǒng)與方法”,幾經(jīng)研究終至完成此項(xiàng)嘉惠世人的發(fā)明。根據(jù)本發(fā)明的一特色,所提出的自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的系統(tǒng),主要包括至少第一來源主機(jī)與第二來源主機(jī);一第一路由器;一第二路由器,是與該第一路由器間存有一較小的通道寬度;一第三路由器,是與該至少第一來源主機(jī)與第二來源主機(jī)直接或間接連接,并與該第一路由器直接或間接相連接,且位于該第一路由器與該至少第一來源主機(jī)與第二來源主機(jī)之間;以及一目的主機(jī),是與該第二路由器直接或間接相連接;其中,該第三路由器能自動(dòng)收集網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息(InternetControlMessageProtocolUnreachableError),并記錄該信息中到該原目的主機(jī)間通道的最大傳輸單元(MaximumTransmissionUnit,MTU)的最小值與該原目的主機(jī)的網(wǎng)際網(wǎng)路IP地址,使得爾后當(dāng)該第一或第二來源主機(jī)與該目的主機(jī)連線時(shí),對(duì)該來源主機(jī)所發(fā)出的連線封包(SYNCPacket)中的最大數(shù)據(jù)段長(zhǎng)度值(MaximumSegmentSize,MSS)與記錄的最大傳輸單元(MTU)做一比較處理,再傳送至該目的主機(jī),而該目的主機(jī)將會(huì)比對(duì)該連線封包中的“最大數(shù)據(jù)段長(zhǎng)度(MaximumSegmentSize,MSS)值與其所預(yù)設(shè)的最大數(shù)據(jù)段長(zhǎng)度值,并采用較小的最大數(shù)據(jù)段長(zhǎng)度值,該目的主機(jī)再傳回一含有該較小的最大數(shù)據(jù)段長(zhǎng)度值的認(rèn)可的連線封包(SYNC/ACKPacket)給該來源主機(jī),該來源主機(jī)收到該認(rèn)可的連線封包后,亦會(huì)采用該較小的最大數(shù)據(jù)段長(zhǎng)度值,以達(dá)成來源端與目的端主機(jī)均采用相同較小的最大數(shù)據(jù)段長(zhǎng)度值。其中該第三路由器對(duì)該來源主機(jī)所發(fā)出的連線封包進(jìn)行比較處理,若該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值,大于該第三路由器的繞送路徑表記錄對(duì)應(yīng)的同一目的地的最大傳輸單元減去特定固定長(zhǎng)度標(biāo)頭值,則依照傳輸單元值計(jì)算一新的最大數(shù)據(jù)段長(zhǎng)度值,再將計(jì)算后的結(jié)果取代該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值,否則,保留原本的最大數(shù)據(jù)段長(zhǎng)度值。其中該至少第一來源主機(jī)與第二來源主機(jī)是與該目的主機(jī)建立TCP連線。根據(jù)本發(fā)明的另一特色,所提出的自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的方法,主要包括下述的步驟(A)若該第一來源主機(jī)經(jīng)由該第三路由器、第一路由器、及第二路由器傳送一大于該第一路由器與第二路由器間通道寬度的數(shù)據(jù)封包至該目的主機(jī),且該數(shù)據(jù)封包的IP標(biāo)頭設(shè)定了不可分割比特(Don’tFragmentBit),則該第一路由器將會(huì)拋棄數(shù)據(jù)封包,并傳回一個(gè)網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息(InternetControlMessageProtocolUnreachableError)封包給該第一來源主機(jī),該信息封包中并含有無法通過的通道寬度的最大傳輸單元(MaximumTransmissionUnit,MTU)值;(B)當(dāng)該網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息封包經(jīng)過該第三路由器,則由該第三路由器將該信息封包中的最大傳輸單元值及原無法送達(dá)的目的主機(jī)的網(wǎng)際網(wǎng)路地址,記錄儲(chǔ)存于其繞送路徑表中;(C)當(dāng)該第一或第二來源主機(jī)與該目的主機(jī)再建立連線,該來源主機(jī)所送出的連線封包將先通過該第三路由器,該第三路由器將查詢繞送路徑表以比對(duì)處理該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值與先前記錄的最大傳輸單元值,再將該連線封包送至該目的主機(jī);(D)該目的主機(jī)接收該連線封包,并比對(duì)該連線封包的最大數(shù)據(jù)段長(zhǎng)度值與該目的主機(jī)預(yù)設(shè)的最大數(shù)據(jù)段長(zhǎng)度值,且采用較小的最大數(shù)據(jù)段長(zhǎng)度值;以及(E)該目的主機(jī)傳回一含有較小的最大數(shù)據(jù)段長(zhǎng)度值的認(rèn)可連線封包(SYNC/ACKPacket)至該來源主機(jī),使得該來源主機(jī)與該目的主機(jī)達(dá)成采用相同較小的最大數(shù)據(jù)段長(zhǎng)度值。其中于步驟(A),當(dāng)該大于該第一路由器與第二路由器間的通道寬度的數(shù)據(jù)封包通過該第一路由器,則該第一路由器丟棄該數(shù)據(jù)封包,并發(fā)出一網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息封包給該第一來源主機(jī),且該信息封包中尚含有該第一路由器與該第二路由器間通道寬度的最大傳輸單元值。其中于步驟(B),該第三路由器能取出該網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息封包中的最大傳輸單元值以及無法送達(dá)的目的主機(jī)的網(wǎng)際網(wǎng)路地址,并記錄儲(chǔ)存于該第三路由器的繞送路徑表中。其中于步驟(C),若該連線封包的最大數(shù)據(jù)段長(zhǎng)度值,大于該第三路由器的繞送路徑表記錄對(duì)應(yīng)的同一目的地的最大傳輸單元減去特定固定長(zhǎng)度標(biāo)頭值,則依該最大傳輸單元值計(jì)算一新的數(shù)據(jù)段長(zhǎng)度值,且將計(jì)算后的結(jié)果取代該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值,否則,保留該連線封包原本的最大數(shù)據(jù)段長(zhǎng)度值。其中該至少第一來源主機(jī)與第二來源主機(jī)是與該目的主機(jī)建立TCP連線。由于本發(fā)明構(gòu)造新穎,能提供產(chǎn)業(yè)上利用,且確有增進(jìn)功效,故依法申請(qǐng)發(fā)明專利。圖4是本發(fā)明的儲(chǔ)存于第三路由器中的繞送路徑表的一部份;圖5是本發(fā)明再度連線時(shí)第三路由器比對(duì)、修改MSS值的動(dòng)作流程圖。請(qǐng)先參閱圖1所顯示的系統(tǒng)架構(gòu)圖,其包括有網(wǎng)路中的來源端1、第三路由器2、第一路由器3、第二路由器4、以及目的主機(jī)5。其中,來源端1中包括第一來源主機(jī)11、第二來源主機(jī)12、以及第三來源主機(jī)13等三臺(tái)主機(jī)。前述中本發(fā)明的第三路由器2,可能直接或間接與第一來源主機(jī)11、第二來源主機(jī)12、及第三來源主機(jī)13相連接。第三路由器2可能直接或間接與第一路由器3相連接,而第一路由器3與第二路由器4間為直接連接,中間存在一較小的通道。第二路由器4的另一端則可能直接或間接連接至目的主機(jī)5。圖2顯示本發(fā)明的來源端送出數(shù)據(jù)封包過大時(shí),第一路由器3及第三路由器2的動(dòng)作流程圖,當(dāng)來源端1中的第一來源主機(jī)11已經(jīng)與目的主機(jī)5建立TCP連線,且第一路由器3與第二路由器4間的連線通道寬度為522字符(byte)。第一來源主機(jī)11開始傳送數(shù)據(jù)封包(步驟S201),直到突然有一個(gè)數(shù)據(jù)封包長(zhǎng)度為600字符(且IP標(biāo)頭設(shè)定了不可分割比特),其超過第一路由器3與第二路由器4間的連線通道寬度,則第一路由器3將會(huì)丟棄該長(zhǎng)度為600字符的數(shù)據(jù)封包(步驟S202),且第一路由器3會(huì)傳送一個(gè)網(wǎng)際網(wǎng)路控制信息協(xié)定(InternetControlMessageProtocol,ICMP)的無法抵達(dá)(Unreachable)必須分割(FragmentationRequired)的錯(cuò)誤信息(type=3,code=4)封包給第一來源主機(jī)11,以告知第一路由器3與第二路由器4間所允許傳送的“最大傳輸單元”(MaximumTransmissionUnit,MTU)值為552字符(步驟S203)。圖3顯示出ICMPUnreachable(FragmentationRequired)錯(cuò)誤信息的內(nèi)容,其包含著二路由器間所允許傳送的MTU值。當(dāng)此ICMPUnreachable(FragmentationRequired)錯(cuò)誤信息封包經(jīng)過第三路由器2時(shí),第三路由器2會(huì)將封包中原IP標(biāo)頭的目的主機(jī)5的IP地址及MTU值取出,以記錄到本身的繞送路徑表(routingtable)中(步驟S204)。圖4顯示出數(shù)據(jù)封包中的目的主機(jī)IP地址,搭配MTU值552字符儲(chǔ)存于繞送路徑表的一部份。圖5顯示來源端1的主機(jī)建立新連線時(shí),驅(qū)使連線后,來源端送出數(shù)據(jù)封包長(zhǎng)度符合通道寬度的動(dòng)作流程圖。當(dāng)?shù)谝粊碓粗鳈C(jī)11或第二來源主機(jī)12或第三來源主機(jī)13與目的主機(jī)5建立新的TCP連線時(shí),由來源端1所發(fā)出的連線封包經(jīng)過第三路由器2(步驟S501),則第三路由器2將會(huì)比對(duì)連線封包的目的地欄位與繞送路徑表中的目的地欄位,并比較繞送路徑表中所儲(chǔ)存的MTU值552字符與連線封包中的MSS值,若連線封包中所帶的MSS值1500字符,大于其儲(chǔ)存的MTU值552字符減去某些固定長(zhǎng)度標(biāo)頭的值(假設(shè)為40字符),則第三路由器2將依照MTU值552字符,計(jì)算出適當(dāng)?shù)男翸SS值512字符,并取代原連線封包的MSS值1500字符(步驟S502),反之,若是連線封包中所帶的MSS值,小于或等于其儲(chǔ)存的MTU值552字符減去某些固定長(zhǎng)度標(biāo)頭的值,則保留原連線封包中的MSS值(步驟S503),再傳送至該目的主機(jī)5。當(dāng)目的主機(jī)5收到連線封包時(shí),目的主機(jī)5會(huì)比較連線封包中的MSS值512字符與其本身所預(yù)設(shè)的MSS值1500字符,若目的主機(jī)5所預(yù)設(shè)的MSS值1500字符大于修改過的連線封包中的MSS值512字符,目的主機(jī)5將采用修改過較小的MSS值512字符(步驟S504),并傳回一個(gè)含有修改過較小的MSS值512字符的認(rèn)可的連線封包給原先的來源端1的主機(jī)(第一來源主機(jī)11或第二來源主機(jī)12或第三來源主機(jī)13)(步驟S505),則來源端1的主機(jī)將會(huì)認(rèn)為目的主機(jī)5的MSS值512字符是其允許的MSS值,小于原先來源端1的主機(jī)的MSS值1500字符,而達(dá)成協(xié)定采用此一較小MSS值512字符,來切割送出的數(shù)據(jù)封包。如此,來源端1的主機(jī)所送出的數(shù)據(jù)封包便能通過第一路由器3與第二路由器4間較小的連線通道寬度,并節(jié)省來源端1的主機(jī)處理ICMPUnreachable(FragmentationRequired)錯(cuò)誤信息,及再切割重傳的時(shí)間,也解決來源端1的主機(jī)因不能處理ICMPUnreachable(FragmentationRequired)錯(cuò)誤信息,而無法將數(shù)據(jù)封包切割,使得數(shù)據(jù)封包無法送至目的主機(jī)5而導(dǎo)致斷線的問題。綜上所述,本發(fā)明無論就目的、方法及功效,再均顯示其迥異于已知技術(shù)的特征,實(shí)為一極具實(shí)用價(jià)值的發(fā)明。惟應(yīng)注意的是,上述諸多實(shí)施例僅為了便于說明而舉例而已,本發(fā)明所主張的權(quán)利范圍自應(yīng)以申請(qǐng)專利范圍所述為準(zhǔn),而非僅限于上述實(shí)施例。權(quán)利要求1.一種自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的系統(tǒng),其特征在于,主要包含至少第一來源主機(jī)與第二來源主機(jī);一第一路由器;一第二路由器,其是與該第一路由器直接連接,且其間存有一較小的通道寬度;一第三路由器,是與該至少第一來源主機(jī)與第二來源主機(jī)直接或間接連接,并與該第一路由器直接或間接相連接,且位于該第一路由器與該至少第一來源主機(jī)與第二來源主機(jī)之間;以及一目的主機(jī),是與該第二路由器直接或間接相連接;其中,該第三路由器能自動(dòng)收集網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息,并記錄到該目的主機(jī)間通道的最大傳輸單元的最小值與該目的主機(jī)的網(wǎng)際網(wǎng)路地址,使得當(dāng)該第一或第二來源主機(jī)與該目的主機(jī)連線時(shí),對(duì)該來源主機(jī)所發(fā)出的連線封包做一比較處理再傳送至該目的主機(jī),而該目的主機(jī)將會(huì)比對(duì)該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值與其所預(yù)設(shè)的最大數(shù)據(jù)段長(zhǎng)度值,并采用較小的最大數(shù)據(jù)段長(zhǎng)度值,該目的主機(jī)再傳回一含有該較小的最大數(shù)據(jù)段長(zhǎng)度值的認(rèn)可連線封包給該來源主機(jī),該來源主機(jī)收到該認(rèn)可的連線封包后,并采用該較小的最大數(shù)據(jù)段長(zhǎng)度值,以達(dá)成來源端與目的端均采用相同較小的最大數(shù)據(jù)段長(zhǎng)度值。2.根據(jù)權(quán)利要求1所述的自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的系統(tǒng),其特征在于,其中該第三路由器對(duì)該來源主機(jī)所發(fā)出的連線封包進(jìn)行比較處理,若該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值,大于該第三路由器的繞送路徑表記錄對(duì)應(yīng)的同一目的地的最大傳輸單元減去特定固定長(zhǎng)度標(biāo)頭值,則依照傳輸單元值計(jì)算一新的最大數(shù)據(jù)段長(zhǎng)度值,再將計(jì)算后的結(jié)果取代該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值,否則,保留原本的最大數(shù)據(jù)段長(zhǎng)度值。3.根據(jù)權(quán)利要求1所述的自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的系統(tǒng),其特征在于,其中該至少第一來源主機(jī)與第二來源主機(jī)是與該目的主機(jī)建立TCP連線。4.一種自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的方法,是利用至少第一來源主機(jī)及第二來源主機(jī),與一目的主機(jī)建立連線及傳送數(shù)據(jù)封包,一第一路由器與一第二路由器間存在一較小的通道寬度,且有一第三路由器與該第一來源主機(jī)與第二來源主機(jī)直接或間接相連接,該第一路由器直接或間接與該第三路由器相連接,該第二路由器直接或間接與該目的主機(jī)相連接,其特征在于,該方法主要包括下述的步驟(A)若該第一來源主機(jī)經(jīng)由該第三路由器、第一路由器、及第二路由器傳送一大于該第一路由器與第二路由器間通道寬度的數(shù)據(jù)封包至該目的主機(jī),且該數(shù)據(jù)封包的IP標(biāo)頭設(shè)定了不可分割比特,則該第一路由器將會(huì)丟棄該數(shù)據(jù)封包,并傳回一網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息封包給該第一來源主機(jī),該信息封包中并含有無法通過的通道寬度的最大傳輸單元值;(B)當(dāng)該網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息封包經(jīng)過該第三路由器,則該第三路由器將該信息封包中的最大傳輸單元值及無法送達(dá)的目的主機(jī)的網(wǎng)際網(wǎng)路地址,記錄儲(chǔ)存于其繞送路徑表中;(C)當(dāng)該每一或第二來源主機(jī)與該目的主機(jī)再度建立連線,該來源主機(jī)所發(fā)出的連線封包將先通過該第三路由器,該第三路由器將查詢繞送路徑表以比對(duì)處理該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值與先前記錄的最大傳輸單元值,再將該連線封包送至該目的主機(jī);(D)該目的主機(jī)接收該連線封包,并比對(duì)該連線封包的最大數(shù)據(jù)段長(zhǎng)度值與該目的主機(jī)預(yù)設(shè)的最大數(shù)據(jù)段長(zhǎng)度值,且采用較小的最大數(shù)據(jù)段長(zhǎng)度值;以及(E)該目的主機(jī)傳回一含有較小的最大數(shù)據(jù)段長(zhǎng)度值的認(rèn)可連線封包至該來源主機(jī),使得該來源主機(jī)與該目的主機(jī)達(dá)成采用相同較小的最大數(shù)據(jù)段長(zhǎng)度值。5.根據(jù)權(quán)利要求4所述的自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的方法,其特征在于,其中于步驟(A),當(dāng)該大于該第一路由器與第二路由器間的通道寬度的數(shù)據(jù)封包通過該第一路由器,則該第一路由器丟棄該數(shù)據(jù)封包,并發(fā)出一網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息封包給該第一來源主機(jī),且該信息封包中尚含有該第一路由器與該第二路由器間通道寬度的最大傳輸單元值。6.根據(jù)權(quán)利要求4所述的自動(dòng)驅(qū)使變更封包大小以符合通道寬度的方法,其特征在于,其中于步驟(B),該第三路由器能取出該網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)錯(cuò)誤信息封包中的最大傳輸單元值以及無法送達(dá)的目的主機(jī)的網(wǎng)際網(wǎng)路地址,并記錄儲(chǔ)存于該第三路由器的繞送路徑表中。7.根據(jù)權(quán)利要求4所述的自動(dòng)驅(qū)使變更封包大小以符合通道寬度的方法,其特征在于,其中于步驟(C),若該連線封包的最大數(shù)據(jù)段長(zhǎng)度值,大于該第三路由器的繞送路徑表記錄對(duì)應(yīng)的同一目的地的最大傳輸單元減去特定固定長(zhǎng)度標(biāo)頭值,則依該最大傳輸單元值計(jì)算一新的數(shù)據(jù)段長(zhǎng)度值,且將計(jì)算后的結(jié)果取代該連線封包中的最大數(shù)據(jù)段長(zhǎng)度值,否則,保留該連線封包原本的最大數(shù)據(jù)段長(zhǎng)度值。8.根據(jù)權(quán)利要求4所述的自動(dòng)驅(qū)使變更封包大小以符合通道寬度的方法,其特征在于,其中該至少第一來源主機(jī)與第二來源主機(jī)是與該目的主機(jī)建立TCP連線。全文摘要一種自動(dòng)驅(qū)使變更封包長(zhǎng)度以符合通道寬度的系統(tǒng)與方法,是利用本發(fā)明的路由器自動(dòng)蒐集網(wǎng)際網(wǎng)路控制信息協(xié)定的無法抵達(dá)必須分割的錯(cuò)誤信息封包,記錄某一目的端主機(jī)間的最大傳輸單元的最小值,及目的端主機(jī)的IP地址,使得當(dāng)某來源端主機(jī)欲與系統(tǒng)記錄中的目的端主機(jī)進(jìn)行連線時(shí),來源端主機(jī)所發(fā)出的連線封包將在路由器上進(jìn)行一比較處理后,再傳送至目的端主機(jī),而目的端主機(jī)將會(huì)比對(duì)連線封包中最大數(shù)據(jù)段長(zhǎng)度值與其原先預(yù)設(shè)最大數(shù)據(jù)段長(zhǎng)度值,并采用較小最大數(shù)據(jù)段長(zhǎng)度值放在認(rèn)可的連線封包中傳回來源主機(jī),以達(dá)成來源端與目的端主機(jī)均采用相同較小最大數(shù)據(jù)段長(zhǎng)度值,自動(dòng)驅(qū)使兩端連線后送出的封包大小符合經(jīng)過的通道寬度。文檔編號(hào)H04B1/66GK1426204SQ01144118公開日2003年6月25日申請(qǐng)日期2001年12月11日優(yōu)先權(quán)日2001年12月11日發(fā)明者林軍鼐申請(qǐng)人:財(cái)團(tuán)法人資訊工業(yè)策進(jìn)會(huì)