zoukankan      html  css  js  c++  java
  • 一个TCP包中的数据数据问题

    一个TCP包中最大的数据
    2008-03-10 18:54

    在以太网中,最大传输单元MTU为1500个字节,在一个IP包中,去除IP包头的20个字节,可以传输的最大数据长度为1480个字节。在TCP包中,去除20个TCP包头,可以传输的最大数据段为1460个字节。因此,当数据超过最大数据长度时,将对该数据进行分片处理,在IP包头中会看到有多个片在传输,但标识号是相同的,表示是同一个数据包。

    在IP层中本来有一个用来标识IP包总长度的字段,为16bit,即65536字节.但实际上在不同的网络协议中确不一定能达到.

    输入名称“MTU” 2010-03-18 21:58 (分类:默认分类)

    内网须要看网关的,具体方式如下: 
    修改MTU 
    1、什么情形下需要改MTU? 
    如果您的动态域名网站不能被正常造访,很难连接,衔接上也非常慢,请试试把DirectSend设为“总是关闭”。如果关闭后可以正常拜访,这种情形就须要改动MTU。如果您的网站衔接正常,只是下载速度慢,就不必改MTU了。请跳过这一节。 
    2、什么是MTU? 
    MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。MTU的单位是字节。大部分网络装备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会发生很多数据包碎片,增添丢包率,下降网络速度。把本机的MTU设成比网关的MTU小或雷同,就可以减少丢包。 
    3、如何检测网关的MTU? 
    在本机打开dos窗口,执行:ping -f -l 1472 192.168.0.1 其中192.168.0.1是网关IP地址,1472是数据包的长度,请注意,上面的参数是“-l”(小写的L),而不是“-1”。如果能ping通,表现数据包不需要拆包,可以通过网关发送出去。如果呈现:Packet needs to be fragmented but DF set.表现数据包须要拆开来发送。此时,减少数据包长度,再执行上面的ping命令。从1400到1472之间多试几次,就能找到适合的数据包长度了。把数据包长度加上数据包头28字节,就得到MTU的值。如果检测到网关的MTU值是1500,不需要改动。如果网关有防火墙ping不通,可以试试直接把MTU设为1400。 
    4、如何修改本机的MTU? 
    修改办法如下: 
    (1)、运行regedit 
    (2)、阅读到:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/Inte***ces 
    (3)、Inte***ces下有多个子项,每个子项对应一个网卡。请按如下方式选择网卡: 
    (a)肯定本机用来连接Internet的网卡或拨号连接的IP,如192.168.0.19; 
    (b)用鼠标点击Inte***ces上的子项,查看键值列表中的IPAddress项; 
    (c)如果IPAddress的键值与(a)中的IP雷同,即192.168.0.19,则该子项就是要找的网卡。 
    (4)、进入该子项,在右边的窗口里按鼠标右键,选择“新建”->“双字节值”,输入名称“MTU”,按回车。再用鼠标双击“MTU”,弹出修改窗口: 
    填入MTU的值。填写前请先把基数设为十进制。设置好后,需要重启机器能力生效。 


    问:局域网服务器获得本地ISP提供的IP地址为202.102.192.68,采取Windows 98操作体系。如何实现改动网络的MTU值,以优化设置后果? 

    答:可以参考以下方式 
    实现。 

    第一步,拨号上网后,打开MS-DOS窗口,键入“Ping -f -l 1464 202.102.192.68”命令行。其中,快递查询,1464是尝试输入的MTU值,可能要从1500开端测试并尝试多次。如果运行成果显示“Request Timed out”或“Packet needs to be fragmented but DF set.”的信息,那么此时需要下降MTU数值再试,直到不再有这些信息呈现为止。记下此时的MTU值,然后再加上28,就得到合适使用的最佳MTU了。这里得到的最大值是1464,则加上28后为1492。 

    第二步,打开注册表编纂器,找到[HKEY_LOCAL_ MACHINE//System//Current ControlSet//Services //Class//NetTrans//0000]分支。 

    第三步,在其中创立一个新的字符串类型的子键,命名为“MaxMTU”,并将其数值设置为测试得出的最佳MTU数值。 

    第四步,打开[HKEY_LOCAL_MACHINE//System//CurrentControlSet//Services//Class//Net//000x//Ndi//params//IP MTU//enum]分支。这里会有4项供选择。 

    第五步,在注册表右边窗口点击鼠标右键,选择“新建”→“字符串值”,并将其数值设置为测试出的MTU最佳值,然后将该项改名为“主动”,接着删除这里原有的几项。 

    第六步,打开[HKEY_LOCAL_MACHINE//System// CurrentControlSet//Services//Class//Net//0000]分支。 

    第七步,用鼠标右键单击IPMTU,并选择“修正”快捷菜单项,将其数值改为最佳MTU值。 

    第八步,打开[HKEY_LOCAL_MACHINE//System// CurrentControlSet//Services//Class//Net//0000//Ndi//params// IPMTU]分支,将其数值修正为最佳MTU值。 
    第九步,退出注册表,重启体系使修正生效。 

    小知识:什么是MTU? 

    从Windows 95体系开端,TCP/IP配置选项中的MTU(即Maximum Transmission Unit,或“最大传输单元”)是专为局域网配置的,但没有针对宽带接入进行优化。Cable Modem衔接的MTU尺度设置是1500,但各种DSL之间是有差别的,如ADSL PPPOE=1492 MTU,ADSL STATIC IP=1500 MTU,CABLE=1500等。 

    进行协商的个人计算机的默认MTU大小为1500个字节 

  • 相关阅读:
    贝塞尔曲线应用(贝塞尔插值)
    贝塞尔曲线原理(简单阐述)
    STL头文件有哪些及简单介绍
    句柄与MFC对象关系和相互获取
    Reflect
    Set 和 Map 数据结构
    Symbol
    对象的新增方法
    对象的扩展
    数组的扩展
  • 原文地址:https://www.cnblogs.com/shangbolei/p/4446815.html
Copyright © 2011-2022 走看看