socket

홍준섭·2023년 1월 16일
0

네트워크

목록 보기
8/20

socket 이란?

소켓이란 어플리케이션이 뭔가 데이터를 보내고 받을 때 양방향 통신을 하게 해주는 끝점이다. 따라서 어플리케이션은 소켓을 열고 소켓에게 정보를 주면 그 정보가 상대방 컴퓨터의 어플리케이션까지 가고 상대방 컴퓨터의 어플리케이션이 보낸 정보를 다시 소켓을 통해서 받는다.
소켓 연결은 일반적으로 LAN(Local Area Network) 또는 인터넷을 통해 서로 다른 두 컴퓨터 간에 실행되지만 단일 컴퓨터에서 프로세스 간 통신을 위해 사용될 수도 있다.

Berkeley Socket API

  • 프로세스 간 통신(IPC)에 사용되는 인터넷 소켓 및 유닉스 도메인 소켓용 API(Application Programming Interface)입니다.
  • 일반적으로 링크 가능한 모듈의 라이브러리로 구현되며 4.2에서 시작되었다BSD 유닉스 운영 체제는 1983년에 출시되었다.
  • 버클리 소켓은 사실상의 표준에서 POSIX 사양의 구성 요소로 거의 수정되지 않고 발전하였다

Socket API function

socket()

  • socket()은 정수 번호로 식별되는 특정 유형의 새 소켓을 생성하고 시스템 리소스를 할당한다. 오류가 발생하면 -1 리턴
  • 세가지 인수를 사용한다.
    => domain: 생성된 소켓의 프로토콜 패밀리를 지정합니다.
    => type: 소켓의 종류를 지정한다 ex) tcp를 사용하는 경우 SOCK_STREAM, udp를 사용하는 경우 SOCK_DGRAM
    => protocol: 사용할 실제 전송 프로토콜을 지정하는 프로토콜이다. 가장 일반적인 것은 IPPROTO_TCP, IPPROTO_SCTP, IPPROTO_UDP, IPPROTO_DCCP이다.

bind()

  • bind()는 일반적으로 서버 측에서 사용되며 소켓을 지정된 로컬 IP 주소 및 포트 번호와 같은 소켓 주소 구조와 연결합니다.

listen()

  • listen()은 서버 측에서 사용되며 바인딩된 TCP 소켓을 수신 상태로 만듭니다.

connect()

  • connect()는 클라이언트 측에서 사용되며 소켓에 사용 가능한 로컬 포트 번호를 할당합니다. TCP 소켓의 경우 새 TCP 연결을 설정하려고 시도합니다.

accept()

  • accept()는 서버 측에서 사용됩니다. 원격 클라이언트로부터 새 TCP 연결을 만들기 위한 수신된 수신 시도를 수락하고 이 연결의 소켓 주소 쌍과 연결된 새 소켓을 만듭니다.

send(), recv(), sendto()와 recvfrom()

  • send(), recv(), sendto()와 recvfrom()은 데이터 송수신에 사용됩니다. 표준 함수 write() 및 read()도 사용할 수 있습니다.

close()

  • close()는 소켓에 할당된 리소스를 해제합니다. TCP의 경우 연결이 종료됩니다.
profile
개발 공부중입니다

0개의 댓글