डीएनएस रिज़ॉल्वर मॉड्यूल, उपयोगकर्ता को डीएनएस इंटरसेप्शन के लिए सुरक्षा देता है और डीएनएस के लिए, नेटवर्क की परफ़ॉर्मेंस को बेहतर किया है. साथ ही, कॉन्फ़िगरेशन को अपडेट किया गया है समस्या हल करने के लिए किया जा सकता है. मॉड्यूल में वह कोड होता है जो डीएनएस स्टब को लागू करता है रिज़ॉल्वर, जो www.google.com जैसे नामों को IP में बदलता है पते, जैसे कि 2001:db8::1. डीएनएस स्टब रिज़ॉल्वर वापस आ जाता है Java API एलिमेंट, जैसे कि InetAddress#getAllByName और Network#getAllByName और साथ ही नेटिव नेटवर्किंग फ़ंक्शन. साथ ही, ईमेल भेजने और पाने की प्रोसेस लागू करता है डीएनएस क्वेरी पाना और नतीजों को कैश मेमोरी में सेव करना.
Android 10 में हुए बदलाव
Android 9 और इससे पहले के वर्शन वाले डिवाइसों पर, डीएनएस रिज़ॉल्वर कोड
बायोनिक और netd
. डीएनएस लुकअप
ऐप्लिकेशन के पूरे सिस्टम को कैश मेमोरी में सेव करने की अनुमति देने वाला netd
डीमन
बायोनिक में कॉल फ़ंक्शन (जैसे कि getaddrinfo
). क्वेरी भेजी गई
/dev/socket/dnsproxyd
के लिए UNIX सॉकेट के ऊपर
netd
डीमन, जो अनुरोध और कॉल को पार्स करता है
getaddrinfo
फिर से डीएनएस लुकअप जारी करने के लिए. इसके बाद, नतीजों को कैश मेमोरी में सेव करता है
ताकि दूसरे ऐप्लिकेशन उनका इस्तेमाल कर सकें. डीएनएस रिज़ॉल्वर को लागू करने पर, ज़्यादातर
bionic/libc/dns/
में शामिल है और इसका कुछ हिस्सा
system/netd/server/dns
.
Android 10, डीएनएस रिज़ॉल्वर कोड को
system/netd/resolv,
इसे C++ में बदलता है, फिर इसे आधुनिक करता है और
कोड को रीफ़ैक्ट करता है. ऐप्लिकेशन के लिए, Bionic का कोड मौजूद है
साथ काम नहीं करती, लेकिन सिस्टम अब उसे कॉल नहीं करता. ये सोर्स
रीफ़ैक्टरिंग से पाथ पर असर पड़ता है:
bionic/libc/dns
system/netd/client
system/netd/server/dns
system/netd/server/DnsProxyListener
system/netd/server/ResolverController
system/netd/resolv
फ़ॉर्मैट और डिपेंडेंसी
डीएनएस रिज़ॉल्वर मॉड्यूल (`com.android.resolv`) को
APEX फ़ाइल है और डाइनैमिक तौर पर लिंक की गई है
netd
; हालांकि, netd
है न a
डिपेंडेंसी, क्योंकि मॉड्यूल लोकल सॉकेट पर काम करता है
सीधे /dev/socket/dnsproxyd
.
रिज़ॉल्वर कॉन्फ़िगरेशन को netd
से रिज़ॉल्वर में ले जाया गया,
इसका मतलब है कि सिस्टम सेवा सीधे रिज़ॉल्वर मॉड्यूल में कॉल कर सकती है
वह भी netd
से गुज़रे बिना.
डीएनएस रिज़ॉल्वर मॉड्यूल libc
(बायोनिक) और
अपनी डिपेंडेंसी को स्टैटिक रूप से लिंक करता है; इसके लिए, किसी दूसरी लाइब्रेरी की ज़रूरत नहीं होती है.
mडीएनएस .local रिज़ॉल्यूशन
नवंबर 2021 से, Android रिज़ॉल्वर पर m DNS .local रिज़ॉल्यूशन काम करता है. यह अब लागू होता है
"5.1 वन-शॉट मल्टीकास्ट डीएनएस क्वेरी" को बिना मशीन के स्टैंडर्ड डीएनएस क्वेरी भेजने के लिए, RFC 6762 में
224.0.0.251:5353 या [FF02::FB]:5353. mडीएनएस रिज़ॉल्यूशन, साफ़ तौर पर काम करता है
*.local
से खत्म होने वाले होस्टनेम से getaddrinfo()
पर कॉल करके.
mडीएनएस .local रिज़ॉल्यूशन, getaddrinfo()
की मौजूदा सुविधाओं को बेहतर बनाता है
इससे आपको पता चल जाएगा. अगर किसी डिवाइस में mडीएनएस .local रिज़ॉल्यूशन काम करता है, तो
getaddrinfo()
एपीआई, mडीएनएस क्वेरी को 224.0.0.251:5353 या [FF02::FB]:5353 पर भेजता है
और स्थानीय पते दिखाता है. अगर किसी डिवाइस पर mडीएनएस .local काम नहीं करता
रिज़ॉल्यूशन का इस्तेमाल करता है, तो getaddrinfo()
एपीआई वाला तरीका डीएनएस को डीएनएस क्वेरी भेजता है
सर्वर.
कोड, एओएसपी में है और packages/modules/DnsResolver
में मौजूद है. उपयोगकर्ता अपनी
पते पाने के लिए मौजूदा mडीएनएस डिज़ाइन या इसके बजाय getaddrinfo()
का इस्तेमाल करें. इसका व्यवहार
यह सुविधा, mडीएनएस मल्टीकास्ट पतों पर भेजी जाने वाली सामान्य डीएनएस क्वेरी की तरह है. इस सुविधा में कोई
और सिस्टम की परफ़ॉर्मेंस पर असर पड़ सकता है.
उपयोगकर्ता adb shell ping6 HOSTNAME.local
निर्देश का इस्तेमाल कर सकते हैं,
जहां HOSTNAME, LAN पर टारगेट किए गए किसी डिवाइस का होस्टनेम है. उदाहरण के लिए,
adb shell ping6 ipad.local
.
वीपीएन और मोबाइल डेटा कनेक्शन के लिए, .लोकल रिज़ॉल्यूशन का इस्तेमाल नहीं किया जाता.