3、深入浅出IP地址
① 问题:网络编程接口中一些参数的意义是什么?
sock = socket( PF_INET, SOCK_STREAM,0 );
② socket参数详解
- int socket( int domain, int type, int protocol );
- socket()中的domain参数(协议族)
- PF_INET → IPv4互联网协议族
- PF_INET6 → IPv6互联网协议族
- PF_LOCAL → 本地通信的协议族(进程间通信)
- PF_PACKET → 底层数据收发协议族
- PF_IPX → Novell专用协议(互联网分组交换协议)
- 注意:不同协议中的地址表现形式可能不同,网络编程时地址类型必须和协议类型匹配
- socket()中的type和protocol参数
- type 用于指定协议类型
- SOCK_STREAM:流式数据(TCP)
- SOCK_UGRAM:报文式数据(UDP)
- protocol 用于指定协议族中符合类型的具体协议
- domain和type几乎可以唯一确定一种协议,因此,这个参数通常为0
- 即:0 代表domain和type指定后的默认协议
- type 用于指定协议类型
③ 关于端口号和IP地址
- 端口号是一个2字节数据(无符号整数)
- 0-1023作为特定端口被预定义(分配给特定应用程序)
- 一些特定的系统1024-2048也被占用,体现在bind绑定失败,所以在使用时候,尽量使用大一点的端口号
- IP地址是一个4字节地址族(可分为5类地址)(按照网络标识/主机标识的比例)
④ 深入解析IP地址
- IP地址分为