首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络协议 >

关于套接字的路由有关问题

2013-11-08 
关于套接字的路由问题现在我有这样一个问题。远端服务器的地址假如是A,默认路由是通过eth0发送出去的。这时

关于套接字的路由问题
现在我有这样一个问题。

远端服务器的地址假如是A,默认路由是通过eth0发送出去的。这时我创建一个套接字并连接到远端地址上(TCP)。这时发送的数据流都是通过eth0发送出去的。

而这时,刚才的套接字不关,并创建一个tun的设备,并把默认路由改为从tun0发送出去。这时刚才的套接字再次发送数据的时候。是通过eth0设备发出去?还是从tun0发送出去?

我之前有粗略看过Linux内核的一段代码。貌似在路由检查时,会先判断sock对象中是否有对应的路由项。如果有的话。会把数据发送到路由项对应的设备上去。如果没有的话才会去调用路由查找的函数去做查找,从而找到相对应的设备,但是现在有一段时间没看内核的代码了。不确定了。所以想问一下是怎么样的?

还有一个问题就是,如果是UDP的数据。是否有重用先前路由的能力???

求大神指点,在线等。。
路由 tcp udp linux内核
[解决办法]
 应该还是eth0发送出去的吧! tun0只是一个虚拟网卡而已!

自己可以多测试几遍,
http://blog.csdn.net/xuxinyl/article/details/6454536

[解决办法]
添加明细路由,比如你的服务器是X.X.X.X 
添加一条
ip route add X.X.X.X dev eth0
的接口就可以了
这样子所有的数据包都是从你的默认路由走到了tun设备。然后tun设备加工好后,在通过你的tun接收程序进行二次转发。这样子,由于只有你的tun接收程序知道要发向哪个地方,因此这里将会把加工好的数据通过eth0发送出去。

热点排行