怎么设置有线无线网络优先级

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么设置有线无线网络优先级相关的知识,希望对你有一定的参考价值。

参考技术A

  有时我们电脑有线无线网络都存在时候,会出现一些冲突,连着有线网络突然又跳到无线去,我们可以设置优先级,比如有有线网络时候优先连接有线。我们要怎样设置网络的优先级呢?具体的设置方法请看下文。

  方法一、调整网络高级设置

  Windows默认有能够调节网络优先级的位置,就在网络和共享中心,具体步骤如下:

  1、在任务栏网络图标上点击右键,进入“网络和共享中心”;

  2、点击左边“更改适配器设置”;

  3、按键盘Alt键调出菜单栏,然后点击“高级→ 高级设置”;

  4、此时在“适配器和绑定”标签页下可以对可用连接进行位置调整(点击某个连接后,按右边的上下箭头调整即可,如下图)

  5、不过也有用户反映自己的电脑没有“适配器和绑定”标签页(如下图),或者有些用户反映在Windows10中,上述设置无法保存(据说微软在Windows10中已经废掉了这个设置),此时该如何调整网络优先级呢?下面我们来看看第二种方法。

  方法二、修改“接口跃点数”

  这个名词可能会让某些用户感到陌生,所谓“跃点”,即路由。一个路由为一个跃点。数据传输过程中需要经过多个网络,每个被经过的网络设备点(有能力路由的)叫做一个跃点,地址就是它的IP。跃点数是经过了多少个跃点的累加器,为了防止无用的数据包在网上流散。 为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由,所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。

  好了,说说怎么通过修改这个数值来设置优先级。简单来说,如果电脑中存在多个连接,哪个连接的跃点数小,哪个优先级就高。但也别任性自定义,还得按照基本法则,也就是实际情况来设置,一般设置方法如下:

  1、进入网络和共享中心→ 更改适配器设置;

  2、在要修改的连接上点右键,选择“属性”;

  3、双击“Internet协议版本4(TCP/IPv4)”(如果是IPv6就选择下面的“Internet协议版本6”,设置方法都一样);

  4、点击右下角的“高级”,然后取消勾选“IP设置”标签页下面的“自动跃点”;

  5、如果这是高优先级连接,就把“接口跃点数”改为10,如果是低优先级连接,就改为20;

  补充:常见网络故障解决方法

  ip地址冲突:ip地址冲突是局域网中经常出现的问题,有的用户可能重做系统或其他原因丢失自己的IP地址,在重新写IP的时候和其他人的IP地址一样导致ip地址出错,此时电脑右下角就会有个提示框提示你IP地址已经有人用。部门网管应该统计好部门人员的IP地址,当出现问题时可有资料可循,避免IP地址冲突。

  计算机网卡故障,一般的主机网卡都带有网卡指示灯,网卡灯有两种类型,一种是只有单灯,一种是双灯。一般来说,单灯是绿色,而双灯一个是绿色,一个是橙色(1000M网络,如黄色则是100MM网络)。单灯显示的意思是,绿色灯亮表示网线物理连接正常。是常亮状态,在有数据交换时单灯情况下绿色灯会明暗闪烁。双灯情况下,绿色灯亮同样表示网线物理连接正常,是常亮状态,在有数据交换时橙色或黄色灯闪烁,而绿灯不变。查看网卡灯显示是否正常,可以判断网卡的好坏。拔掉网线网卡灯还显示正常,网卡出故障需要更换。

  网线有问题,如果网线在几台计算机上连接无反映,换根网线后正常,即可判断网线出了问题。网线一半问题有水晶头生锈造成短路,网线中间出现断路,水晶头没压好出现问题等。这时需要测线仪来检查网线。

  测线仪使用方法,将一根网线两头分别差入测线仪的网线接口,查看对应各灯依次从1至8或8至1闪亮,再闪亮一次或两次某一灯(即为该网线所在主机的路数),循环不止。

  如果遇到整个网络出现问题,需要检查交换机是否出现问题,到交换机所在机房检查交换机是否有电,如果有电则检查连接交换机的trunk口灯是否正常,如果不正常找到上联交换机检查是否正常。有的交换机trunk口连接收发器,检查收发器是否正常。

  相关阅读:计算机网络分层及其功能

  物理层:利用传输介质为数链路层提供物理连接,实现比特流的透明传输。实现相邻计算机节点的比特流的透明传送,尽可能屏蔽掉传输介质和网路设备的差异。

  数据链路层:在物理层提供的比特流的基础上,通过差错控制、流量控制方法,将有差错的物理链路变为无差错的数据链路。

  网络层:数据链路层的数据在这一层被转化为数据报,经过路径选择、分组组合、顺序、进/出路由等控制,将数据从一个网络设备转发到另一个网络设备。

  传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。向高层屏蔽下层数据信息的传输,向用户透明的传送报文。

  会话层:组织和协调两个会话进程的通信,并对数据通信进行管理。

  表示层:处理用户信息的表示问题,如编码,数据格式转换,加密解密等

  应用层:完成网络中应用程序和操作系统之间的联系,建立和结束使用者之间的联系。

Android11 有线网和wifi优先级设置

Android11 有线网和wifi优先级设置

一、优先级基本知识介绍

