linux中网络接口名称限制
2015-09-08 09:40
495 查看
Linux中每个网络接口都有一个名称,可以使用ifconfig命令来查询当前系统中的接口。
那么这些接口命名时是否有要求或者限制呢,比如格式或者长度限制。
从表面上看似乎没有限制可以随意命名,在一般应用场景中也可以正常工作,当在特殊应用场合中就会因为接口名称的原因出现莫名其妙的问题。
问题1:接口名称长度过长
应用场景:使用网络造包、发包工具进行向外发包时(比如mz工具),需要指定网络接口。
问题:当这个接口名称的长度过长时就会出现发包失败情况。
原因:看如下代码。
结论:网络接口名称长度不超过13个字节。
那么这些接口命名时是否有要求或者限制呢,比如格式或者长度限制。
从表面上看似乎没有限制可以随意命名,在一般应用场景中也可以正常工作,当在特殊应用场合中就会因为接口名称的原因出现莫名其妙的问题。
问题1:接口名称长度过长
应用场景:使用网络造包、发包工具进行向外发包时(比如mz工具),需要指定网络接口。
问题:当这个接口名称的长度过长时就会出现发包失败情况。
原因:看如下代码。
来自标准linux源代码(include/linux/socket.h) struct sockaddr { <span style="white-space:pre"> </span>sa_family_t sa_family; /* address family, AF_xxx */ <span style="white-space:pre"> </span>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个字节。
相关文章推荐
- linux 安装httpd(验证通过)
- apache日志提示[warn] (OS 64)指定的网络名不再可用。 : winnt_accept
- 卷积神经网络各参数的含义
- VMware下redhat与主机网络互通配置
- iOS开发之-- DNS解析(网络切换的问题解决)
- httpPost和httpGet的使用示例
- NFS 跨网问题解决
- 关于“50% CPU 占有率”题目的内容扩展
- 网络受限是个什么东东?
- 手把手教你写基于C++ Winsock的图片下载的网络爬虫
- 常见开源产品epoll网络事件模型分析(附200万QPS实现长连接echo server方案)
- HTTPS
- TCP 回顾
- JBoss 系列二:使用Apache httpd(mod_cluster)和JBoss构架高可用集群环境
- JSP报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- https://readthedocs.org/
- HttpServlet
- linux下使用usb总线实现类似于tcp/ip的server/client通信
- tcp拥塞控制
- android菜鸟进阶之路—— HttpClient 的实例