ابزار کاربر

ابزار سایت


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 :

#include <stdio.h>
#include <arpa/inet.h>
 
int main()
{
 
	printf("sizeof(struct in6_addr) : %d\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.1718659607.txt.gz · آخرین ویرایش: 2024/06/18 00:56 توسط pejman

به جز مواردی که ذکر می‌شود، مابقی محتویات ویکی تحت مجوز زیر می‌باشند: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki