设为首页 加入收藏

TOP

Linux下将套接口绑定到网络设备的方法(二)
2014-11-24 07:26:12 来源: 作者: 【 】 浏览:4
Tags:Linux 接口 绑定 网络设备 方法
handling*/
}
然后,在程式的主体部分,每次在sock1上发送一个数据包,同时也就会在sock2上发送一个数据包,并且程式中没有所有接收数据的动作。由于所有数据包的大小都是相等的。因此能预计在两个网络接口上发送的数据量应该相差不大才对。测试结果有力地支持了这一猜想:在运行程式一段时间后,接口ppp0上发送的数据量为702KB,而ppp1接口上发送的数据量为895KB。虽然仍然相差了将近200KB,不过无论怎么,比起原来的情况已提高了不少。至于为什么会有这样200KB的差距,作者也正在找原因。


3. 更多结论
针对SO_BINDTODEVICE套接口选项,作者在全方面阅读man手册之后,得出的结论如下:
(1)对于TCP套接口、UDP套接口、RAW套接口,能通过SO_BINDTODEVICE套接口选项将套接口绑定到指定的网络接口上。绑定之后,套接口的所有数据包收发都只经过指定的网络接口;
(2)对于PACKET类型的套接口,不能通过SO_BINDTODEVICE绑定到指定的网络接口上,而要通过bind(2)来和特定的网络接口绑定,所用的套接口地址结构为struct sockaddr_ll,此套接口地址结构是链路层的地址结构,独立于具体的网络设备。比如,该地址结构既能用于表示PPP设备,也能用于表示ethernet设备。
(3)SO_BINDTODEVICE套接口选项只适用于Linux系统。如果要编写运行在多操作系统平台上的程式,不能依赖SO_BINDTODEVICE来完成套接口和具体设备的绑定。
不过,作者并没有对TCP套接口和RAW套接口进行测试。对于PACKET套接口,上述结论是可信的,因为我阅读了dhcpd的原始码,发现对于PACKET套接口的确是通过bind(2)绑定到指定的网络接口上的。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下大唐3G_TD模块DTM6211的使.. 下一篇Linux下获得本机IP及网卡状态的函..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)