1、套接字构成
套接字=IP地址+端口号
2、地址信息的表示
应用程序中使用的IP地址和端口号以结构体的形式给出了定义。 此结构体将作为地址信息传递给bindhans函数。
struct sockaddr_in
{
sa_family_t sin_family; //地址簇
unit_16_t sin_port; //端口号
struct in_addr sin_addr; //IP地址
char sin_zero[8]; //不使用
};
struct in_addr
{
In_addr_t s_addr; //32位IPv4地址
};
sin_family存放dizh地址簇信息,每种xiey协议簇适用的地址簇均不同,AF_INET表示IPv4协议中使用的地址簇,AF_INET6表示IPv6协议中使用的地址簇,AF_LOCAL表示本地通信中采用的地址簇。
sin_port保存16位端口号,重点在于它以网络字节序保存。
sin_addr保存32位IP地址信息,也以网络字节序保存。
sin_zero无特殊意义,必须填充为0。
3、网络地址序与地址变换
存储字节序:一个多字节的变量在内存中的存储方式,变量的小端数据存储在内存起始位置是小端字节序;变量的大端数据存储在内存起始位置是大端字节序;
传输字节序:协议传输多字节变量时的传输方式,先传输大端字节的方式成为大端字节序;先传输小端字节的方式成为小端字节;网络协议使用大端字节序传输数据,USB协议使用