소켓

소켓은 프로세스간 통신을 위한 창구역할을 합니다. 즉, 프로세스가 데이터를 보내거나 수신하기 위해 사용하는 연결부이죠.

소켓은 프로토콜과 IP주소, 포트넘버로 정의됩니다.

다시말해 소켓은 떨어져 있는 두 호스트를 연결해주는 도구로서, 서버소켓 클라이언트 소켓으로 구분될 수 있습니다.

Untitled

서버소켓

  1. socket()함수를 이용하여 소켓을 생성
  2. bind()함수로 ip와 port번호를 설정하게 됩니다.
  3. listen()함수로 클라이언트의 접근요청에 수신 대기열을 만들어 클라이언트를 몇개 대기시킬 건지 결정하게 됩니다.
  4. accept()함수를 사용하여 클라이언트와 연결을 기다리게 됩니다.

클라이언트 소켓

실제로 데이터 송수신이 일어나는 것은 클라이언트 소켓입니다.

  1. socket()함수로 가장 먼저 소켓을 연다
  2. connect()함수를 이용하여 통신할 서버의 설정된 ip와 port번호에 통신을 시도합니다.
  3. 통신 시도 시, 서버가 accept()함수를 이용하여 클라이언트의 소켓 디스크립터를 반환합니다.
  4. 이를 통해 클라이언트와 서버가 서로 read(), write()를 하며 통신합니다.