目录:
一 Networking Namespaces
(1)有那些namespeace?
(2)命名空间设备指的是那些?
(3)namespace与socket, 与网络设备的关系:
二 代码分析
2.1 数据结构 struct net {
2.2 “网络命名空间”与“ 网络设备”的组织关系图:
2.3 网络命名空间的操作
//
一 Networking Namespaces
(1)有那些namespeace?
(2)命名空间设备指的是那些?
(3)namespace与socket, 与网络设备的关系:
1.0 整体框架:namespace与socket,协议栈,网络设备的关系:
图片引用自:http://www.cnblogs.com/zmkeil/archive/2013/05/01/3053545.html>
(1)有那些namespeace?linux系统包括默认的命名空间:“init_net”和用户自定义的net;
这里namespace 一般是默认的命名空间:“init_net”,也就是所有的"网络通信协议"+"网络设备"都是属于默认的命名空间.
网络命名空间定义了2个链表,pernet_list和net_namespace_list
如下
static LIST_HEAD(pernet_list);
static struct list_head *first_device = &pernet_list;
LIST_HEAD(net_namespace_list);
init_net会被链接到net_namespace_list这个双向链表上。
pernet_operations结构将被链接到pernet_list这个双向链表上。
以后,如果没自定义网络命名空间的话,所有想用网络命名空间时都将利用默认的“init_net”。
引用自:源文档 <http://blog.chinaunix.net/uid-20185802-id-109664.html>
(2)命名空间设备指的是那些?就是网络设备。通过register_pernet_device注册:就是