CS 사전(상시 업데이트)
공부하며 몰랐던 모든 단어, 개념을 정리하는 페이지입니다.
이러한 단어들은 다른 게시글에서 녹색으로 표시해뒀습니다.
PuTTY란?
원격 컴퓨터(AWS 서버)에 접속하여 터미널 세션을 관리하기 위한 무료 소프트웨어입니다.
주로 SSH(Secure Shell) 및 Telnet 프로토콜을 사용하여 원격 서버에 연결할 때 사용됩니다.
Secure Shell이란?
네트워크 프로토콜 중 하나로, 암호화된 통신을 통해 컴퓨터와 네트워크 장치 간의 안전한 원격 접속을 제공합니다. SSH는 원격 로그인, 원격 명령 실행, 원격 컴퓨터 간의 파일 전송 등에 사용됩니다.
기존의 Telnet과 같은 프로토콜은 텍스트 기반의 비암호화된 통신을 사용하기 때문에 보안에 취약합니다. 이에 반해 SSH는 통신을 암호화하여 데이터가 도청되거나 조작되는 것을 방지합니다. 또한 SSH는 인증을 통해 안전한 접속을 보장하며, 데이터 무결성을 제공하여 데이터가 손상되지 않도록 보호합니다. SSH는 네트워크 보안을 강화하고 원격 접속을 안전하게 관리하기 위한 핵심 기술로 사용됩니다.
Telnet이란?
Telnet은 네트워크 프로토콜 중 하나로, 원격으로 다른 컴퓨터나 장치에 접속하여 텍스트 기반의 통신을 수행하는 데 사용됩니다. 일반적으로 Telnet을 사용하면 클라이언트 컴퓨터에서 서버나 장치로 로그인하여 명령을 입력하고 출력을 받을 수 있습니다.
Telnet은 초기 인터넷의 핵심 프로토콜 중 하나였으며, 원격으로 다른 컴퓨터에 접속하여 관리하거나 파일 전송 등을 수행하는 데 사용되었습니다. 그러나 Telnet은 텍스트 기반이며 보안 기능이 제한적이므로, 패킷을 도청하거나 조작할 수 있는 보안 상의 취약점이 있습니다.
현재는 Telnet 대신에 Secure Shell (SSH)과 같은 보안이 강화된 프로토콜이 더 널리 사용되고 있습니다. SSH는 Telnet의 보안 취약점을 보완하여 원격 접속 시 데이터를 암호화하고 보호합니다.
터미널에서 apt란?
apt는 Debian 계열 리눅스 시스템에서 사용되는 고급 패키지 도구입니다. "Advanced Packaging Tool"의 약자로, 시스템 패키지의 설치, 업데이트, 제거를 담당합니다. Ubuntu, Debian 등의 운영 체제에서 사용됩니다.
apt 명령어를 사용하면 패키지 저장소에서 패키지를 검색하고 설치할 수 있습니다. 또한 패키지의 의존성을 자동으로 해결하여 필요한 라이브러리나 도구를 함께 설치할 수 있습니다.
sudo란?
sudo는 Unix 및 Unix 계열 시스템에서 사용되는 명령어로, "Superuser Do"의 약어입니다. 이는 일반 사용자가 슈퍼 유저(일반적으로 시스템 관리자 또는 root 권한을 가진 사용자)의 권한으로 명령을 실행할 수 있도록 하는 명령어입니다.
pip란?
pip는 Python 패키지 관리자입니다. Python 패키지는 재사용 가능한 코드 모듈을 의미하며, 다른 프로그램에서 사용할 수 있는 함수, 클래스, 라이브러리 등을 포함합니다. pip를 사용하면 Python 패키지를 쉽게 설치, 관리 및 업그레이드할 수 있습니다.
virtualenv란?
virtualenv는 Python 프로젝트를 위한 독립적인 가상 환경을 생성하는 도구입니다. 각각의 가상 환경은 프로젝트마다 독립된 Python 환경을 제공하여 프로젝트 간에 패키지 충돌이나 의존성 문제를 피할 수 있게 해줍니다.
일반적으로 시스템에 설치된 전역 Python 환경에는 다양한 패키지가 설치되어 있고, 이 패키지들은 모든 프로젝트에 영향을 줄 수 있습니다. 하지만 virtualenv를 사용하면 각 프로젝트가 독립적인 환경을 가지며, 해당 프로젝트에 필요한 패키지만 설치할 수 있습니다.
쉘 세션이란?
쉘 세션은 사용자가 컴퓨터 시스템과 상호 작용하는 동안 실행되는 프로그램의 인스턴스를 말합니다.
일반적으로 사용자는 터미널 또는 커맨드 라인 인터페이스를 통해 쉘 세션에 접속하고 명령을 입력합니다.
여기서 몇 가지 중요한 개념을 설명하겠습니다:
- 쉘(Shell): 쉘은 사용자와 운영 체제 사이의 인터페이스로, 명령을 입력하여 운영 체제의 기능을 실행할 수 있도록 합니다. 일반적으로 쉘은 명령어 해석기와 같은 역할을 합니다.
- 쉘 세션(Shell Session): 사용자가 터미널을 열거나 SSH를 통해 시스템에 로그인할 때 시작되는 쉘의 인스턴스를 의미합니다. 즉, 사용자가 명령을 입력하고 결과를 확인하는 동안 실행되는 쉘의 한 번의 작업 세션을 말합니다.
- 로그인 쉘 세션(Login Shell Session): 사용자가 로그인하면 시스템에서 시작되는 쉘 세션을 의미합니다. 보통 로그인 쉘 세션에서는 사용자의 프로파일 설정 파일이 실행되어 환경 변수를 초기화하고 추가적인 설정을 수행합니다.
- 비로그인 쉘 세션(Non-login Shell Session): 사용자가 이미 로그인한 후에 새로운 터미널 창을 열거나 쉘 세션을 시작하는 경우에 발생하는 쉘 세션을 말합니다. 비로그인 쉘 세션에서는 사용자의 프로파일 설정 파일이 실행되지 않을 수 있습니다.
쉘 세션은 사용자가 컴퓨터와 상호 작용하는 주요 방법 중 하나이며, 명령어를 실행하고 결과를 확인하는 동안에만 존재합니다. 사용자가 로그아웃하면 현재 실행 중인 쉘 세션도 종료됩니다.
세션이란?
"세션(Session)"은 컴퓨터 시스템에서 사용자 또는 프로그램이 특정 시간 동안 활동하는 동안 발생하는 상호 작용의 단위를 말합니다. 세션은 일반적으로 시작과 종료로 구성되며, 사용자가 시스템에 로그인하여 작업을 시작하고 로그아웃하여 작업을 종료하는 것을 포함합니다.
세션은 다양한 컴퓨팅 환경에서 사용됩니다. 여러 사용자가 동시에 작업하는 다중 사용자 시스템에서는 각 사용자가 자신의 세션을 갖습니다. 또한 단일 사용자 시스템에서도 사용자가 작업하는 동안 여러 세션을 생성할 수 있습니다. 예를 들어, 사용자가 여러 터미널 창을 열어 각각 다른 작업을 수행할 때마다 각 터미널 창은 별도의 세션으로 간주됩니다.
세션은 주로 사용자 인증 및 권한 관리를 포함하는 보안 요소와 관련이 있습니다. 사용자가 로그인하면 시스템은 해당 사용자의 세션을 생성하고, 로그아웃하면 세션이 종료됩니다. 이러한 방식으로 세션은 사용자의 활동을 추적하고 보안을 강화하는 데 도움이 됩니다.
세션은 네트워크 통신에서도 중요한 개념입니다. 예를 들어, 웹 브라우저가 웹 서버에 연결할 때 브라우저와 서버 간의 통신은 세션으로 관리됩니다. 이러한 세션은 사용자의 웹 브라우징 활동을 추적하고 필요한 경우 상태를 유지하는 데 사용됩니다.
migrate 란?
Django에서 migrate 명령은 데이터베이스 스키마를 관리하는 데 사용됩니다. 이 명령을 실행하면 Django는 모델 정의를 데이터베이스 테이블로 변환하거나 변경 사항을 적용합니다. migrate를 실행함으로써 Django는 모델의 변경 사항을 추적하고 데이터베이스 스키마를 최신 상태로 유지합니다.
요약하면, migrate를 실행하여 Django 애플리케이션의 데이터베이스 스키마를 최신 상태로 유지함으로써 데이터베이스와의 일관성을 유지하고 안정성을 보장할 수 있습니다.
0.0.0.0:8000란?
0.0.0.0:8000은 서버가 사용할 IP 주소와 포트 번호를 나타냅니다.
0.0.0.0은 "모든 IP주소"를 의미합니다. 즉, 이 주소를 사용하면 해당 서버는 모든 네트워크 인터페이스를 통해 접근할 수 있습니다.
프레임워크란?
프레임워크는 개발자들이 소프트웨어 애플리케이션을 빠르게 개발하고 구축할 수 있도록 도와주는 도구나 구조를 말합니다. 이는 개발자가 특정한 작업을 반복해서 구현할 필요 없이, 이미 만들어진 코드나 라이브러리를 사용하여 보다 효율적으로 개발할 수 있습니다.
프레임워크와 라이브러리의 차이점
프레임워크 사용 시 해당 프레임워크의 세팅 위에서 작업을 시작함.
ex) 현실로 비유하면 세탁기
"세탁기가 제시하는 틀 안"에서 물의 양, 세탁 시간, 세탁 세기 등 반드시 결정해야 하는 것들을 설정하고 빨래 기능을 사용할 수 있다는 점에서 프레임워크와 유사함.
라이브러리 사용 시 라이브러리에서 필요한 부분만 선택적으로 가져다가 사용함.
ex) 현실로 비유하면 필통
"사용자가 필요할 때" 필통 속에 필기구를 꺼내서 사용하고, 사용자가 할 수 있는 행동이 필통에 종속되지 않는다는 점에서 라이브러리와 유사함.
웹 서버 (소프트웨어)
ex) nginx
소프트웨어는 유용한 기능을 제공하죠?
Nginx는 웹 서버로 사용되는 소프트웨어입니다. 웹 서버로 시작했지만 현재는 리버스 프록시, 로드 밸런서, HTTP캐시, 그리고 웹 서버로서의 기능을 제공하는 다목적 솔루션으로 사용됩니다.
소프트웨어 = 애플리케이션 = 프로그램
넓은 의미에서 조금 다르지만
>>> 서버 구축/운영을 도와주는 프로그램이라고 이해함