1.全球IP因特网

1.1数据在互联网上的传输过程

image

1.2 一个网络程序的软硬件组织

image

1.3 IP地址结构

一个IP地址就是一个无符号32位整数。网络程序将其存放在如下所示结构体中:struct in_addr{ uint32_t s_addr; //大端法表示的IP地址 };因为网络字节序都是大端法表示的,所以Unix提供了一组函数用于在网络和主机间进行字节序的转换:#includeuint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); //返回网络字节序 uint32_t ntohl(uint32_t netlong); uint16_t ntohs(uint16_t netshort); //返回主机字节序
IP地址通常以点分十进制表示法来表示的。例如127.0.0.1就是0x7f000001。Unix也提供了一组函数用于在点分十进制和32位十六进制数进行转换的函数:
#includeint inet_pton(AF_INET,const char *src, void *dst); //成功返回1,src非法返回0,出错返回-1 const char *inet_ntop(AF_INET,const void *src, char *dst, socklen_t size); //成功返回指向字符串的指针,出错返回NULL
参数AF_INET代表IPv4,而若是128位的IPv6地址,则是AF_INET6;
对于inet_ntop函数,成功时dst返回指向字符串表示的IP地址的前size字节。

1.4因特网域名

为了便于人类的记忆,DNS服务器记录了所有IP地址和主机名的映射,我们可以通过Linux系统下的nslookup程序来查看域名对应的地址。