Android6.0之后系统中优先级设置都是根据Score分值来设置优先级,分值0-100,数值越高,越优先。

系统默认分值:


SIM卡网络  50
wifi网络   60
有线网络   70

手机网络设置都有自己的Factory设置类,都继承自NetworkFactory.java
wifi网络设置类:WifiNetworkFactory.java
有线网络设置类:EthernetNetworkFactory.java

NetworkFactory的子类都有NETWORK_SCORE常量,表示该网络的分值。

二、有线网络优先级设置

1、在Android9.0设置有线网络优先级直接修改EthernetNetworkFactory.java的 NETWORK_SCORE 值就行

private final static int NETWORK_SCORE = 55; //change score from 70

但是我Android11 的代码修改后发现并不能生效,还是有线网优先。
研究了一下EthernetNetworkFactory.java和ConnectivityService.java发现里面的逻辑有很大的修改。

2、在Android11 修改有线网络优先级

找到EthernetNetworkFactory.java的getNetworkScore()方法,这里面返回的score才是有线网的有效分值;

这个getNetworkScore()方法是在Android11 新增的。

在该方法返回NETWORK_SCORE值即可。里面很多判断是没啥用的。

如果要wifi优先级高于有线,一定要设置有线网络的分值比wifi小,在后期测试过程中发现在某些情况,wifi的分值会变成20,把有线网络分值设置成15才生效。

adb是可以进行分值查看的,文章最后有描述。

三、网络优先级简单刨析

参考:

Framework中的连接管理机制: https://blog.csdn.net/u010961631/article/details/48629601

网络连接评分机制之NetworkFactory: https://blog.csdn.net/u010961631/article/details/48971431

网络连接评分机制之NetworkAgent: https://blog.csdn.net/u010961631/article/details/48971651

Android网络优先级及更改: https://blog.csdn.net/u013686019/article/details/51447129/

网上的代码都比较旧了,只能做思路参考,里面有些方法不一样了。

1、网络切换的主要逻辑都是在 ConnectivityService.java里面

ConnectivityService.java和WMS、AMS一样,都是在System_server里面启动的;

ConnectivityService.java里面会对NetworkFactory的网络连接子类进行保存和管理。

Android11 ConnectivityService
新增了NetworkProviderInfo是一个内部类,但是以前的NetworkAgentInfo还保留了;

2、优先级评分逻辑主要在evalRequest方法

NetworkFactory.java的evalRequest方法是评分的主要判断逻辑


    private void evalRequest(NetworkRequestInfo n) 

        if (VDBG) 
            log("evalRequest");
            log(" n.requests = " + n.requested);
            log(" n.score = " + n.score);
            log(" mScore = " + mScore);
            log(" request.providerId = " + n.providerId);
            log(" mProvider.id = " + mProvider.getProviderId());
        

        if (shouldNeedNetworkFor(n))  //通过一些属性值判断是否需要请求网络
            if (DBG) log("  needNetworkFor");
            needNetworkFor(n.request, n.score);
            n.requested = true;
         else if (shouldReleaseNetworkFor(n))  //通过一些属性值判断是否需要释放网络
            if (DBG) log("  releaseNetworkFor");
            releaseNetworkFor(n.request);
            n.requested = false;
         else 
            if (DBG) log("  done");
        
    

具体情况和释放网络的操作都是在子类中进行实现的。

真正要使用的网络一定要经过needNetworkFor这个方法。

可以多添加有一些日志确定是否执行某个方法。

3、要理解这个网络连接的具体流程要清楚几个东西

(1)NetworkFactory.java

相关的子类:WifiNetworkFactory、EthernetNetworkFactory
内部类:NetworkRequestInfo

(2)ConnectivityService.java

内部类:NetworkProviderInfo

####(3)Handler

Messenger对象的理解,不是Message对象哦

因为NetworkFactory是继承自Handler,

并且很多消息的发送接收都是通过Messenger对象进行的;

(4)其他

NetworkRequest 网络请求对象

NetworkAgent 网络代理对象,在EthernetNetworkFactory中有创建

NetworkAgentInfo 网络代理封装对象,在ConnectivityService中创建

消息的传送都是通过Messenger,ConnectivityService–》NetworkAgentInfo–》NetworkAgent–》具体的Factory

Network 网络对象,被包含在网络代理对象里面

EthernetNetworkFactory.NetworkInterfaceState.start()–>new NetworkAgent
Vpn.agentConnect()–>new NetworkAgent

NetworkAgent.register()–>

ConnectivityManager.registerNetworkAgent–>

ConnectivityService.registerNetworkAgent–>new NetworkAgentInfo

如果要查看当前网络对应的Score,
可以通过adb shell dumpsys connectivity,里面的Current Networks有很多相关的数据信息,前提是要先连接上对应的网络。

adb 查看分析网络情况详解:
https://blog.csdn.net/wenzhi20102321/article/details/122161589

以上是关于怎么设置有线无线网络优先级的主要内容,如果未能解决你的问题,请参考以下文章

Android11 有线网和wifi优先级设置

Android11 有线网和wifi优先级设置

如何设置网络优先级,怎么设置网卡的优先级顺序

Mac网络优先级设置

Android11 有线网Score分析流程

Android11 有线网Score分析流程