এর অর্থ কেবলমাত্র উত্স ঠিকানা হিসাবে (যেমন কোনও স্থানীয় ইন্টারফেসে সকেটকে আবদ্ধ করার সময়)। গন্তব্য ঠিকানা হিসাবে এর এর অর্থ নেই - এটি প্রযুক্তিগতভাবে একটি অবৈধ ঠিকানা।
তবে মনে হয় মূলত বিএসডি এটিকে একটি লুপব্যাক সংযোগ হিসাবে গণ্য করেছে এবং লিনাক্স এটি বহন করে।
আইপিভি 4-এর জন্য, একটি অল-জিরো গন্তব্যটি net/ipv4/route.c
রুট দেখার সময় পরিচালনা করা হয়:
struct rtable *ip_route_output_key_hash_rcu(...) {
...
if (!fl4->daddr) {
fl4->daddr = fl4->saddr;
if (!fl4->daddr)
fl4->daddr = fl4->saddr = htonl(INADDR_LOOPBACK);
dev_out = net->loopback_dev;
fl4->flowi4_oif = LOOPBACK_IFINDEX;
res->type = RTN_LOCAL;
flags |= RTCF_LOCAL;
goto make_route;
}
...
}
যা "গন্তব্য শূন্য থাকলে, এটি 127.0.0.1 দিয়ে পূরণ করুন এবং lo
ইন্টারফেসের মাধ্যমে রুট করুন " এ অনুবাদ করে। ওএস ভান করে যে আপনি লোকালহোস্টের সাথে সংযোগ স্থাপনের চেষ্টা করেছিলেন।
আইপিভি 6-তে একই প্রোটোকল স্তরে পরিচালনা করা হয় (স্বতন্ত্রভাবে টিসিপি এবং ইউডিপি দ্বারা)। উদাহরণস্বরূপ, net/ipv6/tcp_ipv6.c
রয়েছে:
static int tcp_v6_connect(...) {
...
/*
* connect() to INADDR_ANY means loopback (BSD'ism).
*/
if (ipv6_addr_any(&usin->sin6_addr)) {
if (ipv6_addr_v4mapped(&sk->sk_v6_rcv_saddr))
ipv6_addr_set_v4mapped(htonl(INADDR_LOOPBACK),
&usin->sin6_addr);
else
usin->sin6_addr = in6addr_loopback;
}
...
}
এদিকে net/ipv6/udp.c
:
int udpv6_sendmsg(...) {
...
if (!ipv6_addr_any(daddr))
fl6.daddr = *daddr;
else
fl6.daddr.s6_addr[15] = 0x1; /* :: means loopback (BSD'ism) */
...
}