[Network] SSH(Secure SHell, 시큐어 셸)
·
Computer Science/네트워크
SSH이란?SSH은 원격 시스템에 접속하여 명령을 실행하거나 파일을 전송할 수 있게 해주는 응용 프로그램 또는 프로토콜을 의미한다. ❓SSH가 나오게 된 이유?❗️SSH 이전 Telnet, Rlogin과 같은 프로토콜은 평문으로 데이터를 전송하기 때문에, 스니핑(도청) 공격을 받을 위험이 높았다. SSH는 명령어나 파일 데이터를 주고 받는 과정에서 암호화를 지원하기 때문에, 중간에서 패킷을 가로채도 내용을 알아볼 수 없다. SSH의 주요 기능암호화된 데이터·파일 전송전송 과정에 있어서 데이터의 무결성(MAC 알고리즘을 통한 인증)과 기밀성을 보장한다.압축(Compression)데이터를 전송하기 전에 압축을 진행하고 수신 측에서 압축을 해제한다.압축을 하면 전송하는 데이터 양이 줄어들어 네트워크 비용..
[DB] 트랜잭션 고립 수준(Transaction Isolation Level)
·
Computer Science/데이터베이스
트랜잭션에 대한 내용은 해당 포스팅에서 확인 > 2025.08.22 - [CS/데이터베이스] - [DB] 트랜잭션(Transaction) 데이터베이스에서 트랜잭션은 고립성(Isolation)을 보장해야 한다.다시 말해, 여러 트랜잭션이 동시에 실행되더라도 각 트랜잭션의 결과는 독립적으로 유지되어야 한다.만약 이를 지키지 않고 여러 트랜잭션이 동시에 같은 데이터에 접근하게 되면, 다음과 같은 문제가 발생할 수 있다. 동시성 문제(이상 현상)Dirty Read다른 트랜잭션이 커밋하지 않은 트랜잭션의 중간 값을 읽어 오는 문제이다. 예를 들어, 트랜잭션 A와 트랜잭션 B를 동시에 실행했다고 가정하자.트랜잭션 A는 몇몇의 데이터를 update를 수행하였다.트랜잭션 B는 update한 데이터를 조회하였다.트랜잭..
[DB] 공통 테이블 식(CTE)
·
Computer Science/데이터베이스
SQL 문제를 풀다보면 공통 테이블 식(CTE)을 활용하는 경우가 자주 등장한다.그렇다면 CTE는 언제, 어떻게 사용해야 할까? CTE(Common Table Expression)공통 테이블 식은 쿼리의 결과를 임시적으로 저장해 일종의 테이블처럼 활용할 수 있는 기능이다.문법은 다음과 같다.WITH (공통 테이블 이름) AS ( CTE 쿼리)SELECT (열 목록)FROM (테이블 이름); WITH 키워드를 통해 공통 테이블 식을 정의하며, AS (...) 안에 CTE 쿼리를 작성해야 한다.이후에는 SELECT문을 통해 정의한 공통 테이블을 활용할 수 있다.이때 주의해야 할 점은 다음과 같다. ❗️ 하나의 SELECT문에는 하나의 WITH만 사용할 수 있다. 다시 말해, 한 SELECT 문에 두..
[DB] Union vs Union All
·
Computer Science/데이터베이스
UnionUnion은 2개 이상의 쿼리 결과 값을 한 번에 조회하기 위해 사용한다.이때, 중복된 결과는 한 번만 나온다.(※ Union Distinct은 Union과 동일하다.) 사용 방법은 간단하다.쿼리 사이를 Union을 써서 연결해주기만 하면된다. (SQL은 대소문자 구분X)select dept_id from employeesunionselect dept_id from departments; Union을 쓸 때는 다음 규칙을 따라야 한다.→ 쿼리의 컬럼 개수가 같아야 한다! 그 외의 권장 사항 및 규칙은 다음과 같다.컬럼의 각 순서마다 데이터 타입이 동일하도록 하는 것이 좋다.⇒ 타입이 달라도 결과는 함께 나오지만, 의도한 결과를 명확히 나타내기 위해서는 일치시키는 것이 좋다.쿼리에서 동일한 순서의..
컴파일 타임(Compile Time) / 런타임(Runtime)
·
Development/개발 공부
프로그래밍을 공부하거나 코드를 직접 짜다 보면 컴파일 타임(Compile Time)과 런타임(Runtime)이라는 용어를 자주 접하게 된다.둘의 개념을 명확히 알아보도록 하자! 컴파일 타임(Compile Time)컴파일 타임은 컴파일러가 소스 코드를 기계어로 변환하는 과정을 의미한다.※ 소스 코드: C, Java 등과 같은 고급 언어로 작성된 코드 확장자가 .c인 소스 코드는 → 컴파일 과정을 거쳐 기계어로 번역된 실행 파일(.exe)을 생성한다.확장자가 .java인 소스 코드는 → 컴파일 과정을 거쳐 JVM이 이해할 수 있는 바이트 코드 파일(.class)을 생성한다. 컴파일 타임에 발생하는 오류는 문법 오류, 타입 오류, 선언되지 않은 변수, 잘못된 메소드 호출 등이 존재한다.만약 오류가 발생하게 ..
[DB] 트랜잭션(Transaction)
·
Computer Science/데이터베이스
트랜잭션(Transaction)의 정의트랜잭션(Transaction)이란 "하나의 연속적인 업무 단위"를 의미한다. 예를 들어 A 고객이 B 고객에게 100만원을 이체하려고 한다고 가정하자.해당 상황을 단계별로 나누어본다면,1) A 고객의 잔액이 100만원 이상인지 확인해야 한다.2) 100만원 이상이면, A 고객의 잔액을 100만원 차감한다.3) B 고객의 잔액에 100만원을 더해준다. 이 모든 과정을 통틀어 트랜잭션이라고 한다.트랜잭션은 한꺼번에 수행되어야 하며, 중간에 일련의 과정이 삭제되거나 삽입될 수 없다. 트랜잭션 수행 방식은 다음과 같다.START TRANSACTION; -- 1. a 계좌의 잔액이 100만원 이상이면 -- 2. a 계좌의 잔액을 100만원 차감하여 update -..
[Network] HTTPS(HyperText Transfer Protocol Secure)
·
Computer Science/네트워크
오늘은 웹에서 데이터를 안전하게 주고받을 수 있는 보안 프로토콜인 HTTPS에 대해 알아보려 한다.HTTP에 대해서 알아보고 싶다면2025.06.08 - [CS/네트워크] - Http(Hypertext Transfer Protocol)을 참고하면 된다. HTTP(Hypertext Transfer Protocol)HTTP(Hypertext Transfer Protocol)란?웹에서 데이터를 주고받기 위한 서버-클라이언트의 프로토콜 HTTP의 특징1. 상태가 없는(Stateless) 프로토콜 서버는 클라이언트의 상태나 정보를 따로 저장하지 않고,jjangsudiary.tistory.com HTTPS란?HTTPS는 HTTP에 암호화 기술(SSL/TLS)을 추가한 보안 프로토콜이다. 클라이언트는 데이터를 전송하..
[DB] RDBMS vs NoSQL
·
Computer Science/데이터베이스
먼저, 각각의 개념을 살펴보자.RDBMS(Relational DataBase Management System)관계형 데이터베이스 관리 시스템데이터를 2차원 테이블 형태로 저장하고, 테이블 간의 관계로 데이터를 관리하는 시스템.SQL 언어를 사용해서 CRUD를 수행한다. RDBMS의 특징테이블 간 JOIN: RDBMS는 외래키(Foreign Key)를 통해 테이블 간의 관계를 설정하여 데이터를 연결할 수 있다. RDBMS의 장/단점■ 장점 - ACID(원자성, 일관성, 격리성, 지속성)의 트랜잭션 특성을 통해 데이터의 일관성을 보장한다. - Scale-Up: 하드웨어 성능을 높여 대용량 데이터 처리가 가능하다.■ 단점 - 스키마 유연성 부족: 스키마는 고정되어 있어서, 변경이 필요한 경우..
[Network] OSI 7계층, TCP/IP 4계층
·
Computer Science/네트워크
OSI 7계층과 TCP/IP 4계층 모델에 대해서 알아보자.두 차이는 네트워크를 세분화된 7계층(OSI)으로 보느냐, 아니면 실제 구현에 맞춘 4계층(TCP/IP)으로 보느냐에 따라 다르다. 위는 OSI 표준 모델과 TCP/IP 모델 각각의 계층에 해당하는 대표적인 프로토콜 및 기술이다.이제 각 모델의 계층에 대해 살펴보도록 하겠다. OSI 7계층응용 계층(Application Layer)- OSI의 최상위 계층으로, 사용자가 네트워크 서비스에 직접 접속하는 계층- HTTP, FTP 등의 프로토콜이 존재 표현 계층(Presentation Layer)- 데이터의 표현 형식을 변환하거나 해석하는 계층- 응용 계층에서 주고받는 데이터를 인코딩 및 디코딩한다.- 데이터를 암호화 및 복호화할 수 있다.- 전송 효..
[Network] HTTP(Hypertext Transfer Protocol)
·
Computer Science/네트워크
HTTP(Hypertext Transfer Protocol)란?웹에서 데이터를 주고받기 위한 서버-클라이언트의 프로토콜 HTTP의 특징1. 상태가 없는(Stateless) 프로토콜 서버는 클라이언트의 상태나 정보를 따로 저장하지 않고, 각 요청(Request)을 독립적으로 처리한다. 2. TCP/IP 프로토콜을 기반으로 동작 http://로 시작하는 주소를 요청하면, 80번 포트로 접속한다. 3. 보안에 취약 HTTP는 평문을 전송하기 때문에, 통신 내용을 탈취할 수 있어 보안에 취약하다. 이를 보안하기 위해 HTTPS가 등장했다.HTTPS: HTTP에 SSL(Secure Socket Layer)/TLS(Transport Layer Security) 암호화 프로토콜을 적용 HTTP ..