自动驱使变更封包长度以符合通道宽度的系统与方法 【技术领域】
本发明提供一种自动驱使变更封包长度以符合通道宽度的系统与方法。背景技术
当利用网路传送数据封包时,由于来源端与目的端主机事前并不知道数据封包可能经过的路由频宽,所以,来源端送出的数据封包长度,可能超过绕送路径中某个路由器往下一个路由器传递时,连接的通道所允许的最大传输单元(Maximum Transmission Unit,MTU)值。若数据封包的长度超过该MTU值,且数据封包的IP标头(IP header)中设定了不可分割比特(Don’t Fragment Bit)则该封包将不能被该路由器切割,使得数据封包无法通过该段绕送路径。此时,该路由器将会抛弃数据封包,并传回一个网际网路控制信息协定(Internet Control Message Protocol,ICMP)地无法抵达(Unreachable)必须分割(Fragmentation Required)的错误信息(type=3,code=4)封包给来源端主机,以告知来源端主机无法通过的路径的MTU值。
当来源端主机收到ICMP Unreachable(Fragmentation Required)错误信息后,若来源端主机有处理此种ICMP Unreachable(FragmentationRequired)错误信息的能力,则之后传送数据封包往该目的地主机时,数据封包便会予以切割以符合该MTU值,使得送出的封包能通过原先无法通过的路径;但是,该MTU值只有记录在该来源端单一主机上,其他主机并不知道这个MTU值,故当另一台主机传送数据封包到同一目的地主机时,须再经过相同的处理情形,即得等收到ICMP Unreachable(Fragmentation Required)错误信息,再重新切割重传,造成时间效益上的浪费。
若来源端主机并没有处理这种ICMP Unreachable(FragmentationRequired)错误信息的能力,则不知传送前,应该将数据封包做适当的切割,将使得数据封包依旧无法通过该绕送路径,且会持续重传数据封包,直到来源端主机与目的地主机间断线。
由此可知,已知的封包传送方式仍存在有诸多缺点,而有必要予以改进,发明人爰因于此,本着积极发明的精神,亟思一种可以解决上述问题的“自动驱使变更封包长度以符合通道宽度的系统与方法”,几经研究终至完成此项嘉惠世人的发明。发明内容
本发明的主要目的,即在提供一种自动驱使变更封包长度以符合通道宽度的系统与方法,是利用路由器搜集ICMP Unreachable(Fragmentation Required)错误信息封包,并搭配路由器上绕送路径表,以变更所经过的连线封包(Sync Packet)中的“最大数据段长度值”(Maximum Segment Size,MSS),使得来源端与目的端主机连线协商成功后,所送出的数据封包长度能够符合两者间的路由通道宽度,以节省重传的时间,并解决来源端无法处理ICMP Unreachable(FragmentationRequired)错误信息能力,而导致数据封包无法送达目的端主机时所造成的断线问题。
根据本发明的一特色,所提出的自动驱使变更封包长度以符合通道宽度的系统,主要包括:至少第一来源主机与第二来源主机;一第一路由器;一第二路由器,是与该第一路由器间存有一较小的通道宽度;一第三路由器,是与该至少第一来源主机与第二来源主机直接或间接连接,并与该第一路由器直接或间接相连接,且位于该第一路由器与该至少第一来源主机与第二来源主机之间;以及一目的主机,是与该第二路由器直接或间接相连接;其中,该第三路由器能自动收集网际网路控制信息协定的无法抵达错误信息(Internet Control Message Protocol UnreachableError),并记录该信息中到该原目的主机间通道的最大传输单元(Maximum Transmission Unit,MTU)的最小值与该原目的主机的网际网路IP地址,使得尔后当该第一或第二来源主机与该目的主机连线时,对该来源主机所发出的连线封包(SYNC Packet)中的最大数据段长度值(Maximum Segment Size,MSS)与记录的最大传输单元(MTU)做一比较处理,再传送至该目的主机,而该目的主机将会比对该连线封包中的“最大数据段长度(Maximum Segment Size,MSS)值与其所预设的最大数据段长度值,并采用较小的最大数据段长度值,该目的主机再传回一含有该较小的最大数据段长度值的认可的连线封包(SYNC/ACK Packet)给该来源主机,该来源主机收到该认可的连线封包后,亦会采用该较小的最大数据段长度值,以达成来源端与目的端主机均采用相同较小的最大数据段长度值。
其中该第三路由器对该来源主机所发出的连线封包进行比较处理,若该连线封包中的最大数据段长度值,大于该第三路由器的绕送路径表记录对应的同一目的地的最大传输单元减去特定固定长度标头值,则依照传输单元值计算一新的最大数据段长度值,再将计算后的结果取代该连线封包中的最大数据段长度值,否则,保留原本的最大数据段长度值。
其中该至少第一来源主机与第二来源主机是与该目的主机建立TCP连线。
根据本发明的另一特色,所提出的自动驱使变更封包长度以符合通道宽度的方法,主要包括下述的步骤:(A)若该第一来源主机经由该第三路由器、第一路由器、及第二路由器传送一大于该第一路由器与第二路由器间通道宽度的数据封包至该目的主机,且该数据封包的IP标头设定了不可分割比特(Don’t Fragment Bit),则该第一路由器将会抛弃数据封包,并传回一个网际网路控制信息协定的无法抵达错误信息(InternetControl Message Protocol Unreachable Error)封包给该第一来源主机,该信息封包中并含有无法通过的通道宽度的最大传输单元(MaximumTransmission Unit,MTU)值;(B)当该网际网路控制信息协定的无法抵达错误信息封包经过该第三路由器,则由该第三路由器将该信息封包中的最大传输单元值及原无法送达的目的主机的网际网路地址,记录储存于其绕送路径表中;(C)当该第一或第二来源主机与该目的主机再建立连线,该来源主机所送出的连线封包将先通过该第三路由器,该第三路由器将查询绕送路径表以比对处理该连线封包中的最大数据段长度值与先前记录的最大传输单元值,再将该连线封包送至该目的主机;(D)该目的主机接收该连线封包,并比对该连线封包的最大数据段长度值与该目的主机预设的最大数据段长度值,且采用较小的最大数据段长度值;以及(E)该目的主机传回一含有较小的最大数据段长度值的认可连线封包(SYNC/ACK Packet)至该来源主机,使得该来源主机与该目的主机达成采用相同较小的最大数据段长度值。
其中于步骤(A),当该大于该第一路由器与第二路由器间的通道宽度的数据封包通过该第一路由器,则该第一路由器丢弃该数据封包,并发出一网际网路控制信息协定的无法抵达错误信息封包给该第一来源主机,且该信息封包中尚含有该第一路由器与该第二路由器间通道宽度的最大传输单元值。
其中于步骤(B),该第三路由器能取出该网际网路控制信息协定的无法抵达错误信息封包中的最大传输单元值以及无法送达的目的主机的网际网路地址,并记录储存于该第三路由器的绕送路径表中。
其中于步骤(C),若该连线封包的最大数据段长度值,大于该第三路由器的绕送路径表记录对应的同一目的地的最大传输单元减去特定固定长度标头值,则依该最大传输单元值计算一新的数据段长度值,且将计算后的结果取代该连线封包中的最大数据段长度值,否则,保留该连线封包原本的最大数据段长度值。
其中该至少第一来源主机与第二来源主机是与该目的主机建立TCP连线。
由于本发明构造新颖,能提供产业上利用,且确有增进功效,故依法申请发明专利。附图说明
为使审查员能进一步了解本发明的结构特征及其目的,以下结合附图及较佳具体实施例的详细说明如后,其中:
图1是本发明的系统架构图;
图2是本发明来源端送出的数据封包过大时的动作流程图;
图3是本发明中第一路由器所发出的ICMP信息内容;
图4是本发明的储存于第三路由器中的绕送路径表的一部份;
图5是本发明再度连线时第三路由器比对、修改MSS值的动作流程图。具体实施方式
为说明有关本发明的自动驱使变更封包长度以符合通道宽度的系统及其方法,所提出的较佳实施例是以一般常用的网路作为操作环境,并采用TCP/IP通讯协定。
请先参阅图1所显示的系统架构图,其包括有网路中的来源端1、第三路由器2、第一路由器3、第二路由器4、以及目的主机5。其中,来源端1中包括第一来源主机11、第二来源主机12、以及第三来源主机13等三台主机。
前述中本发明的第三路由器2,可能直接或间接与第一来源主机11、第二来源主机12、及第三来源主机13相连接。第三路由器2可能直接或间接与第一路由器3相连接,而第一路由器3与第二路由器4间为直接连接,中间存在一较小的通道。第二路由器4的另一端则可能直接或间接连接至目的主机5。
图2显示本发明的来源端送出数据封包过大时,第一路由器3及第三路由器2的动作流程图,当来源端1中的第一来源主机11已经与目的主机5建立TCP连线,且第一路由器3与第二路由器4间的连线通道宽度为522字符(byte)。
第一来源主机11开始传送数据封包(步骤S201),直到突然有一个数据封包长度为600字符(且IP标头设定了不可分割比特),其超过第一路由器3与第二路由器4间的连线通道宽度,则第一路由器3将会丢弃该长度为600字符的数据封包(步骤S202),且第一路由器3会传送一个网际网路控制信息协定(Internet Control Message Protocol,ICMP)的无法抵达(Unreachable)必须分割(Fragmentation Required)的错误信息(type=3,code=4)封包给第一来源主机11,以告知第一路由器3与第二路由器4间所允许传送的“最大传输单元”(MaximumTransmission Unit,MTU)值为552字符(步骤S203)。图3显示出ICMPUnreachable(Fragmentation Required)错误信息的内容,其包含着二路由器间所允许传送的MTU值。
当此ICMP Unreachable(Fragmentation Required)错误信息封包经过第三路由器2时,第三路由器2会将封包中原IP标头的目的主机5的IP地址及MTU值取出,以记录到本身的绕送路径表(routing table)中(步骤S204)。图4显示出数据封包中的目的主机IP地址,搭配MTU值552字符储存于绕送路径表的一部份。
图5显示来源端1的主机建立新连线时,驱使连线后,来源端送出数据封包长度符合通道宽度的动作流程图。当第一来源主机11或第二来源主机12或第三来源主机13与目的主机5建立新的TCP连线时,由来源端1所发出的连线封包经过第三路由器2(步骤S501),则第三路由器2将会比对连线封包的目的地栏位与绕送路径表中的目的地栏位,并比较绕送路径表中所储存的MTU值552字符与连线封包中的MSS值,若连线封包中所带的MSS值1500字符,大于其储存的MTU值552字符减去某些固定长度标头的值(假设为40字符),则第三路由器2将依照MTU值552字符,计算出适当的新MSS值512字符,并取代原连线封包的MSS值1500字符(步骤S502),反之,若是连线封包中所带的MSS值,小于或等于其储存的MTU值552字符减去某些固定长度标头的值,则保留原连线封包中的MSS值(步骤S503),再传送至该目的主机5。
当目的主机5收到连线封包时,目的主机5会比较连线封包中的MSS值512字符与其本身所预设的MSS值1500字符,若目的主机5所预设的MSS值1500字符大于修改过的连线封包中的MSS值512字符,目的主机5将采用修改过较小的MSS值512字符(步骤S504),并传回一个含有修改过较小的MSS值512字符的认可的连线封包给原先的来源端1的主机(第一来源主机11或第二来源主机12或第三来源主机13)(步骤S505),则来源端1的主机将会认为目的主机5的MSS值512字符是其允许的MSS值,小于原先来源端1的主机的MSS值1500字符,而达成协定采用此一较小MSS值512字符,来切割送出的数据封包。
如此,来源端1的主机所送出的数据封包便能通过第一路由器3与第二路由器4间较小的连线通道宽度,并节省来源端1的主机处理ICMPUnreachable(Fragmentation Required)错误信息,及再切割重传的时间,也解决来源端1的主机因不能处理ICMP Unreachable(FragmentationRequired)错误信息,而无法将数据封包切割,使得数据封包无法送至目的主机5而导致断线的问题。
综上所述,本发明无论就目的、方法及功效,再均显示其迥异于已知技术的特征,实为一极具实用价值的发明。惟应注意的是,上述诸多实施例仅为了便于说明而举例而已,本发明所主张的权利范围自应以申请专利范围所述为准,而非仅限于上述实施例。