परिचय

हम सभी IPv4 पते के बारे में जानते हैं। अब, IPv4 पतों की समाप्ति के साथ, IPv6 को एक बड़े एड्रेस स्पेस प्रदान करने के लिए पेश किया गया है।
आइए C भाषा में सॉकेट के लिए IPv6 पतों के कार्यान्वयन पर चर्चा करें। सॉकेट प्रोग्रामिंग में IPv6 पतों को समझना और लागू करना IPv6-सक्षम नेटवर्क में निर्बाध संचार को सक्षम बनाता है और अनुकूलता सुनिश्चित करता है।
IPv6 पते को समझना
IPv6 पते इंटरनेट प्रोटोकॉल संस्करण 6 (IPv6) का एक अभिन्न अंग हैं और नेटवर्क पर उपकरणों की पहचान और स्थान निर्धारित करने में बहुत महत्वपूर्ण भूमिका निभाते हैं। IPv4 पतों की समाप्ति के साथ, IPv6 को सीमाओं को दूर करने और काफी बड़े एड्रेस स्पेस प्रदान करने के लिए पेश किया गया था। IPv6 पते 128-बिट संख्याएं हैं। इसके परिणामस्वरूप कुल 2^128 अद्वितीय पते होते हैं।
IPv6 पते की संरचना इस प्रकार दर्शाई जाती है:
aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa
यहां, प्रत्येक "a" एक 4-अंकीय हेक्साडेसिमल संख्या को दर्शाता है जो 0000 से FFFF तक होती है।
16-बिट ब्लॉक के भीतर अग्रणी शून्य को IPv6 पते के प्रतिनिधित्व में छोड़ दिया जाता है। उदाहरण के लिए, "2001:0DB8:0000:0000:0000:0000:0000:0001" पते को "2001:DB8::1" के रूप में लिखा जा सकता है। "::" संकेतन अधिक संक्षिप्त प्रतिनिधित्व की अनुमति देता है, विशेष रूप से शून्य की लंबी स्ट्रिंग वाले पतों के लिए। हालांकि, हमें इसका उपयोग सावधानी से करना चाहिए क्योंकि जब कई "::" घटनाएं संभव हों तो यह अस्पष्टता पैदा कर सकता है। उस स्थिति में, स्पष्टता बनाए रखने के लिए पते को पूरी तरह से विस्तारित करना चाहिए।
IPv6 पते केस-असंवेदनशील होते हैं जो हेक्साडेसिमल अंकों में अपरकेस और लोअरकेस दोनों अक्षरों की अनुमति देते हैं। हालांकि, कन्वेंशन संगति के लिए लोअरकेस अक्षरों का उपयोग करना है। IPv6 पते विभिन्न उद्देश्यों की पूर्ति करते हैं जिनमें नेटवर्क इंटरफेस की पहचान, पैकेट को रूट करना, और उपकरणों के बीच संचार सक्षम करना शामिल है। उन्हें डिवाइस को मैन्युअल रूप से या डायनामिक होस्ट कॉन्फ़िगरेशन प्रोटोकॉल संस्करण 6 (DHCPv6) जैसे प्रोटोकॉल के माध्यम से स्वचालित रूप से असाइन किया जाता है। इसलिए, C में सॉकेट के लिए IPv6 पतों को लागू करना महत्वपूर्ण है क्योंकि यह IPv6-सक्षम नेटवर्क में निर्बाध संचार को सक्षम बनाता है जो उपकरणों की बढ़ती संख्या में मदद करता है और विकसित हो रहे इंटरनेट इंफ्रास्ट्रक्चर के साथ अनुकूलता सुनिश्चित करता है।
C में सॉकेट के लिए IPv6 पतों को लागू करने के चरण
आइए C भाषा में सॉकेट के लिए IPv6 पतों को लागू करने के तरीकों के बारे में निम्नलिखित चरणों पर विचार करें:
- सबसे पहले, हमें अपने C प्रोग्राम में सॉकेट के साथ काम करने के लिए संरचनाओं और फ़ंक्शन प्रदान करने वाले आवश्यक हेडर्स को शामिल करना होगा।
- फिर, हमें एक सॉकेट बनाना होगा। IPv6 सॉकेट बनाने के लिए
socket()फ़ंक्शन का उपयोग करें। फिर, डोमेन कोAF_INET6और टाइप को TCP के लिएSOCK_STREAMया UDP के लिएSOCK_DGRAMके रूप में निर्दिष्ट करें। - फिर, सॉकेट को बाइंड करें।
bind()फ़ंक्शन का उपयोग करके सॉकेट को एक विशिष्ट IPv6 पते और पोर्ट के साथ जोड़ें। फिर, "struct sockaddr_in6" नामक एक संरचना बनाएं और इसे जानकारी प्रदान करें। - फिर,
listen()फ़ंक्शन का उपयोग करके कनेक्शन के लिए सुनें ताकि सॉकेट को आने वाले कनेक्शन के लिए तैयार किया जा सके। - अंत में, कनेक्शन स्वीकार करने के लिए, बाउंड सॉकेट पर आने वाले कनेक्शन को स्वीकार करने के लिए
accept()फ़ंक्शन का उपयोग करें जो एक नया सॉकेट फ़ाइल डिस्क्रिप्टर लौटाता है।
प्रोग्रामिंग उदाहरण 1: सॉकेट के लिए IPv6 पते लागू करें
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define PORT 7070
#define BACKLOG 5
int main() {
int server_fd, new_socket;
struct sockaddr_in6 server_addr, client_addr;
socklen_t client_addr_len;
// हम IPv6 सॉकेट बनाते हैं
server_fd = socket(AF_INET6, SOCK_STREAM, 0);
if (server_fd == -1) {
perror("सॉकेट निर्माण विफल");
exit(EXIT_FAILURE);
}
// हम सॉकेट को बाइंड करते हैं
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin6_family = AF_INET6;
server_addr.sin6_port = htons(PORT);
server_addr.sin6_addr = in6addr_any;
if (bind(server_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {
perror("सॉकेट बाइंड विफल");
exit(EXIT_FAILURE);
}
printf("IPv6 पते पर कनेक्शन के लिए सुन रहे हैं ...\n");
// आने वाले कनेक्शन के लिए सुनें
if (listen(server_fd, BACKLOG) == -1) {
perror("सॉकेट सुनना विफल");
exit(EXIT_FAILURE);
}
printf("आने वाले कनेक्शन की प्रतीक्षा कर रहे हैं ...\n");
// हम कनेक्शन स्वीकार करते हैं
client_addr_len = sizeof(client_addr);
new_socket = accept(server_fd, (struct sockaddr*)&client_addr, &client_addr_len);
if (new_socket == -1) {
perror("सॉकेट स्वीकार विफल");
exit(EXIT_FAILURE);
}
printf("IPv6 पते पर कनेक्शन सफल! \n");
// क्लाइंट IPv6 पते को परिवर्तित और प्रदर्शित करें
char client_ip_str[INET6_ADDRSTRLEN];
inet_ntop(AF_INET6, &(client_addr.sin6_addr), client_ip_str, INET6_ADDRSTRLEN);
printf("कनेक्टेड क्लाइंट IP: %s\n", client_ip_str);
// अब हम सॉकेट बंद करते हैं
close(new_socket);
close(server_fd);
return 0;
}
आउटपुट
$ gcc srr.c -o srr
$ ./srr
IPv6 पते पर कनेक्शन के लिए सुन रहे हैं ...
आने वाले कनेक्शन की प्रतीक्षा कर रहे हैं ...
व्याख्या:
इस प्रोग्रामिंग उदाहरण में, हम पहले एक IPv6 सॉकेट सेट करते हैं, इसे निर्दिष्ट पोर्ट से बांधते हैं, और फिर आने वाले कनेक्शन के लिए सुनते हैं। फिर, हम संदेश प्रदर्शित करते हैं जो इंगित करते हैं कि यह कनेक्शन के लिए सुन रहा है और आने वाले कनेक्शन की प्रतीक्षा कर रहा है। जब एक क्लाइंट सफलतापूर्वक कनेक्ट होता है, तो यह एक संदेश प्रिंट करता है जो कनेक्शन की पुष्टि करता है और क्लाइंट का IPv6 पता प्रदर्शित करता है। अंत में, हम सभी सॉकेट बंद करते हैं। यह प्रोग्रामिंग उदाहरण IPv6 नेटवर्क पर क्लाइंट के साथ संचार की अनुमति देता है।
निष्कर्ष
C में सॉकेट के लिए IPv6 पतों का कार्यान्वयन IPv6-सक्षम नेटवर्क में संचार को सक्षम करने के लिए महत्वपूर्ण है। इस लेख में, हमने एक IPv6 सॉकेट के निर्माण, इसे एक विशिष्ट पते और पोर्ट से बांधने, आने वाले कनेक्शन के लिए सुनने, कनेक्शन स्वीकार करने, और क्लाइंट के IPv6 पते को प्रदर्शित करने की व्याख्या की। इन चरणों का पालन करके और उपयुक्त फ़ंक्शन और संरचनाओं का उपयोग करके, हम C भाषा में IPv6 पता प्रबंधन को सफलतापूर्वक लागू कर सकते हैं।
लेखक के बारे में

बामदेब घोष
बामदेब घोष को वायरलेस नेटवर्किंग डोमेन में व्यावहारिक अनुभव है। वह वायरलेस या वायर्ड नेटवर्किंग पर वायरशार्क कैप्चर विश्लेषण के विशेषज्ञ हैं, साथ ही एंड्रॉइड, ब्लूटूथ, लिनक्स कमांड और पायथन का ज्ञान रखते हैं। उनकी साइट फॉलो करें: wifisharks.com