第三章 地址族与数据序列
3.1分配给套接字的IP地址与端口号
IP是Internet Protocol(网络协议)的简写,是为了收发数据而分配给计算机的值。
3.1.1网络地址(Internet Address)
3.1.2网络地址分类与主机地址边界
- A类地址的首字节范围:0~127
- B类地址的首字节范围:128~191
- C类地址的首字节范围:192~223
3.1.3用于区分套接字的端口号
计算机中一般配有NIC数据传输设备。通过NIC向计算机内部传输数据时候会用到IP。
3.2地址信息的表示
3.2.1表示IPv4的结构体
结构体定义为如下形态,此结构体将作为地址信息传递给bind函数
struct sockaddr_in
{
sa_family_t sin_family; //地址族(Address Family)
uint16_t sin_port; //16位TCP/UDP端口号
struct in_addr sin_addr; //32位IP地址
char sin_zero[8]; //不使用
};
struct in_addr
{
in_addr_t s_addr; //32位IPv4地址
};
3.2.2结构体sockaddr_in的成员分析
- sin_family
地址族(Address Family) | 含义 |
---|---|
AF_INET | IPv4网络协议中使用的地址族 |
AF_INET6 | IPv6网络协议中使用的地址族 |
AF_LOCAL | 本地通信中采用的UNIX协议的地址族 |
- sin_port:该成员保存16位端口号,重点在于,他以网络字节序保存
- sin_addr:该成员保存32位IP地址,且也以网络字节序保存。
- sin_zero:无特殊含义
3.3网络字节序与地址变换
3.3.1字节序(Order)与网络字节序
- 大端序(Big Endian):高位字节存放到低位地址
- 小端序(Little Endian):高位字节存放到高位地址