socket套接字
Berkeley UNIX 操作系统定义了一种API它又称为套接字接口(socket interface);
socket作用:
socket常见API介绍
/*创建套接字*/
int socket(int domain, int type, int protocol);
/*绑定通信结构体*/
int bind(int sockfd, const, struct sockaddr *addr, socklen_t addrlen);
/*监听套接字*/
int listen(int sockfd, int backlog);
/*处理客户端发起的连接,生成新的套接字*/
int accept(int sockfd, struct sockaddr *addr, socklen_t addrlrn);
/*向服务器发起连接请求*/
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlrn);
三元组(IP地址、端口、协议):
IP地址:标识计算机;
端口号:标识计算机当中的进程;
协议:指定数据传输的方式;(主要指的是TCP和UDP)
套接字的类型:
1、流式套接字 (SOCK_STREAM) 提供可靠的、面向连接的通信流;它使用TCP,从而保证数据传输的可靠性和顺序性
2、数据报套接字 (SOCK_DGRAM) 定义了一种不可靠、面向无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP
3、原始套接字(SOCK_RAW) 允许直接访问底层协议,如IP或ICMP,它功能强大但使用较为不便,主要用于协议开发。
套接字属于一种特殊的文件描述符;
Unix域套接字用于本地进程间通信;
TCP通信的实现过程
主要过程:
1、建立连接;(socket, bind, listen, accept)
2、数据传输;(read/write recv/send)
3、连接释放;(close shutdown)