
# 网络地址类型
DWS提供用于存储IPv4、IPv6、MAC地址的数据类型。
网络地址类型提供输入错误检查和特殊的操作和功能（请参见[网络地址函数和操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0038.html)），比纯文本类型更适合存储IPv4、IPv6、MAC地址的数据类型。
表1网络地址类型 
| 名字      | 存储空间   | 描述             |
|:---|:---|:---|
| cidr    | 7或19字节 | IPv4或IPv6网络    |
| inet    | 7或19字节 | IPv4或IPv6主机和网络 |
| macaddr | 6字节    | MAC地址          |
   
在对inet或cidr数据类型进行排序的时候，IPv4地址总是排在IPv6地址前面，包括那些封装或者是映射在IPv6地址里的IPv4地址，例如::10.2.3.4或::ffff:10.4.3.2。
#### cidr
cidr（无类别域间路由，Classless Inter-Domain Routing）类型，保存一个IPv4或IPv6网络地址。声明网络格式为address/y，address表示IPv4或者IPv6地址，y表示子网掩码的二进制位数。如果省略y，则掩码部分使用已有类别的网络编号系统进行计算，但要求输入的数据已经包括了确定掩码所需的所有字节。
- 示例一：CIDR格式换算为IP地址网段 例如，10.0.0.0/8换算为32位二进制地址：00001010.00000000.00000000.00000000。其中/8表示8位网络ID，即32位二进制地址中前8位是固定不变的，对应网段为：00001010.00000000.00000000.00000000\~00001010.11111111.11111111.11111111。则换算为十进制后，10.0.0.0/8表示：子网掩码为255.0.0.0，对应网段为10.0.0.0\~10.255.255.255。
  
- 示例二：IP地址网段换算为CIDR格式 例如，192.168.0.0\~192.168.31.255，后两段IP换算为二进制地址：00000000.00000000\~00011111.11111111，可以得出前19位（8\*2+3）是固定不变的，则换算为CIDR格式后，表示为：192.168.0.0/19。
  
表2cidr类型输入举例 
| cidr输入                               | cidr输出                               | abbrev（cidr）                     |
|:---|:---|:---|
| 192.168.100.128/25                   | 192.168.100.128/25                   | 192.168.100.128/25               |
| 192.168/24                           | 192.168.0.0/24                       | 192.168.0/24                     |
| 192.168/25                           | 192.168.0.0/25                       | 192.168.0.0/25                   |
| 192.168.1                            | 192.168.1.0/24                       | 192.168.1/24                     |
| 192.168                              | 192.168.0.0/24                       | 192.168.0/24                     |
| 10.1.2                               | 10.1.2.0/24                          | 10.1.2/24                        |
| 10.1                                 | 10.1.0.0/16                          | 10.1/16                          |
| 10                                   | 10.0.0.0/8                           | 10/8                             |
| 10.1.2.3/32                          | 10.1.2.3/32                          | 10.1.2.3/32                      |
| 2001:4f8:3:ba::/64                   | 2001:4f8:3:ba::/64                   | 2001:4f8:3:ba::/64               |
| 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1 |
   
#### inet
inet类型在一个数据区域内保存主机的IPv4或IPv6地址，以及一个可选子网。主机地址中网络地址的位数表示子网（"子网掩码"）。如果子网掩码是32并且地址是IPv4，则这个值不表示任何子网，只表示一台主机。在IPv6里，地址长度是128位，因此128位表示唯一的主机地址。
该类型的输入格式是address/y，address表示IPv4或者IPv6地址，y是子网掩码的二进制位数。如果省略/y，则子网掩码对IPv4是32，对IPv6是128，所以该值表示只有一台主机。如果该值表示只有一台主机，/y将不会显示。
inet和cidr类型之间的基本区别是inet接受子网掩码，而cidr不接受。
#### macaddr
macaddr类型存储MAC地址，也就是以太网卡硬件地址（尽管MAC地址还用于其它用途）。可以接受下列格式：
```
'08:00:2b:01:02:03'
'08-00-2b-01-02-03'
'08002b:010203'
'08002b-010203'
'0800.2b01.0203'
'08002b010203'
```
这些示例都表示同一个地址。对于数据位a到f，大小写都行。输出时都是以第一种形式展示。
