IP地址是Internet中主机的唯一标识
Internet中的主机要与别的机器通信必须具有一个IP地址
IP地址为32位(IPv4)或者128位(IPv6)
每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由
IPV4地址的表示形式:点分十进制 如192.168.1.123 最后都会转换为一个32位的无符号整数。
IP地址分类(依据ipv4地址的前八位来分)
A类 0000 0000 - 0111 1111 0.x.x.x - 127.x.x.x
B类 1000 0000 - 1011 1111 128.x.x.x - 191.x.x.x
C类 1100 0000 - 1101 1111 192.x.x.x - 223.x.x.x
D类 1110 0000 - 1110 1111 224.x.x.x - 239.x.x.x 表示组播地址
E类 1111 0000 - 1111 1111 240.x.x.x - 255.x.x.x 属于保留测试
127.x.x.x 表示主机地址
192.168.x.x 表示局域网ip地址
192.168.1.x 为例
192.168.1.0 代表网络号
192.168.1.1 表示网关
192.168.1.255 表示广播地址
子网掩码:得到主机的最大连接个数
A类 255.0.0.0 2~24
B类 255.255.0.0 2~16
C类 255.255.255.0 2~8
点分十进制ip地址本质是一个字符串,最后都会转换为一个32位的无符号整数
#include <arpa/inet.h>
将点分十进制IP地址转化为网络字节序的整型数据
in_addr_t inet_addr(const char *cp);
将网络字节序的整型数据转化为点分十进制ip地址
char *inet_ntoa(struct in_addr in);