当前位置: 技术问答>linux和unix
网络编程基础问题
来源: 互联网 发布时间:2015-11-09
本文导语: 各位高手,我刚刚接触linux不长时间,现在要编一个网络程序,有几个问题想请教一下。 大家都知道利用socket可以接收数据包,但是有没有办法能够判断出接收的数据包来自哪个接口呢? 还有,我可以利用r...
各位高手,我刚刚接触linux不长时间,现在要编一个网络程序,有几个问题想请教一下。
大家都知道利用socket可以接收数据包,但是有没有办法能够判断出接收的数据包来自哪个接口呢?
还有,我可以利用raw socket构造一个链路层的frame么?(包括mac头的源mac地址和目的mac地址也由我自己构造)如果可以的话,我能利用某种方法将自己构造的frame从指定的网络接口发送出去么?(即,由我自己决定发送此frame的具体网卡接口)
以上是我的几个问题,望高手们不吝赐教(如果能给一些例子或者资料就更好了),小弟在此先谢谢了。
大家都知道利用socket可以接收数据包,但是有没有办法能够判断出接收的数据包来自哪个接口呢?
还有,我可以利用raw socket构造一个链路层的frame么?(包括mac头的源mac地址和目的mac地址也由我自己构造)如果可以的话,我能利用某种方法将自己构造的frame从指定的网络接口发送出去么?(即,由我自己决定发送此frame的具体网卡接口)
以上是我的几个问题,望高手们不吝赐教(如果能给一些例子或者资料就更好了),小弟在此先谢谢了。
|
socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))
这样就可以拥有对frame的完全控制权,可以在物理层之上构建自己的协议。
还有,利用struct sockaddr与某块网卡进行绑定,这样就可以实现从某个特定的网络接口发送数据了(前提是你自己要正确填写源Mac和目的Mac)
这样就可以拥有对frame的完全控制权,可以在物理层之上构建自己的协议。
还有,利用struct sockaddr与某块网卡进行绑定,这样就可以实现从某个特定的网络接口发送数据了(前提是你自己要正确填写源Mac和目的Mac)
|
man packet
|
是的,可以构造。看网络编程里面就有详细的介绍。
|
Linux网络编程
机械工业出版社
不错的,容易入门
机械工业出版社
不错的,容易入门