Cannot assign requested address 出现原因及解决方案

今天在压测时,会偶尔遇到错误,错误提示: Cannot assign requested address ,看了下,大致上是由于客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状态的连接。

解决办法是需要做一下内核参数优化:(需要root权限)
sysctl -w net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
sysctl -w net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT sockets的快速回收

改完还不能解决问题,需要修改tcp_max_tw_buckets
sudo sh -c “echo ‘5000’> /proc/sys/net/ipv4/tcp_max_tw_buckets”

 

 

----------------------

个人一般sysctl -p 或sysctl -a比较多使用 

 

 

sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发、IP碎片去除以及源路由检查等。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。

    命令格式:

    sysctl [-n] [-e] -w variable=value

    sysctl [-n] [-e] -p (default /etc/sysctl.conf)

    sysctl [-n] [-e] -a

    常用参数的意义:

    -w   临时改变某个指定参数的值,如

         sysctl -w net.ipv4.ip_forward=1

    -a   显示所有的系统参数

    -p   从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

    如果仅仅是想临时改变某个系统参数的值,可以用两种方法来实现,例如想启用IP路由转发功能:

    1) #echo 1 > /proc/sys/net/ipv4/ip_forward

    2) #sysctl -w net.ipv4.ip_forward=1

    以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了

    # service network restart

 命令,所设置的值即会丢失,如果想永久保留配置,可以修改/etc/sysctl.conf文件

 将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1

 

 

OpenWrt Mac地址修改错误SIOCSIFHWADDR: Cannot assign requested address

 

问题

设置mac地址 11:22:33:44:55:66, 在OpenWrt正在开发的主trunk上就没有SIOCSIFHWADDR: Cannot assign requested address, 这个问题。
但是到attitude adjustment最新的trunk上就出现了,估计是内核版本不同,导致都mac地址的限制不同导致。
最新的反而不严格了?这个不科学啊。

解决方法:
http://blog.csdn.net/evenness/article/details/7674038
http://blog.csdn.net/hds_yx/article/details/17285873

 

在Linux下修改网卡的MAC地址命令:

/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether 47:72:65:65:6e:00
/sbin/ifconfig eth0 up

当输入第二句命令是会提示:SIOCSIFHWADDR: Cannot assign requested address。原来是MAC地址设置不对。
IP地址分为三类:广播,组播和单播。广播就是:FF:FF:FF:FF:FF:FF。组播:第一字节最后一位是1,如47:72:65:65:6e:00,
47的最后一位是1。单播:第一字节最后一位是0,如48:72:65:65:6e:00
。把上面的地址改为48就不会出现这个问题了。

问题深入学习:

IEEE 802定义MAC地址为

|<--------- 24 bit --------->|<--------- 24 bit -------->|
| ccccccug cccccccc cccccccc | xxxxxxxx xxxxxxx xxxxxxxx |

由ug控制mac地址类型:

u: 0:由 IEEE 指定ID统一管理
    1:本地管理
g: 0:单播
    1:多播
也就是12位MAC地址分为四类,由其中第二位决定
第二位为
 0 | 4 | 8 | C :(00)统一管理的单播 MAC
 1 | 5 | 9 | D :(01)统一管理的多播 MAC
 2 | 6 | A | E :(10)本地管理的单播 MAC
 3 | 7 | B | F: (11)本地管理的多播 MAC

=================================================================
由于针对ADSL路由等这样的网络终端,一般使用的都是 统一管理的单播MAC
所以会判断 02:10:18:01:00:01 或者(11:01:18:00:00:30)为无效MAC,导致无线等功能失效,或者网络连接失败等现象。
而对于 00:25:5E:08:DE:43 这样的MAC就被认为是有效的

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"cannot assign requested address"是一个错误信息,它通常出现网络编程中。这个错误表示尝试将一个socket绑定到一个无效的地址上。引用和引用提到了在TCP服务和编程中可能出现该错误的情况。在这些场景中,当尝试将一个socket绑定到一个无效的地址时,操作系统会返回这个错误。这可能是由于地址无效、端口已被占用或者其他网络配置问题引起的。 在引用中提到了一个与Tomcat相关的错误信息,即"Cannot assign requested address: JVM_Bind"。这个错误通常发生在Tomcat服务器启动时,表示Tomcat无法将其服务绑定到请求的地址上。这可能是由于端口已被占用或者网络配置不正确引起的。 综上所述,"cannot assign requested address"是一个通用的错误信息,它可能出现在不同的网络编程场景中,表示尝试将socket绑定到无效的地址上。具体的原因可能是地址无效、端口已被占用或者其他网络配置问题。对于具体的错误,需要根据上下文和具体的场景进行排查和解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [cannot assign requested address错误解决](https://blog.csdn.net/skh2015java/article/details/104467217)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Cannot assign requested address错误解决](https://blog.csdn.net/m0_46392035/article/details/124767886)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Tomcat Cannot assign requested address: JVM_Bind 非端口占用冲突](https://download.csdn.net/download/weixin_38691703/12787735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值