当前位置 : 主页 > 网络编程 > 其它编程 >

IP地址匹配

来源:互联网 收集:自由互联 发布时间:2023-07-02
问题描述:在路由器中,一般来说转发模块采用最大前缀匹配原则进行目的端口查找,具体如下:IP地址和子网地址匹配:IP地址和子网地址所带掩码做AND运算后,得到的值与子网地址相
问题描述:在路由器中,一般来说转发模块采用最大前缀匹配原则进行目的端口查找,具体如下:IP地址和子网地址匹配:IP地址和子网地址所带掩码做AND运算后,得到的值与子网地址相同,则该

问题描述: 在路由器中,一般来说转发模块采用最大前缀匹配原则进行目的端口查找,具体如下:

IP地址和子网地址匹配:

IP地址和子网地址所带掩码做AND运算后,得到的值与子网地址相同,则该IP地址与该子网匹配。

比如:

IP地址:192.168.1.100

子网:192.168.1.0/255.255.255.0,其中192.168.1.0是子网地址,255.255.255.0是子网掩码。

192.168.1.100 7 const char *p; 8 i = 0; 9 l = 0; 10 sum = 0; 11 len = 0; 12 *n = -1; 13 p = ip_addr; 14 while (*p != ‘\0‘) 15 { 16 j = 0; 17 while (*p >= ‘0‘ 20 j = j * 10 + k; 21 p++; 22 } 23 if (*p == ‘\0‘){ 24 ip[l++] = j; 25 break; 26 } 27 ip[l++] = j; 28 p++; 29 } 30 l = 0; 31 printf("ip:\n"); 32 for (l=0; l = ‘0‘ 61 j = j * 10 + k; 62 p++; 63 } 64 if (*p == ‘\0‘){ 65 mask[l++] = j; 66 break; 67 } 68 mask[l++] = j; 69 p++; 70 } 71 printf("\n"); 72 for (l=0; l <4; l++) 73 printf("%d ",net[l]); 74 printf("/ "); 75 for (l=0; l <4; l++) 76 printf("%d ",mask[l]); 77 printf("\ncal ip 78 for (l=0; l > 1; 91 } 92 } 93 if (l >= 4) 94 { 95 printf("\n前缀长度:%d",sum); 96 if (len <= sum) 97 { 98 *n = i; 99 len = sum;100 }101 }102 sum = 0;103 i++;104 l = 0;105 printf("\n");106 }107 printf("\n");108 }109 int main()110 {111 char ip_addr[20] = "192.168.1.100";112 113 //ip_addr[13] = ‘\0‘;114 115 const char *net_addr_array[100] =116 117 {118 "192.168.1.128/255.255.255.192",119 "192.168.1.0/255.255.255.0",120 "192.168.1.64/255.255.255.192",121 "0.0.0.0/0.0.0.0",122 ""123 };124 int *n;125 n = (int*)malloc(sizeof(int));126 max_prefix_match(ip_addr, net_addr_array, n);127 printf("n = %d\n",*n);128 129 }

,

IP地址匹配

上一篇:ie8浏览器有什么新功能
下一篇:没有了
网友评论