# include <sys/socket.h>
int socket(int domain, int type, int protocol);
// 성공 시 fd, 실패 시 -1 반환
소켓이 통신에 사용하는 프로토콜은 다양하다. 다양한 프로토콜들을 분류하는 정보를 프로토콜 체계라 한다. socket 함수의 첫 번째 인자로 전달한다.
이름 | 프로토콜 체계(Protocol Family) |
---|---|
PF_INET | IPv4 인터넷 프로토콜 체계 |
PF_INET6 | IPv6 인터넷 프로토콜 체계 |
PF_LOCAL | 로컬 통신을 위한 UNIX 프로토콜 체계 |
PF_PACKET | Low Level 소켓을 위한 프로토콜 체계 |
PF_IPX | IPX 노벨 프로토콜 체계 |
socket 함수의 세 번째 인자가 실제로 사용될 최종 프로토콜이다. 이 값은 첫 번째 인자인 프로토콜 체계의 범위 내에서 결정된다.
소켓의 데이터 전송 방식. socket 함수의 두 번째 인자. 한 프로토콜 체계엔 데이터 전송 방식이 여럿일 수 있다.
socket 함수의 세 번째 인자. 하나의 프로토콜 체계(첫 번째 인자) 안에 데이터 전송방식(두 번째 인자)이 동일한 프로토콜이 여럿일 수 있다. 그렇기 때문에 세 번째 인자가 필요할 때가 생긴다.
"IPv4 인터넷 프로토콜 체계에서 동작하는 연결지향형 데이터 전송 소켓"는 아래와 같다.
int tcp_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);