1本地套接字和网络套接字比较
- 本地
- IPC ,pipe,fifommap,信号,本地套接字(domain)–C/S模型
- 对比网络套接字:
- int socket(int domain, int type, int protocol)
- 参数domain:从AF_INET改变为AF_UNIX/AF_LOCAL
- 其他参数和网络套接字基本一样。
- int bind(int socket, const struct sockaddr* address, socklen_t address_len)
- 参数2:sockaddr_in -->sockaddr_un
- ser_addr.sun_family=AF_UNIX;
- strcpy(ser_addr.sun_path,“srv.socket”)
- len=offset(struct sockaddr_un ,sun_pth)+strlen(“srv.socket”);
- bind()函数回调用成功,会创建一个socket,因此保证bind成功,通常我们在bind之前可以使用unlink(“ser.socket”);
- 参数2:sockaddr_in -->sockaddr_un
- int socket(int domain, int type, int protocol)
2协议域domain
No. | 参数 | 含义 |
---|---|---|
1 | AF_INET | IPv4 |
2 | AF_INET6 | IPv6 |
3 | AF_LOCAL | Unix域-用于本地进程间通信 |
3数据传输类型type
类型 | Type | 作用 | 说明 |
---|---|---|---|
流式套接字 | SOCK_STREAM | 提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。 | TCP协议支持该套接字。 |
数据报套接字 | SOCK_DGRAM | 提供面向无连接的服务,数据收发无序,不能保证数据的准确到达。 | UDP协议支持该套接字。 |
原始套接字 | SOCK_RAW | 允许对低于传输层的协议或物理网络直接访问 | 常用于检测新的协议 |
4 IP(Internet中主机的标识)
4.1分类
32位(IPV4)/128位(IPV6)
4.2 表示形式(常用点分形式)
No. | 协议 | 形式 | e.g. |
---|---|---|---|
1 | IPv4 | 点分十进制 | 192.168.0.1 |
2 | IPv6 | 点分十进制 | ::192.168.0.1 |
3 | IPv6 | 点分十六进制 | ::C0A8:0001 |
4.3 特例
IP地址 | 地址类型 | 作用 |
---|---|---|
0.0.0.0 | 通配地址 | 主机上所有IP,多网卡共用 |
127.0.0.1 | 回环地址 | 本地虚拟接口,无网卡可用,检查本地网络协议 |
255.255.255.255 | 广播地址 | 受限广播地址,当前路由器均不转发此类广播 |
XXX.XXX.XXX.255 | 广播地址 | |
XXX.XXX.255.255 | 广播地址 | 全子网广播 |
224.0.0.0~239.255.255.255 | 组播地址 | 详细参见组播地址分类 |