METHOD, APPARATUS AND DEVICE FOR SETTING MAXIMUM TRANSMISSION UNIT VALUE
本发明涉及通信领域,具体而言,涉及一种最大传输单元值的设置方法及装置、设备。 在用户通过的路由器产品上网过程中,经常会遇到由于最大传输单元(Maximum Transmission Unit,简称MTU)值不对导致不能上网的情况出现,例如:同一类路由器产品,出现在某些地区使用的用户可以上网,某些地区的用户不能上网;用户在某个频段不能上网,在其他频段可以上网;用户可以打开某些网址,不能打开某些网址。虽然,在传输控制协议(Transfer Control Protocol,简称TCP)连接过程中,会协商双方MTU大小,最后按照最小的MTU进行报文传输,但是,这种协商只是两端之间的协商,网络中节点的MTU值,在协商过程中并不知道。在项目开发期,会与运营商沟通,所有网络节点最小MTU大小,然后固定配置到路由器产品中,但是这种固定配置,在网络节点MTU变化时,会导致用户不能上网情况出现。在2014年,MF96G产品遇到高达25%客退机率,最后查明原因是网络MTU参数改变导致用户不能上网。 相关技术中存在MTU自动配置和MTU固定配置的方案,对于相关技术中的MTU值自动配置的方案,相关技术中都是在无线路由器通过互联网控制信息协议(Internet Control Message Protocol,ICMP)协议上行发送大报文给服务器,借助服务器的响应消息,探测网络节点中的最小MTU值,对于该方案,由于下行链路和上行链路所经过的网络节点可能并不相同,此时,采用该方案,可能存在下行链路网络节点MTU值探测不到的问题;对于固定配置的方案,在无线路由器开发期,从运营商中获取网络节点的最小MTU,然后固定配置到路由器中,此方案不够灵活,如果网络节点的MTU值改变,则路由器无法动态配置MTU值。
针对相关技术中的上述技术问题,目前尚未提出有效的解决方案。 发明内容 本发明实施例提供了一种最大传输单元值的设置方法及装置、设备,以至少解决相关技术中下行链路网络节点MTU值探测不到导致无法接收到服务器发送的大数据报文的问题。 根据本发明的一个实施例,提供了一种最大传输单元值的设置方法,包括:接收用于指示设备开机联网的指令;确定设备与服务器之间的下行链路中的最小最大传输单元MTU值;将确定的最小MTU值设置在设备中。 在本发明实施例中,确定设备与服务器之间的下行链路中的最小MTU值包括:通过传输控制协议(Transmission Control Protocol,TCP)确定最小MTU值。 在本发明实施例中,通过传输控制协议TCP确定最小MTU值包括:确定设备允许设置的最大MTU值;获取服务器的与最大MTU值对应的文本内容;其中,服务器与设备之间建立有TCP连接;判断在设备中设置的MTU值为最大MTU值的情况下,下行链路是否是连通的;在判断结果为是的情况下,确定允许设置的最大MTU值为最小MTU值。 在本发明实施例中,在判断在设备中设置的MTU值为最大MTU值的情况下,下行链路是否是连通的之后,还包括:在设备中设置的MTU值为最大MTU值的情况下,下行链路是不连通的情况下,确定比最大MTU值小第一预定值的第一MTU值;判断在设备中设置的MTU值为第一MTU值的情况下,下行链路是否是连通的;在判断结果为下行链路是连通的情况下,通过以下方式,确定最小MTU值:判断在设备中设置的MTU值为最大MTU值与第一MTU值之间的第一中间值的情况下,下行链路是否是连通的;在判断结果为在设备中设置的MTU值为最大MTU值与第一MTU值之间的第一中间值的情况下,下行链路是连通的情况下,继续判断在设备中设置的MTU值为第一中间值与最大MTU值之间的第
二中间值的情况下,下行链路是否是连通的;重复执行上述取中间值的判断过程,直到前一次判断结果为下行链路是连通的对应的中间值与后一次判断结果为下行链路不连通对应的中间值之间的差小于第二预定值的情况下,确定前一次判断结果为下行链路是连通的对应的中间值为最小MTU值。 在本发明实施例中,在判断在设备中设置的MTU值为第一MTU值的情况下,下行链路是否是连通的之后,还包括:在判断结果为下行链路是不连通的情况下,继续确定比第一MTU值小第三预定值的第三MTU值,以及继续判断在设备中设置的MTU值为第三MTU值的情况下,下行链路是否是连通的,重复执行上述取值以及判断过程,直到下行链路是连通的,将第一MTU值作为最大MTU值,采用上述在判断结果为下行链路是连通的情况下,确定最小MTU值的方式确定最小MTU值。 在本发明实施例中,判断在设备中设置的MTU值为第一中间值与最大MTU值之间的第二中间值的情况下,下行链路是否是连通的包括:检测与服务器交互的下行报文;判断下行报文中最大的下行报文长度是否为第二中间值;检测在预定时间内是否收到文本内容传输完毕的结束标识;其中,在最大的下行报文长度为第二中间值,且在预定时间内收到结束标识的情况下,确定下行链路连通。 根据本发明的另一个实施例,提供了一种最大传输单元值的设置装置,包括:接收模块,设置为接收用于指示设备开机联网的指令;确定模块,设置为确定设备与服务器之间的下行链路中的最小最大传输单元MTU值;设置模块,设置为将确定的最小MTU值设置在设备中。 在本发明实施例中,确定模块,还设置为通过传输控制协议TCP确定最小MTU值。 在本发明实施例中,确定模块还设置为确定设备允许设置的最大MTU值;获取服务器的与最大MTU值对应的文本内容;其中,服务器与设备之间建立有TCP连接;判断在设备中设置的MTU值为最大MTU值
的情况下,下行链路是否是连通的;以及在判断结果为是的情况下,确定允许设置的最大MTU值为最小MTU值。 在本发明实施例中,确定模块还设置为在设备中设置的MTU值为最大MTU值的情况下,下行链路是不连通的情况下,确定比最大MTU值小第一预定值的第一MTU值;判断在设备中设置的MTU值为第一MTU值的情况下,下行链路是否是连通的;以及在判断结果为下行链路是连通的情况下,通过以下方式,确定最小MTU值:判断在设备中设置的MTU值为最大MTU值与第一MTU值之间的第一中间值的情况下,下行链路是否是连通的;在判断结果为在设备中设置的MTU值为最大MTU值与第一MTU值之间的第一中间值的情况下,下行链路是连通的情况下,继续判断在设备中设置的MTU值为第一中间值与最大MTU值之间的第二中间值的情况下,下行链路是否是连通的;重复执行上述取中间值的判断过程,直到前一次判断结果为下行链路是连通的对应的中间值与后一次判断结果为下行链路不联通对应的中间值之间的差小于第二预定值的情况下,确定前一次判断结果为下行链路是连通的对应的中间值为最小MTU值。 在本发明实施例中,确定模块还设置为在判断结果为下行链路是不连通的情况下,继续确定比第一MTU值小第三预定值的第三MTU值,以及继续判断在第三MTU值的情况下,下行链路是否是连通的,重复执行上述取第三MTU值以及判断下行链路是否连通的过程,直到判断结果为下行链路是连通的,将第一MTU值作为最大MTU值,采用上述在判断结果为下行链路是连通的情况下,确定最小MTU值的方式确定最小MTU值。 在本发明实施例中,确定模块还设置为检测与服务器交互的下行报文;判断下行报文中最大的下行报文长度是否为第二中间值;以及检测在预定时间内是否收到文本内容传输完毕的结束标识;其中,在最大的下行报文长度为第二中间值,且在预定时间内收到结束标识的情况下,确定下行链路连通。
根据本发明的另一个实施例,提供了一种设备,包括上述的最大传输单元值的设置装置。 根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行以下步骤的程序代码:接收用于指示设备开机联网的指令;确定设备与服务器之间的下行链路中的最小最大传输单元MTU值;将确定的最小MTU值设置在设备中。 通过本发明,由于在接收到用于指示设备开机联网的指令后,确定下行链路中的最小MTU,将确定的最小MTU值设置在设备中,即通过自动检测下行链路中的最小MTU值,与现有技术中通过探测上行连路由的网络节点的最小MTU值相比,不再出现下行链路网络节点MTU检测不到的情况下,进而使得确定的下行链路的MTU更加准确,进而能够接收到服务器发送的大数据报文的问题,进而可以解决相关技术中下行链路网络节点MTU值探测不到导致无法接收到服务器发送的大数据报文的问题。 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中: 图1是本发明实施例的一种最大传输单元值的设置方法的移动终端的硬件结构框图; 图2是根据本发明实施例提供的网络架构的结构框图; 图3是根据本发明实施例的最大传输单元值的设置方法的流程图; 图4是根据本发明优选实施例提供的确定MTU值的方法的流程示意图; 图5是根据本发明实施例的最大传输单元值的设置装置的结构框图; 图6是根据本发明优选实施例提供的初始化模块执行的步骤的示意图; 图7是根据本发明优选实施例提供的MTU值配置模块执行的步骤的
示意图; 图8是根据本发明优选实施例提供的连接服务器模块执行的步骤的示意图; 图9是根据本发明优选实施例提供的下行报文监测MTU计算模块执行的步骤的示意图。 下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。 实施例1 本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种最大传输单元值的设置方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器(Microcontroller Unit,简称MCU)或可编程逻辑器件(Field Programmable Gate Array,简称FPGA)等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。 存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的最大传输单元值的设置方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还
可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。 传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。 本申请实施例可以运行于图2所示的网络架构上,如图2所示,该网络架构包括:设备和服务器,其中,设备和服务器之间进行交互。 在本实施例中提供了一种运行于上述移动终端或网络架构的最大传输单元值的设置方法,图3是根据本发明实施例的最大传输单元值的设置方法的流程图,如图3所示,该流程包括如下步骤: 步骤S302,接收用于指示设备开机联网的指令; 步骤S304,确定设备与服务器之间的下行链路中的最小最大传输单元MTU值; 步骤S306,将确定的最小MTU值设置在设备中。 通过上述步骤,由于在接收到用于指示设备开机联网的指令后,确定下行链路中的最小MTU,将确定的最小MTU值设置在设备中,即通过自动检测下行链路中的最小MTU值,与现有技术中通过探测上行连路由的网络节点的最小MTU值相比,不再出现下行链路网络节点MTU检测不到的情况下,进而使得确定的下行链路的最小MTU更加准确,进而能够接收到服务器发送的大数据报文的问题,进而可以解决相关技术中下行链路网络节点MTU值探测不到导致无法接收到服务器发送的大数据报文的
问题。 需要说明的是,上述下行链路中的每一个网络节点都有一个允许的最小MTU值,这些最小MTU值中的最大的MTU值即为上述下行链路中的最小MTU值;即上述最小MTU值为能够通过下行链路中的所有网络节点的报文的最大的报文长度。 在本发明的一个实施例中,上述步骤S304可以表现为通过传输控制协议TCP确定最小MTU值。与相关技术中通过ICMP协议上行发送大报文给服务器,探测网络节点中最小的MTU值相比,通过TCP协议实现下行链路的最小MTU值的确定。 具体地,通过TCP确定最小MTU值可以表现为:确定设备允许设置的最大MTU值;获取服务器的与最大MTU值对应的文本内容;其中,服务器与设备之间建立有TCP连接;判断在设备中设置的MTU值为最大MTU值的情况下,下行链路是否是连通的;在判断结果为是的情况下,确定允许设置的最大MTU值为最小MTU值。 需要说明的是,判断在设备中设置的MTU值为最大MTU值的情况下,下行链路是否是连通的,可以表现为:检测与服务器交互的下行报文;判断下行报文中最大的下行报文长度是否为最大MTU值;检测在预定时间内是否收到文本内容传输完毕的结束标识;其中,在最大的下行报文长度为最大MTU值,且在预定时间内收到结束标识的情况下,确定在设备中设置的MTU值为最大MTU的情况下,下行链路连通。即如果设备允许设置的最大MTU值能够使得下行链路是连通的,可以直接确定下行链路的最小MTU值(最终MTU值)为上述允许设置的MTU值。 需要说明的是,上述结束标识可以是http/1.xOK关键字段,但并不限于此。 需要说明的是,在预定时间内如果没有收到上述结束标识和/或上行数据包确认(Acknowledgement,简称ACK)消息,则下行链路中最小MTU值应当比上述最大MTU值小,需要进一步确定,因而,在本发明的一个
实施例中,在判断在设备中设置的MTU值为最大MTU值的情况下,下行链路是否是连通的之后,上述方法还可以包括:在设备中设置的MTU值为最大MTU值的情况下,下行链路是不连通的情况下,确定比最大MTU值小第一预定值的第一MTU值;判断在设备中设置的MTU值为第一MTU值的情况下,下行链路是否是连通的;在判断结果为下行链路是连通的情况下,通过以下方式,确定最小MTU值:判断在设备中设置的MTU值为最大MTU值与第一MTU值之间的第一中间值的情况下,下行链路是否是连通的;在判断结果为在最大MTU值与第一MTU值之间的第一中间值的情况下,下行链路是连通的情况下,继续判断在设备中设置的MTU值为第一中间值与最大MTU值之间的第二中间值的情况下,下行链路是否是连通的;重复执行上述取中间值的判断过程,直到前一次判断结果为下行链路是连通的对应的中间值与后一次判断结果为下行链路不连通对应的中间值之间的差小于第二预定值的情况下,确定前一次判断结果为下行链路是连通的对应的中间值为最小MTU值。 需要说明的是,上述第一中间值可以是最大MTU值与第一MTU值之间的任意一个值,优选地,可以是最大MTU值与第一MTU值的的平均值,但并不限于此,同样,第二中间值可以是第一中间值与最大MTU值之间的任意一个值,也可以是最大MTU值与第一中间值的的平均值,但并不限于此。前一次判断结果为下行链路是连通的对应的中间值与后一次判断结果为下行链路不连通对应的中间值之间的差小于第二预定值的情况下,确定前一次判断结果为下行链路是连通的对应的中间值为最小MTU值举例说明:假设在MTU值为9时,判断结果为下行链路是连通的,而在MTU值为10时下行链路不连通,则可以确定最小MTU值为9,上述MTU值为9可以认为是前一次判断结果为下行链路是连通的对应的中间值,上述MTU值为10可以认为是后一次判断结果为下行链路不连通对应的中间值,该第二预定值可以设定为2。 需要说明的是,判断在设备中设置的MTU值为第一中间值与最大MTU值之间的第二中间值的情况下,下行链路是否是连通的可以包括:
检测与服务器交互的下行报文;判断下行报文中最大的下行报文长度是否为第二中间值;检测在预定时间内是否收到文本内容传输完毕的结束标识;其中,在最大的下行报文长度为第二中间值,且在预定时间内收到结束标识的情况下,确定下行链路连通。 在本发明的一个实施例中,在判断在设备中设置的MTU值为第一MTU值的情况下,下行链路是否是连通的之后,还包括:在判断结果为下行链路是不连通的情况下,继续确定比第一MTU值小第三预定值的第三MTU值,以及继续判断在设备中设置的MTU值为第三MTU值的情况下,下行链路是否是连通的,重复执行上述取第三MTU值以及判断下行链路是否连通的过程,直到判断结果为下行链路是连通的,将第一MTU值作为最大MTU值,采用上述在判断结果为下行链路是连通的情况下,确定最小MTU值的方式确定最小MTU值。 需要说明的是,上述第一预定值、上述第二预定值和第三预定值可以是根据实际情况进行确定,但并不限于此。 需要说明的是,在上述每次判断下行链路是否是连通的之前,上述方法还可以包括:获取服务器的文本内容;即在每次MTU值下,需要重新进行TCP连接。需要说明的是,上述获取服务器的文本内容,可以通过wget命令来获取,但并不限于此。 通过上述方法确定最小MTU值,提高了最小MTU值的确定速度,也提高了确定下行链路的最小MTU值的准确度。 需要说明的是,上述步骤的执行主体可以为终端,也可以是路由器等,但不限于此。 为了更好地理解本发明以下结合优选的实施例对本发明做进一步地解释。 本发明优选实施例提出的一种基于TCP协议的自动检测网络MTU值的方法,设备(比如路由器)开机联网后,与默认配置的服务器连接,通过wget命令获取默认服务器文本内容,设备检测与服务器连接的下行报
文大小、是否收到服务器发送的报文、并根据HTTP/1.x OK关键字段判断该连接是否结束三个条件来探测网络节点最小MTU值。默认配置的服务器地址可以由用户改变成实际上网的网址,可以检测当前配置的网址是否是MTU不对导致打不开的。图4是根据本发明优选实施例提供的确定MTU值的方法的流程示意图,如图4所示,该方法包括: 第一步,配置路由器MTU初始值MTU0。MTU0足够小,保证MTU0大小的报文可以通过所有网络节点;配置默认服务器地址。用户可以在webui上修改服务器地址。 第二步,路由器开机第一次联网后,路由器通过wget命令获取服务器的文本内容。 第三步,检测MTU0大小的报文是否可以通过所有网络节点,即检测MTU0时,下行链路是否是连通的,如果是连通的,则执行第四步,如果不连通,则网络不通:路由器监测与服务器交互的下行报文,如果最大的下行报文长度为MTU0,并且收到HTTP/1.x OK关键字段。说明路由器与服务器链路是通的。如果在TCP超时时间内没有收到HTTP/1.x OK关键字段,说明网络不通,不是MTU值不对导致的,而是其他原因导致的网络不通。 第四步,检测1500大小报文是否可以通过所有网络节点,如果是,则配置路由器最终MTU为1500,如果不是,则通过折半查找法,查找MTU0~1500范围内的最终MTU值:重新设置路由器MTU值为最大值1500。路由器重新监测与服务器交互的下行报文,如果最大的下行报文长度为1500,并收到HTTP/1.x OK关键字段,说明路由器最终MTU值可以设置为1500。如果在TCP超时时间内没有收到HTTP/1.x OK字段或者上行数据包ACK确认消息,说明下行网络链路节点中最小的MTU值在MTU0~1500范围之间。 第五步,通过折半查找法,查找MTU0~1500范围内的最终MTU值,如果下行链路所有网络节点最小MTU在MTU0~1500范围内,然后使用折半查找法,查找下行链路所有网络节点最小MTU值。首先设置路由器
MTU为然后使用wget命令获取服务器文本内容,如果在监测的下行报文中,如果最大的下行报文长度为并收到HTTP/1.x OK关键字段,重新检测MTU为值,如果在TCP超时时间内没有收到HTTP/1.x OK字段或者上行数据包ACK确认消息,重新检测MTU为值,按照折半查找法规则依次轮寻查找……。 第六步,将折半查找法最终查找处的MTU1值设置到路由器中,下次开机第一次拨号后按照第一步,重新查找下行链路中最小MTU值。 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。 实施例2 在本实施例中还提供了一种最大传输单元值的设置装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。 图5是根据本发明实施例的最大传输单元值的设置装置的结构框图,如图5所示,该装置包括: 接收模块52,设置为接收用于指示设备开机联网的指令; 确定模块54,与上述接收模块52连接,设置为确定设备与服务器之间的下行链路中的最小最大传输单元MTU值; 设置模块56,与上述确定模块54连接,设置为将确定的最小MTU
值设置在设备中。 通过上述装置,由于接收模块52在接收到设置为指示设备开机联网的指令后,确定模块54确定下行链路中的最小MTU,设置模块56将确定的最小MTU值设置在设备中,即通过自动检测下行链路中的最小MTU值,与现有技术中通过探测上行连路由的网络节点的最小MTU值相比,不再出现下行链路网络节点MTU检测不到的情况下,进而使得确定的下行链路的最小MTU更加准确,进而能够接收到服务器发送的大数据报文的问题,进而可以解决相关技术中下行链路网络节点MTU值探测不到导致无法接收到服务器发送的大数据报文的问题。 需要说明的是,上述下行链路中的每一个网络节点都有一个允许的最小MTU值,这些最小MTU值中的最大的MTU值即为上述下行链路中的最小MTU值;即上述最小MTU值为能够通过下行链路中的所有网络节点的报文的最大的报文长度。 在本发明的一个实施例中,上述确定模块54还可以设置为通过传输控制协议TCP确定最小MTU值。与相关技术中通过ICMP协议上行发送大报文给服务器,探测网络节点中最小的MTU值相比,通过TCP协议实现下行链路的最小MTU值的确定。 在本发明的一个实施例中,上述确定模块54还设置为确定设备允许设置的最大MTU值;获取服务器的与最大MTU值对应的文本内容;其中,服务器与设备之间建立有TCP连接;判断在设备中设置的MTU值为最大MTU值的情况下,下行链路是否是连通的;以及在判断结果为是的情况下,确定允许设置的最大MTU值为最小MTU值。 需要说明的是,判断在设备中设置的MTU值为最大MTU值的情况下,下行链路是否是连通的,可以表现为:检测与服务器交互的下行报文;判断下行报文中最大的下行报文长度是否为最大MTU值;检测在预定时间内是否收到文本内容传输完毕的结束标识;其中,在最大的下行报文长度为最大MTU值,且在预定时间内收到结束标识的情况下,确定在设备
中设置的MTU值为最大MTU的情况下,下行链路连通。即如果设备允许设置的最大MTU值能够使得下行链路是连通那个的,可以直接确定下行链路的最小MTU值(最终MTU值)为上述允许设置的MTU值。 需要说明的是,在预定时间内如果没有收到文本内容传输完毕的结束标识和/或上行数据包ACK确认消息,则下行链路中最小MTU值应当比上述最大MTU值小,需要进一步确定,因而,在本发明的一个实施例中,上述确定模块54还可以设置为在设备中设置的MTU值为最大MTU值的情况下,下行链路是不连通的情况下,确定比最大MTU值小第一预定值的第一MTU值;判断在设备中设置的MTU值为第一MTU值的情况下,下行链路是否是连通的;以及在判断结果为下行链路是连通的情况下,通过以下方式,确定最小MTU值:判断在设备中设置的MTU值为最大MTU值与第一MTU值之间的第一中间值的情况下,下行链路是否是连通的;在判断结果为在设备中设置的MTU值为最大MTU值与第一MTU值之间的第一中间值的情况下,下行链路是连通的情况下,继续判断在设备中设置的MTU值为第一中间值与最大MTU值之间的第二中间值的情况下,下行链路是否是连通的;重复执行上述取中间值的判断过程,直到前一次判断结果为下行链路是连通的对应的中间值与后一次判断结果为下行链路不联通对应的中间值之间的差小于第二预定值的情况下,确定前一次判断结果为下行链路是连通的对应的中间值为最小MTU值。 需要说明的是,上述第一中间值可以是最大MTU值与第一MTU值之间的任意一个值,优选地,可以是最大MTU值与第一MTU值的的平均值,但并不限于此,同样,第二中间值可以是第一中间值与最大MTU值之间的任意一个值,也可以是最大MTU值与第一中间值的的平均值,但并不限于此。 需要说明的是,判断在设备中设置的MTU值为第一中间值与最大MTU值之间的第二中间值的情况下,下行链路是否是连通的可以包括:检测与服务器交互的下行报文;判断下行报文中最大的下行报文长度是否为第二中间值;检测在预定时间内是否收到文本内容传输完毕的结束标识;
其中,在最大的下行报文长度为第二中间值,且在预定时间内收到文本内容传输完毕的结束标识的情况下,确定下行链路连通。 在本发明的一个实施例中,上述确定模块54还可以设置为在判断结果为下行链路是不连通的情况下,继续确定比第一MTU值小第三预定值的第三MTU值,以及继续判断在设备中设置的MTU值为第三MTU值的情况下,下行链路是否是连通的,重复执行上述取第三MTU值以及判断下行链路是否连通的过程,直到判断结果为下行链路是连通的,将第一MTU值作为最大MTU值,采用上述在判断结果为下行链路是连通的情况下,确定最小MTU值的方式确定最小MTU值。 上述确定模块54还设置为检测与服务器交互的下行报文;判断下行报文中最大的下行报文长度是否为第二中间值;以及检测在预定时间内是否收到文本内容传输完毕的结束标识;其中,在最大的下行报文长度为第二中间值,且在预定时间内收到文本内容传输完毕的结束标识的情况下,确定下行链路连通。 通过上述装置,提高了最小MTU值的确定速度,也提高了确定下行链路的最小MTU值的准确度。 需要说明的是,上述第一预定值、上述第二预定值和第三预定值可以是根据实际情况进行确定,但并不限于此。 需要说明的是,上述装置可以位于终端中,也可以位于设备中,比如路由器中,但并不限于此。 为了更好地理解本发明,以下结合优选的实施例对本发明做进一步解释。 本发明优选实施例提出的一种自动检测网络MTU值的装置,通过TCP协议,路由器与服务器连接,使用wget命令获取服务器文本内容,通过监测下行报文大小、是否收到服务器发送的报文、并根据HTTP/1.x OK关键字段判断该连接是否结束三条件,使用折半查找法,查找出下行链路所有网络节点最小MTU值。
上述装置包括初始化模块,MTU值配置模块,连接服务器模块,下行报文监测MTU计算模块。 图6是根据本发明优选实施例提供的初始化模块执行的步骤的示意图,如图6所示,初始化模块涉及的主要内容是完成路由器启动后,恢复配置默认服务起域名,配置路由器初始MTU值为MTU0。 图7是根据本发明优选实施例提供的MTU值配置模块执行的步骤的示意图,如图7所示,MTU值配置模块主要完成由初始化模块和下行报文监测MTU计算模块提供的MTU,配置到路由器中。 图8是根据本发明优选实施例提供的连接服务器模块执行的步骤的示意图,如图8所示,连接服务器模块的主要内容是完成判断当期设备是否是第一次开机拨号联网,如果是,则通过wget命令连接服务器,并从服务器上获取文本内容,并提供服务器域名对应的IP地址和建立的tcp的源和目的端口给下行报文监测MTU计算模块。 图9是根据本发明优选实施例提供的下行报文监测MTU计算模块执行的步骤的示意图,如图9所示,下行报文监测MTU计算模块主要是监测连接服务器模块与服务器建立的tcp连接,通过连接服务器模块提供的服务器域名对应的IP和建立的tcp的源和目的端口,确定需要监测的tcp连接。下行报文监测MTU计算模块通过监测下行报文大小、是否收到服务器发送的报文、并根据HTTP/1.x OK关键字段判断该连接是否结束三条件,判断当前MTU值配置模块配置的MTU是否是最终MTU值。如果是,结束折半查找循环,自动检测结束。如果不是,提供新的需要检测的MTU给MTU值配置模块配置到路由器中,并通知连接服务器模块重新连接服务器并获取服务器上的文本内容。 需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。 实施例3
在本实施例中还提供了一种设备,包括上述实施例2中的最大传输单元值的设置装置。需要说明的是,对于上述最大传输单元值的设置装置的解释,参考实施例2中的解释,此处不再赘述。 实施例4 本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行实施例1中的方法的步骤的程序代码。 可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。 可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行实施例1中的方法的步骤。 可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精
神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Provided are a method, apparatus and device for setting maximum transmission unit value The method comprises: receiving an instruction for instructing a device to boot up and connect to the Internet; determining a minimum maximum transmission unit (MTU) value in a downlink between the device and the server; and setting the determined minimum MTU value in the device. By means of the present invention, the problem in the art that a big data message sent by a server cannot be received due to the fact that a MTU value of a downlink network node cannot be detected is solved. 一种最大传输单元值的设置方法,包括: 接收用于指示设备开机联网的指令; 确定所述设备与服务器之间的下行链路中的最小最大传输单元MTU值; 将确定的所述最小MTU值设置在所述设备中。 根据权利要求1所述的方法,其中,确定所述设备与所述服务器之间的所述下行链路中的最小MTU值包括: 通过传输控制协议TCP确定所述最小MTU值。 根据权利要求2所述的方法,其中,通过传输控制协议TCP确定所述最小MTU值包括: 确定所述设备允许设置的最大MTU值; 获取所述服务器的与所述最大MTU值对应的文本内容;其中,所述服务器与所述设备之间建立有TCP连接; 判断在所述设备中设置的MTU值为最大MTU值的情况下,所述下行链路是否是连通的; 在判断结果为是的情况下,确定允许设置的所述最大MTU值为所述最小MTU值。 根据权利要求3所述的方法,其中,在判断在所述设备中设置的MTU值为最大MTU值的情况下,所述下行链路是否是连通的之后,还包括: 在在所述设备中设置的MTU值为最大MTU值的情况下,所述下行链路不连通的情况下,确定比所述最大MTU值小第一预定值的
第一MTU值; 在所述设备中设置的MTU值为第一MTU值的情况下,判断所述下行链路是否是连通的; 在判断结果为所述下行链路是连通的情况下,通过以下方式,确定所述最小MTU值:判断在所述设备中设置的MTU值为所述最大MTU值与所述第一MTU值之间的第一中间值的情况下,所述下行链路是否是连通的;在判断结果为在所述设备中设置的MTU值为所述最大MTU值与所述第一MTU值之间的第一中间值的情况下,所述下行链路是连通的情况下,继续判断在所述设备中设置的MTU值为所述第一中间值与所述最大MTU值之间的第二中间值的情况下,所述下行链路是否是连通的;重复执行上述取中间值的判断过程,直到前一次判断结果为所述下行链路是连通的对应的中间值与后一次判断结果为所述下行链路不连通对应的中间值之间的差小于第二预定值的情况下,确定所述前一次判断结果为所述下行链路是连通的对应的中间值为所述最小MTU值。 根据权利要求4所述的方法,其中,在判断在所述设备中设置的MTU值为所述第一MTU值的情况下,所述下行链路是否是连通的之后,还包括: 在判断结果为所述下行链路是不连通的情况下,继续确定比所述第一MTU值小第三预定值的第三MTU值,以及继续判断在所述设备中设置的MTU值为所述第三MTU值的情况下,所述下行链路是否是连通的,重复执行上述取第三MTU值以及判断下行链路是否连通的过程,直到判断结果为所述下行链路是连通的,将所述第一MTU值作为所述最大MTU值,采用上述在判断结果为所述下行链路是连通的情况下,确定所述最小MTU值的方式确定所述最小MTU值。 根据权利要求4所述的方法,其中,判断在所述第一中间值
与所述最大MTU值之间的第二中间值的情况下,所述下行链路是否是连通的包括: 检测与所述服务器交互的下行报文; 判断所述下行报文中最大的下行报文长度是否为所述第二中间值; 检测在预定时间内是否收到文本内容传输完毕的结束标识; 其中,在所述最大的下行报文长度为所述第二中间值,且在所述预定时间内收到所述结束标识的情况下,确定所述下行链路连通。 一种最大传输单元值的设置装置,包括: 接收模块,设置为接收用于指示设备开机联网的指令; 确定模块,设置为确定所述设备与服务器之间的下行链路中的最小最大传输单元MTU值; 设置模块,设置为将确定的所述最小MTU值设置在所述设备中。 根据权利要求7所述的装置,其中,所述确定模块,还设置为通过传输控制协议TCP确定所述最小MTU值。 根据权利要求8所述的装置,其中,所述确定模块还设置为确定所述设备允许设置的最大MTU值;获取所述服务器的与所述最大MTU值对应的文本内容;其中,所述服务器与所述设备之间建立有TCP连接;判断在所述设备中设置的MTU值为最大MTU值的情况下,所述下行链路是否是连通的;以及在判断结果为是的情况下,确定允许设置的所述最大MTU值为所述最小MTU值。 根据权利要求9所述的装置,其中,所述确定模块还设置为在所述设备中设置的MTU值为最大MTU值的情况下,所述下行链
路是不连通的情况下,确定比所述最大MTU值小第一预定值的第一MTU值;判断在设备中设置的MTU值为所述第一MTU值的情况下,所述下行链路是否是连通的;以及在判断结果为所述下行链路是连通的情况下,通过以下方式,确定所述最小MTU值:判断在所述设备中设置的MTU值为最大MTU值与所述第一MTU值之间的第一中间值的情况下,所述下行链路是否是连通的;在判断结果为在所述设备中设置的MTU值为所述最大MTU值与所述第一MTU值之间的第一中间值的情况下,所述下行链路是连通的情况下,继续判断在所述设备中设置的MTU值为所述第一中间值与所述最大MTU值之间的第二中间值的情况下,所述下行链路是否是连通的;重复执行上述取中间值的判断过程,直到前一次判断结果为所述下行链路是连通的对应的中间值与后一次判断结果为所述下行链路不连通对应的中间值之间的差小于第二预定值的情况下,确定所述前一次判断结果为所述下行链路是连通的对应的中间值为所述最小MTU值。 根据权利要求10所述的装置,其中,所述确定模块还设置为在判断结果为所述下行链路是不连通的情况下,继续确定比所述第一MTU值小第三预定值的第三MTU值,以及继续判断在所述设备中设置的MTU值为所述第三MTU值的情况下,所述下行链路是否是连通的,重复执行上述取第三MTU值以及判断下行链路是否连通的过程,直到判断结果为所述下行链路是连通的,将所述第一MTU值作为所述最大MTU值,采用上述在判断结果为所述下行链路是连通的情况下,确定所述最小MTU值的方式确定所述最小MTU值。 根据权利要求10所述的装置,其中,所述确定模块还设置为检测与所述服务器交互的下行报文;判断所述下行报文中最大的下行报文长度是否为所述第二中间值;以及检测在预定时间内是否收到文本内容传输完毕的结束标识;其中,在所述最大的下行报文长度为所述第二中间值,且在所述预定时间内收到所述结束标识的情况下,
确定所述下行链路连通。 一种设备,包括:权利要求7至12中任一项所述的装置。
技术领域
背景技术
附图说明
具体实施方式