반응형
Shell이란, 사용자의 명령어를 운영체제가 알아들을 수 있도록 해석하고 커널에게 전달합니다. 그리고 커널은 해석된 명령어를 받아 하드웨어에 직접적으로 명령을 내립니다. shell의 예시로 우리가 cmd에서 명령어를 칠 때를 봅시다. shj@DESKTOP-DS69STB:~$ ls -l 저는 이와 같은 ls -l 이라는 명령어를 쳤습니다. 하지만 해석하지못하면, 하드웨어는 "이게 뭔 말이야"라고 하며 이해하기 힘듭니다. 그래서 Shell이 필요하고 Shell이 "ls -l" 은 "현재 디렉토리에 있는 내용들을 -l 옵션으로 긴 목록 형식으로 출력해주세요"라고 해석해줍니다. 그러면 해석된 명령을 커널에게 전달하고 커널은 하드웨어에게 해석된 명령을 실행하라합니다. Shell의 주요 기능들 사용자와 커널 사이에..
개발을 하다보면 Linux 라는 단어에 대해 수도 없이 들어봤을겁니다. Linux가 운영체제인것 까진 그래도 알겠지만 정확히 뭐고 왜 사용하는지에 대해선 알지 못하기 때문에 이번 포스팅을 통해 Linux가 무엇인지, 왜 사용하는지?에 대해 간단히 알아보고자 합니다. UNIX 리눅스를 알기 전 먼저 리눅스의 조상인 유닉스에 대해 알아야 합니다. 유닉스에 대해 간단하게 알아보자면, 1965년 MIT, AT&T 벨 연구소, General Electric 소속 개발자들이 모여 멀티태스킹(다중작업)을 지원하는 멀틱스(Multics)라는 운영체제를 개발하기 시작했습니다. 하지만 이 당시 멀티태스킹 작업은 너무나도 어려운 작업이였기 때문에 실패했었습니다. 그 이후 프로젝트를 만들던 직원들이 따로 나와 멀틱스 프로젝트..
개발을 하다보면 자연스럽게 사용하게 되는 git과 Github 사실 저는 이 두 개가 같은 건줄알고 Github 줄인 말이 git인줄 알았습니다 ㅋㅋ; 하지만 CS 면접 나오는 대표적인 질문들 중 하나이기에 이번 포스팅으로 차이점을 알아보고자 합니다. 📌 Git ( 깃 ) 이란 ? 로컬 파일의 변경사항을 기록하고 해당 파일에 대한 여러 사용자 간의 작업을 조율하기 위한 분산형 버전 관리 시스템(VCS : Version Control System) 입니다. Git 이 왜 필요한지에 대해 살펴보자면, 우리가 과제를 제출할 때를 봅시다. 처음에 과제를 완성했다하고 이름을 저장했을 때는 "김김씨 과제.pdf"라고 저장할 것입니다. 근데, 다시 확인을 해보니 수정이 필요해 이전 파일이 필요할지도 모르니 복사하여 ..
proxy의 사전적의미를 보면 "대리" 라는 뜻을 가집니다. Client와 Server가 직접 통신할 때, 보안상의 문제를 방지하기 위해서 직접 통신하지 않고 중계자를 거쳐 통신합니다. 이때 중계자는 바로 프록시 ( proxy ) 입니다. Client와 Server 사이에 프록시 서버가 중계를 할 떄, Client는 프록시 서버를 "Server"라고 인식하고, Server는 프록시 서버를 "Client"라고 인식합니다. 프록시 서버는 서버의 위치에 따라 "Forward 프록시"와 "Reverse 프록시" 2가지로 나뉩니다. Forward 프록시 클라이언트 편 ( 사용자들을 대신해 인터넷 연결 ) 클라이언트 대신 프록시 서버가 목적 서버에 통신해주는 구성을 "포워드 프록시"라고 합니다. Forward 프록..
동기(Synchronous) 방식 동기란, 말 그대로 동시에 일어난다는 뜻입니다. 요청을 하면 동시에 응답을 한다는 약속으로, 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 응답(결과)가 주어져야 합니다. 동기의 예 중에는 여러가지가 있지만, 콜센터의 직원을 예로 설명해 보겠습니다. 콜센터 직원 한명에게 3명의 고객이 전화를 건다고 생각해봅시다. 한명의 직원은 각기 다른 3명의 고객들의 이야기를 듣고 대답해줄 순 없을 겁니다. 그렇기 때문에 전화가 온 순서대로 고객의 전화를 받고 그 뒤 고객들은 "상담원이 통화중이니 잠시만 기다려주세요"라는 안내 음성을 들은적이 있을겁니다. 콜센터 직원은 제일 먼저 통화를 건 고객 1과의 전화를 먼저 한 후 끝나면 대기가 걸려있던 고객 2의 대기를 풀고 전화를..
"Secure Shell Protocol" 즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다. SSH는 개발을 하다보면 한번씩은 꼭 접해봤을 겁니다.대표적인 예로는 Github을 사용할 때로, Github에 코드를 푸쉬하거나 Github 레포지토리를 clone할 때 사용하기도 합니다. SSH를 사용하면 네트워크 상의 다른 컴퓨터에 원격 로그인하여 ( 예를 들어, AWS EC2 원격접속 ), 원격 시스템에서 명령을 실행하고, 다른 시스템으로 파일을 복사 ( SCP 명령어 ) 할 수 있습니다.데이터 전송원격 접속원격 제어 SSH를 사용하는 이유는, FTP나 Telnet과 같은 다른..