• OpenStack平台上,windows云主机可以ping通百度但是无法打开网页,部分其它网页可以打开


    问题描述:

    在OpenStack平台上的64位Windows7虚拟机,可以ping通百度,但是却无法打开百度网页。

    于是,笔者又对其它网址进行的测试,发现淘宝、京东、携程部分网页可以打开,而新浪等等网页依然打不开,瞬间郁闷了。

    按照百度网上的搜索结果进行了各种尝试,包括重启路由、重装virtio驱动、重置winsoc文件(CMD命令:netsh winsock reset)、重装TCP/IP协议等各种方法,均不见效。

    然后看到网上有说旗舰版windows7系统中有这样的问题存在,于是笔者对同一个平台上的windows2008、windows10系统均进行了测试,问题是一样的,排除了版本的可能性。

    但是对同一个云平台下的centos系统,其可以正常访问百度网页,于是锁定windows系统本身的网络设置,甚至还有怀疑过是virtio驱动的版本问题,但是经过实际测试后均一一排除。

    偶然间在网上百度到MTU,于是抱着尝试的心态试一下:

    (1)打开“网络连接”(控制面板网络和Internet网络连接)

    (2)鼠标右键->“属性”

    (3)选择“配置”项

    (4)“高级”->“Init MTUSize”,将其值该小,以前是“1500”,笔者暂改为“1450”

    (5)确认以上更改操作。

    再尝试打开百度网页,成功了!!!

    于是,笔者接下来认真地学习了一下MTU,并做以下记录:

    MTU(Maxinum Transmission Unit),最大传输单元,是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位),这个参数通常与通信接口有关。

    因为协议数据单元的包头和包尾的长度是固定的,MTU越大,则一个协议数据单元承载的有效数据就越长,通信效率也越高。MTU越大,传送相同的用户数据所需的数据包个数也越低。
    MTU也不是越大越好,因为MTU越大, 传送一个数据包的延迟也越大;并且MTU越大,数据包中 bit位发生错误的概率也越大。
    也就是说,MTU越大,通信效率越高而传输延迟增大,所以要权衡通信效率和传输延迟选择合适的MTU。
     
    设置合适的MTU值可以解决“部分网站打不开”、“上网速度慢”等问题,并且可以适当提升上网速度。
    因为如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。
     
    那么如何检测网关的MTU呢?
    本机CMD命令行:ping -f -l 1500 192.168.1.1
    其中,192.168.1.1是网关IP地址,1500是数据包长度
    如果能ping通,表示数据包不需要被拆包,可以通过网关传输,如果出现“Packet needs to be fragmented but DF set.”,则表示数据包被拆包,需要降低数据包长度。
     
    合理调整路由器和本机的MTU值,可以实现网速的最大化。
  • 相关阅读:
    with原理__enter__、__exit__
    os模块walk方法
    restful规范简要概述
    python全栈开发day113-DBUtils(pymysql数据连接池)、Request管理上下文分析
    关于word2016中图片和正文编号自动更新的方法
    秋招
    GIL(全局解释器锁)
    多任务:进程、线程、协程对比
    多任务:协程
    进程和线程的对比
  • 原文地址:https://www.cnblogs.com/yy20141204bb/p/8317423.html
Copyright © 2020-2023  润新知