전송 계층 프로토콜인 TCP와 UDP를 사용하려면 소켓 시스템 콜이라는 라이브러리 함수를 이용한다. 소켓 주소는 소켓 시스템 콜을 통해 사용되며, 여기에는 다양한 함수들이 지원된다.
socket(): 소켓을 생성하며, 생성된 소켓의 디스크립터를 반환하는 기능을 수행한다. 사용할 프로토콜의 도메인을 의미하는 domain, 서비스 유형에 대한 값인 type, 적절한 프로토콜을 선택하도록 설정하는 protocol 값을 매개변수로 갖는다. protocol은 보통 0으로 지정한다. domain영역에 AF_UINX나 AF_INET의 값들이 오게 되고 type 영역에는 SOCK_STREAM, SOCK_DGRAM 등이 나오게 된다.
bind(): 생성된 소켓에 주소를 부여하는 기능을 수행한다. socket()함수가 리턴한 디스크립터를 받는 값과 bind할 소켓 주소를 표기하는 name 값, name에 보관된 주소 공간의 크기를 나타내는 namelen 값을 매개변수로 갖는다.
listen(): 소켓에서 대기할 수 있는 연결 요청의 개수를 지정하는 역할을 수행한다. 첫번째 매개변수로 표시한 소켓을 활성화하며, 두번째 매개변수는 backlog라는 연결 요청 개수를 나타내는데 일반적인 환경에서 5로 설정한다.
accept(): 서버 프로그램에서 클라이언트의 연결 요청을 대기하는 역할을 수행한다. 연결형 서비스에서만 사용되며,첫번째 매개변수로서 지정된 소켓과 연결을 요청한 클라이언트의 소켓 주소를 반환하는 addr 값을 매개변수로 가진다.
connect(): 클라이언트 프로그램에서 서버에게 연결 요청을 수행하는 함수이다. socket()함수가 연결형 서비스에서만 사용되며, 첫번째 매개변수로서 생성된 소켓을, 두번째 매개변수로서 연결하고자 하는 서버의 소켓 주소를 가진다. 주소를 취급할때 십진수와 2진수 사이의 변환이 필요하기 때문에 다음 함수들이 사용된다. inet_addr()함수는 10진수 형식을 2진수 형식으로 변환하고 inet_ntoa()함수는 2진수 형식을 10진수 형식으로 변환한다.
send()/recv(): 연결형 서비스(TCP)에서 데이터를 송/수신하는 역할을 한다. 비슷한 함수로써sendto(),recvfrom()은 비연결형 서비스(UDP)에서 데이터를 송/수신한다.
프로토콜마다 주소 체계를 지원하는 문법이 다르므로, 하나의 함수에서 다양한 주소 체계를 지원하기 어렵다. 따라서 모든 주소 체계를 수용할 수 있는 공통 주소 체계가 필요한데 이것을 통합 주소 체계라고 하며, 이는 sockaddr 구조체로 구현된다.