c-socket-programming:sizeofipv6
سایز IPv6 در حافظه
چون IPv6 یک آدرس 128bit است برای نگهداری آن در حافظه به 16Byte نیاز داریم. حافظه مورد نیاز برای نگهداری IPv6 باید از نوع struct in6_addr باشد:
// man 7 ipv6 struct in6_addr { unsigned char s6_addr[16]; // IPv6 address };
برای نمایش IPv6 احتیاج به یک رشته به طول 46Byte داریم که null terminated است. طولانی ترین نمونه قابل تصور آدرس IPv6 وقتی است که در انتهای آن IPv4 نوشته می شود:
0000:0000:0000:0000:0000:FFFF:xxx.xxx.xxx.xxx'\0'
این مقدار به شکل یک ثابت در INET6_ADDRSTRLEN در دسترس است.
نمونه بررسی سایز IPv6 :
// sizeof-ipv6.c // gcc -std=c99 -Wall -Wextra -Werror -pedantic -o sizeof-ipv6 sizeof-ipv6.c #include <stdio.h> #include <arpa/inet.h> int main() { printf("sizeof(struct in6_addr) : %ld\n", sizeof(struct in6_addr)); printf("INET6_ADDRSTRLEN : %d\n", INET6_ADDRSTRLEN); return 0; }
خروجی :
sizeof(struct in6_addr) : 16 INET6_ADDRSTRLEN : 46
c-socket-programming/sizeofipv6.txt · آخرین ویرایش: 2024/06/18 01:43 توسط pejman
