Android 的网络管理框架简要分析

本文简要分析了Android的网络管理,核心涉及ConnectivityService和NetworkPolicyManagerService。ConnectivityService负责网络连接管理,而Netd作为守护进程,提供物理层面的网络管理服务,其源码主要存在于system/netd目录下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        Android的网络管理核心是ConnectivityService和NetworkPolicyManagerService服务。ConnectivityService主要提供网络链接管理服务,NetworkManagementService主要提供物理管理服务。

       管理各种网络设备---Netd守护进程.

<span style="font-size:12px;">#service netd /system/bin/netd
#    class main
#    socket netd stream 0660 root system
#    socket dnsproxyd stream 0660 root inet
#    socket mdns stream 0660 root system
#    socket fwmarkd stream 0660 root inet</span>


 Netd 是一个守护进程,它是在init.rc中启动的。


Netd模块的源代码主要位于目录system/netd中 ,我们来看看它的入口函数。代码如下

int main() {

    CommandListener *cl;
    NetlinkManager *nm;
    DnsProxyListener *dpl;
    MDnsSdListener *mdnsl;
    FwmarkServer* fwmarkServer;

    ALOGI("Netd 1.0 starting");
    remove_pid_file();

    blockSigpipe();

    if (!(nm = NetlinkManager::Instance())) {
        ALOGE("Unable to create NetlinkManager");
        exit(1);
    };

    cl = new CommandListener();
    nm->setBroadcaster((SocketListener *) cl);

    if (nm->start()) {
        ALOGE("Unable to start NetlinkManager (%s)", strerror(errno));
        exit(1);
    }

    // Set local DNS mode, to prevent bionic from proxying
    // back to this service, recursively.
   //注意,这里设置了一个环境变量
   setenv("ANDROID_DNS_MODE", "local", 1);
    dpl = new DnsProxyListener(CommandListener::sNetCtrl);
    if (dpl->startListener()) {
        ALOGE("Unable to start DnsProxyListener (%s)", strerror(errno));
        exit(1);
    }

    mdnsl = new MDnsSdListener();
    if (mdnsl->startListener()) {
        ALOGE("Unable to start MDnsSdListener (%s)", strerror(errno));
        exit(1);
    }

    fwmarkServer = new FwmarkServer(CommandListener::sNetCtrl);
    if (fwmarkServer->startListener()) {
        ALOGE("Unable to start FwmarkServer (%s)", strerror(errno));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值