네트워크를 경유해서 통신을 하기 위한 도구이며. 소켓을 이용해서 컴퓨터 간 통신을 할 수 있다.
▶서버:클라이언트에서 요청이 오면 소켓을 생성해 통신이 가능하도록 한다. 연결을 담당 한다.
▶클라이언트:실제로 데이터의 송,수신이 일어는 곳이다.
▶구성요소:IP주소,포트번호,프로토콜 이다.
-TCP/IP
-각 소켓끼리 서로 연결
-연결된 상태에서 통신, 연결된 대상 외에 다른 대상과는 통신 불가능
-데이터를 잘 받았는지 중간중간 확인해서 안정적으로 데이터를 모두 보낼 수 있다.
-속도는 느리지만 안정성이 높다.(데이터가 손실되면 안되는 경우 무조건 TCP 소켓 사용)
-연결되지 않은 상태에서 내가 원하는 주소에 데이터를 보낼 수 있는 통신 방법이다.
-데이터를 보낸 후 확인작업이 없어서 데이터가 다 수신되었는지 확인 불가능하다.
-속도가 빠르지만 데이터가 소실될 수 있다.
-UDP헤더의 체크섬 필드를 통해 최소한의 오류만을 검출한다.
-동영상 스트리밍 서비스에 많이 사용된다.
TCP:서버소켓은 연결만을 담당한다.
서버와 클라이언트 1대1로 연결한다.
스트림전송->전송 데이터의 크기가 무제한이다.
패킷에 대한 응답으로 인한 시간지연,CPU소모 한다.
스트리밍 서비스에 불리(손실될 경우 재전송을 요청한다.)
UDP:1대1, 1대N, N대M 연결이 가능하다.
성능이 중요한 서비스에 사용한다.
1.서버와 클라이언트는 소켓을 각각 생성한다.
2.클라이언트가 서버에게 요청을 한다.
3.서버는 클라이언트의 요청을 받는다.
4.데이터를 주고 받는다.
5.데이터를 주고 받는 동작이 끝나면 연결된 소켓을 닫는다.
서버(Server)
소켓생성socket()->bind():주소부여-> listen():소켓 활성화->accept():클라이언트의 요청을 대기한다.->send()/recv():메시지 송,수신한다.->close():종류
//bind(),listen()은 서버에서만 일어난다.
클라이언트(Client)
소켓생성socket()->connect():서버로 연결하기 위한 함수->sned/recv():메시지 송,수신한다.->close():종류
1.비연결형 서비스에서는 전송 데이터마다 수신자의 소켓 주소를 함께 전송해야한다.
2.클라이언트 측에서도 bind()실행
3.연결절차(listen 과 accept)가 생략되었다.
socket()->bind()->snedto)/recvfrom()->close()
-소켓 생성
-socket() 성공적으로 실행되어 소켓이 만들어지면 해당 소켓의 디스크 립터 반환
-Af:주소 영역 지정
소켓 주소 체계

-Type:통신 타입 지정
SOCK_STREAM:연결형 서비스를 의미 (TCP 프로토콜에 대응)
SOCK_DGRAM:비연결형 서비스를 의미 (UDP 프로토콜에 대응)
SOCK_RAW:IP 프로토콜을 직접 사용 실제로 자주 사용되지 않음
-Protocol:호스트간 통신에 사용할 프로토콜 지정
BTHPROTO_RFCOMM: bluetoorh radio frequency통신을 위해 사 용,SOCK_STREAM type과 함께 사용한다.
IPPROTO_TCP: TCP를 사용, AF_INET 혹은 AF_INET6 af와 SOCK_STREAM type과 함께 사용한다.
IPPROTO_UDP: UDP를 사용, AF_INET 혹은 AF_INET6 af와 SOCK_DGRAM type과 함께 사용한다.
-생성된 소켓에 주소를 부여한다.
-s:클라이언트의 연결을 기다리는 소켓 객체 socket()으로 생성된 소켓 객체
-Name:소켓과 연결한 주소 정보(type,port 등)를 담고 있는 구조체
-Namelen:name의 크기
-소켓 활성화
-s:클라이언트의 연결을 기다리는 소켓 객체
-Backlog:보류 중인 연결 대기열의 최대 길이
-임의의 클라이언트의 연결 요구가 들어올 때까지 대기.
-연결 요청이 들어오면 둘 사이에 연결이 설정되고 서버에 새로운 소켓이 생성된다.
-이후 송수신은 새로 생성된 소켓을 이용한다.
-S:서버에 연결하기 위해 연결을 기다리는 소켓 객체, socket()으로 생성된 소켓 객체
-Addr:client 연결을 가져오면, 이 매개 변수에 client주소 정보를 저장
-Addrlen:addr의 크기
-클라이언트 프로세스에서 사용
-매개변수로 설정된 주소값이 가리키는 서버와 연결 설정
-S:서버에 연결하기 위해 만들어 둔 소켓 객체
-Name:연결할 서버 정보(host, port, type등)이 담긴 구조체
-Namelen:name 크기
-연결형 서비스를 제공하는 환경에서 데이터 전송
-S:소켓 객체
Client:서버에 연결된 소켓 Connect이후
Server:대기 상태인 소켓 Accept 성공 이후
-Buf:전송할 데이터
-Len:buf의 길이
-Flags:호출이 이루어지는 방식을 지정
-연결형 서비스를 제공하는 환경에서 데이터 수신
-S:소켓 객체
-Buf:들어오는 데이터를 받을 버퍼
-Len:buf의 길이
-Flags:함수의 동작에 영향을 미치는 플래그 집합.