测量网络的MTU值

news/2024/7/11 5:05:58 标签: 网络, internet, parameters, linux, 防火墙, windows
或者直接用:
traceroute -F xx.xx.xx.xx 1473 
-F 表示不分片。

关于TCP/IP的MTU(转载)
 1:    什么是MTU? MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。MTU的单位是字节。 大部分网络设备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。 

2:    如何检测网关的MTU? 

执行: 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。 


3: 如何修改本机的MTU? 修改方法如下: 
    3.1:    运行regedit
    3.2:    浏览到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
    3.3:    Interfaces下有多个子项,每个子项对应一个网卡。请按如下方法选择网卡: 
              a: 确定本机用来连接Internet的网卡或拨号连接的IP,如192.168.0.19;
              b: 用鼠标点击Interfaces上的子项,查看键值列表中的IPAddress项;
              c: 如果IPAddress的键值与a中的IP相同,即192.168.0.19,则该子项就是要找的网卡;

    3.4:    进入该子项,在右边的窗口里按鼠标右键,选择“新建”->“双字节值”,输入名称“MTU”,按回车。再用鼠标双击“MTU”,弹出修改窗口: 如图3: 填入MTU的值。填写前请先把基数设为十进制。 设置好后,需要重启机器才能生效。



範例三:找出最大的 MTU 數值
[root@linux ~]# ping -c 2 -s 1000 -M do 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 1000(1028) bytes of data.
1008 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.424 ms
# 如果有回應,那就是可以接受這個封包,如果無回應,那就表示這個 MTU 太大了。

[root@linux ~]# ping -c 2 -s 8000 -M do 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 8000(8028) bytes of data.
ping: local error: Message too long, mtu=1500
# 這個錯誤訊息是說,本地端的 MTU 才到 1500 而已,你要偵測 8000 的 MTU
# 根本就是無法達成的!那要如何是好?用前一小節介紹的 ip link 來進行 MTU 設定吧! 
不過,你需要知道的是,由於 IP 封包表頭 (不含 options) 就已經佔用了 20 bytes ,再加上 ICMP 的表頭有 8 bytes ,所以 當然你在使用 -s size 的時候,那個封包的大小就得要先扣除 (20+8=28) 的大小了。 因此如果要使用 MTU 為 1500 時,就得要下達『 ping -s 1472 -M do xx.yy.zz.ip 』才行啊 ! 另外,由於本地端的網路卡 MTU 也會影響到偵測,所以如果想要偵測整個傳輸媒體的 MTU 數值, 那麼每個可以調整的主機就得要先使用 ifcofig 或 ip 先將 MTU 調大,然後再去進行偵測, 否則就會出現像上面提供的案例一樣,可能會出現『Message too long, mtu=1500』之類的字樣喔! 至於如果偵測完畢後,想要調整最佳化的 MTU ,那麼請參考前一章節的內容來調整囉! ^_^

不過這個 MTU 不要隨便調整啊!除非真的有問題。通常調整 MTU 的時間是在這個時候:

  • 因為全部的主機群都是在內部的區網,例如叢集架構 (cluster) 的環境下, 由於內部的網路節點都是我們可以控制的,因此可以透過修改 MTU 來增進網路效能;
  • 因為作業系統預設的 MTU 與您的網域不符,導致某些網站可以順利連線,某些網站則無法連線。 以 Windows 作業系統作為連線分享的主機時,在 Client 端挺容易發生這個問題;
如果是要連上 Internet 的主機,注意不要隨便調整 MTU ,因為我們無法知道 Internet 上面的每部機器能夠支援的 MTU 到多大,因為......不是我們能夠管的到的嘛! ^_^

另外,其實每種連線方式都有不同的 MTU 值,常見的各種介面的 MTU 值分別為︰

網路介面 MTU
Ethernet 1500
PPPoE 1492
Dial-up(Modem) 576


http://www.niftyadmin.cn/n/739431.html

相关文章

动态链接库的一些基本概念

摘自http://uuxa.itpub.net/post/18860/219525介绍一点重要的背景知识:所有的Win32API函数都包含在DLL中。三个最重要的DLL是:KERNEL32.DLL(它由管理内存、进程和线程的函数组成),USER32.DLL(它由执行用户界面任务(如创…

使用gprof测量程序运行时间

gprof使用详细介绍 linux下c/c编程 gprof介绍 gprof是GNU profiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多…

谈谈重载(overload)覆盖(override)与隐藏、多态

摘自http://blog.csdn.net/yanjun_1982/archive/2005/09/02/470405.aspx 这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一概念却使问题变得有点复杂了,下面说说它们的区别吧。 重载是指不同的函…

Apache模块开发

参考:http://blog.csdn.net/deally/article/details/4290842 第一步 使用采用Apache只带的工具apxs产生一个模板Helloword模块 apxs -g -n hello这样就会在当前目录产生一个Hello文件夹进入hello文件夹,修改mod_hello.c文件 里面有hello_handler函数&am…

PELCO-D与PELCO-P协议介绍

摘自http://guojun0681.blog.163.com/blog/static/10051312008920104153565/ PELCO-D与PELCO-P协议介绍 一般控制协议都由硬件或软件商编制在程序里面,我们只需要通过相关的控制设备来进行操作。但是作为一个从事监控行业的技术人员,往往会遇到除了电脑…

ap_hook_handler的定义在哪?

近日在看apache的源码,在他的module的定义中,ap_hook_handler是一个非常重要的函数。用来在apache中注册你的自定义module中的callback函数。 遍搜ap_hook_handler,寻不得在哪定义的。最后发现,这家伙把所有的hook函数都定义在宏里…

Find命令用法

Find命令用法 %find . ctime 0 -print //搜尋今天修改過的所有檔 %find . -name *.bak -exec rm {}\ //搜尋加刪除 %find . \(-name *.txt -ctime 7\) -print //搜尋7天前修改過的txt檔 利用Find命令改變所有權,想要改變當前目錄下所有檔的所有權,可以這樣: fi…

转:编写跨平台的软件入门——有关字节对齐

标题:编写跨平台的软件入门——有关字节对齐2008-03-18 09:40:29一, 为什么要跨平台?你想过把你的 Windows 上编写的程序在 Linux 编译运行吗,以及在 Mac 或其他 OS 上运行等等?反过来也一样?这…