int socket(int domain, int type, int protocol);
도메인 매개변수는 통신 도메인을 지정한다; 이것은 통신에 사용되어 질 프로토콜 패밀리를 선택한다. 이러한 프로토콜 패밀리들은 <sys/socket.h> 에서 정의된다. 현재 쓰여지는 포맷은 다음을 포함한다:
| Name:Purpose:Man page | ||
|
PF_UNIX,PF_LOCAL
|
Local communication
|
unix(7)
|
|
PF_INET
| IPv4 Internet protocols:T{ | |
| T} | ||
|
PF_INET6
| IPv6 Internet protocols: | |
|
PF_IPX
| IPX - Novell protocols: | |
|
PF_NETLINK
|
Kernel user interface device
|
netlink(7)
|
|
PF_X25
| ITU-T X.25 / ISO-8208 protocol:T{ | |
| T} | ||
|
PF_AX25
|
Amateur radio AX.25 protocol
| |
|
PF_ATMPVC
| Access to raw ATM PVCs: | |
|
PF_APPLETALK
| Appletalk:T{ | |
| T} | ||
|
PF_PACKET
|
Low level packet interface
|
packet(7)
|
소켓은 지시된 통신 semantics를 지정하는 type 을 갖는다. 현재 정의된 타입은 다음과 같다:
몇몇 소켓타입은 모든 프로토콜군에 의해 구현되어지지 않을 것이다; 예를들면, SOCK_SEQPACKET 는 AF_INET 때문에 구현되지 않는다.
프로토콜 은 소켓을 사용하기 위해 특정 프로토콜을 지정한다. 싱글 프로토콜은 주어진 프로토콜군안에 특정 소켓타입을 지원하도록 존재한다. 그러나, 특정 프로토콜이 방법으로 지정되어야만하는 곳엔 많은 프로토콜이 존재가능하다.
SOCK_STREAM 타입의 소켓은 full-duplex byte streams이다. 그것들은 레코드 경계를 보호하진 않는다. 스트림 소켓은 모든 데이타가 그것으로 송수신 되기전에 접속 상태이어야한다. 다른 소켓과의 접속은 connect(2) 호출로 생성한다. 한번 접속에 데이타는 read(2) 와 write(2) 호출 혹은 send(2) 와 recv(2) 호출 의 몇몇 변수를 사용해 전송한다. 세션이 완벽할때 close(2) 는 실행된다. Out-of-band 에이타는 또한 send(2) 의 설명대로 전송되고 recv(2) 의 설명대로 수신된다.
SOCK_DGRAM 와 SOCK_RAW 소켓은 send(2) 호출에 지정된 correspondents로 데이타그램의 송신을 허락한다. 데이타그램은 대개 다음 데이타그램을 반환하는 recvfrom(2) 로 수신된다.
SOCK_PACKET 은 장치 드라이버로부터 직접 raw패킷을 받는 쓰이지 않는 소켓타입이다. 대신 packet(7) 을 사용한다.
소켓의 작용은 소켓레벨 옵션에 의해 제어된다. 이러한 옵션들은 <sys/socket.h> 에 정의 되어있다. Setsockopt(2) 와 getsockopt(2) 는 옵션을 설정하고 얻는데 사용된다.
lqAn Introductory 4.3 BSD Interprocess Communication Tutorialrq is reprinted in UNIX Programmer's Supplementary Documents Volume 1.
lqBSD Interprocess Communication Tutorialrq is reprinted in UNIX Programmer's Supplementary Documents Volume 1.