linux网卡名称长度,linux中网络接口名称限制讲解

Linux中每个网络接口都有一个名称,可以使用ifconfig命令来查询当前系统中的接口。

那么这些接口命名时是否有要求或者限制呢,比如格式或者长度限制。

从表面上看似乎没有限制可以随意命名,在一般应用场景中也可以正常工作,当在特殊应用场合中就会因为接口名称的原因出现莫名其妙的问题。

问题1:接口名称长度过长

应用场景:使用网络造包、发包工具进行向外发包时(比如mz工具),需要指定网络接口。

问题:当这个接口名称的长度过长时就会出现发包失败情况。

原因:看如下代码。

来自标准linux源代码(include/linux/socket.h)

struct sockaddr {

sa_family_t sa_family; /* address family, AF_xxx */

char sa_data[14]; /* 14 bytes of protocol address */

};

当应用程序使用socket向内核发包时,会调用struct sockaddr结构来设置发包的协议族(sa_family)和接口名称(sa_data[14]),当指定的接口名称长度超过13字节时,比如一个桥接口名称为br-0123456789abcd,最终保存到sa_data[14]中的接口名称就会被截断为br-0123456789,这样由于接口不存在就会导致发包失败。

结论:网络接口名称长度不超过13个字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值