您的位置:首页 > 运维架构 > Linux

Linux Socket Programming by Example-第三章 IP地址与子网划分

2012-06-25 10:46 357 查看
本章主要是介绍IP地址的子网划分。

公式: (HOST IP) & (NET MASK) = (NET IP)

 

IP地址按子网大小分为以下几类:

  开始         结束              网络地址位   主机地址位

A 0.0.0.0   127.255.255.255     7           24

B 128.0.0.0 191.255.255.255  14           16

C 192.0.0.0 223.255.255.255  21             8

D 224.0.0.0 239.255.255.255  28             N/A

E 240.0.0.0 247.255.255.255  27            N/A

注意:

1. 0和255通常不用于设置IP地址。

2. 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。

3. 127.X.X.X是保留地址,用做循环测试用的。

4. 172.16.0.0—172.31.255.255是私有地址

5. 169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。

6. 92.168.X.X是私有地址

7. D类地址用于广播,通常不用于设置主机IP。

8. E类地址保留,仅作实验和开发用

我们常用的局域网默认地址192.168.0.0 属于C类地址。

接下来介绍了几个函数:

unsigned long inet_addr(const char *string);

作用:将IP地址从字符串格式转化为整数格式(网络序)

使用方法:

adr_inet.sin_addr.s_addr = inet_addr("127.0.0.95");

if ( adr_inet.sin_addr.s_addr == INADDR_NONE )

    return err;

int inet_aton(const char *string, struct in_addr *addr);

作用:将IP地址从字符串格式转化为整数格式(网络序)

使用方法:

if ( !inet_aton("127.0.0.23",&adr_inet.sin_addr) )

    return err;

char *inet_ntoa(struct in_addr addr);

作用:将IP地址从整数格式(网络序)转化为字符串格式

使用方法:

struct sockaddr_in addr; /* Socket Address */

printf("IP ADDR: %s\n",inet_ntoa(addr.sin_addr));

unsigned long inet_network(const char *addr);

作用:将IP地址从字符串格式转化为整数格式(本地序(也就是如果本地机器为

Big-Endian,则转化后的整数也是Big-Endian))

使用方法:

unsigned long net_addr;

net_addr = inet_network("192.168.9.1") & 0xFFFFFF00;

unsigned long inet_lnaof(struct in_addr addr);

作用:将IP地址从字符串格式转化为整数格式(本地序),并去掉子网IP

使用方法:

struct sockaddr_in addr; /* Socket Address */

unsigned long host_id; /* Host ID number */

host_id = inet_lnaof(addr.sin_addr);

unsigned long inet_netof(struct in_addr addr);

作用:将IP地址从字符串格式转化为整数格式(本地序),并去掉主机IP

使用方法:

struct sockaddr_in addr; /* Socket Address */

unsigned long net_id; /* Network ID number */

net_id = inet_netof(addr.sin_addr);

struct in_addr inet_makeaddr(int net,int host);

作用: 通过子网地址与主机地址合成一个网络地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息