2024/08 58

TCP Connection 과 Socket

커넥션과 소켓은 TCP/IP 스택의 다양한 계층과 깊은 연관이 있다.TCP/IP Stack 계층 구조네트워크 통신을 이해하기 위해서는 TCP/IP 스택의 계층 구조를 알아야 한다. 다음은 TCP/IP 스택의 네 가지 주요 계층이다Application Layer: 애플리케이션 레벨에서 구현 및 관리됩니다. 네트워크 기능을 사용하는 데 목적이 있다.Transport Layer: 데이터 전송을 담당하며, 신뢰성 있는 전송을 보장하는 프로토콜(TCP 등)을 포함한다.Internet Layer: 패킷의 전달과 라우팅을 담당한다.Link Layer: 물리적 네트워크 매체와의 인터페이스를 제공한다.컴퓨터 관점에서의 계층 구조Internet Layer, Link Layer, Transport Layer를 하드웨어/펌웨..

네트워크 2024.08.06

네트워크의 기본 기능과 계층 모델

네트워크의 주요 기능애플리케이션 목적에 맞는 통신 방법 제공: 애플리케이션이 서로 다른 목적에 맞게 데이터를 주고받을 수 있는 방법을 제공한다.신뢰할 수 있는 데이터 전송 방법 제공: 데이터가 전송 중에 손실되거나 오류가 생기지 않도록 한다.네트워크 간의 최적의 통신 경로 설정: 데이터가 출발지에서 목적지까지 최적의 경로를 찾아 효율적으로 전송되도록 한다.목적지로 데이터 전송: 데이터가 올바른 호스트에 도착하도록 보장한다.노드 사이의 데이터 전송: 네트워크에 연결된 장치들(노드) 간의 데이터 전송을 관리한다. 애플리케이션에서 애플리케이션으로 데이터를 전송하기 위해서는 위와 같은 여러 기능들이 필요하다. 하지만, 이 모든 기능을 하나의 프로토콜로 구현하기는 어렵다. 따라서, 네트워크는 각 기능을 계층으로 ..

네트워크 2024.08.06

인덱스

인덱스는 데이터베이스 테이블의 특정 칼럼에 대해 생성되는 구조로, 데이터 검색을 더 빠르게 수행할 수 있도록 도와주는 도구이다.검색 속도 향상: 전체 테이블을 스캔하는 것보다 훨씬 빠르게 데이터를 찾을 수 있다.정렬 및 필터링 성능 개선: 데이터 정렬 및 필터링 작업의 성능을 향상시킨다.Unique Constraint 지원: 유니크 인덱스는 테이블 내에서 중복된 데이터를 방지할 수 있다.디스크 공간 소모: 인덱스를 생성하면 추가적인 디스크 공간이 필요하다.데이터 수정 시 성능 저하: 삽입, 삭제, 업데이트 작업이 발생할 때 인덱스도 함께 업데이트되므로 성능이 저하된다. Full Table Scan이 더 좋은 경우테이블에 데이터가 몇십 또는 몇 백 건밖에 없는 경우, 전체 테이블을 스캔하는 것이 인덱스를 ..

Database 2024.08.06

해시 함수와 알고리즘

해시 함수란 임의의 크기를 가지는 type의 데이터를 고정된 크기를 가지는 type의 데이터로 변환하는 함수이다.데이터의 무결성을 검사하고, 데이터에 대한 고유한 지문을 생성하기 위해 사용된다.각 해시 알고리즘은 서로 다른 보안 요구 사항과 성능 특성을 가지고 있으므로, 사용 목적에 맞는 적절한 알고리즘을 선택하는 것이 중요하다. 보안 요구 사항이 높은 경우, SHA-2, SHA-3 또는 BLAKE2와 같은 최신 알고리즘을 사용하는 것이 좋다. 1. MD5 (Message Digest Algorithm 5)해시 길이: 128 비트설명: MD5는 가장 오래된 해시 알고리즘 중 하나로, 빠르고 간단하다. 주로 파일 무결성 검사와 비밀번호 해싱에 사용되지만, 최근에는 보안 취약성 때문에 중요한 보안 응용에는 ..

Express 기초

Express 설치 및 초기 설정Express란?Express는 Node.js를 위한 빠르고 간결한 웹 프레임워크이다. 미들웨어와 라우팅 기능을 제공하여 서버와 API를 쉽게 구축할 수 있게 도와준다.프로젝트 초기 설정mkdir express-apicd express-apinpm init -ynpm install express mongoose corsnpm install --save-dev typescript ts-node @types/node @types/express @types/corsnpx tsc --initTypeScript 설정tsconfig.json 파일을 생성하고 다음과 같이 설정한다.{ "compilerOptions": { "target": "ES2020", "module":..

Javascript 2024.08.02

MongoDB

MongoDB는 NoSQL 데이터베이스로, 비관계형 데이터베이스 시스템이다. 전통적인 관계형 데이터베이스와 달리, MongoDB는 JSON과 유사한 BSON(Binary JSON) 형식의 문서를 사용하여 데이터를 저장하고 관리한다. 이러한 특성 덕분에 다양한 형식의 데이터를 유연하게 저장하고 빠르게 처리할 수 있다.NoSQL: 비관계형 데이터베이스로, 스키마가 필요하지 않다.JavaScript 질의어: 자바스크립트를 질의어로 사용하여 데이터베이스와 상호작용할 수 있다.배열 데이터: 배열 형태의 데이터를 효율적으로 저장하고 관리할 수 있다.JSON 저장: JSON 형태의 데이터를 자유롭게 저장할 수 있다. MongoDB 관리 도구MongoDB Shell (mongosh)명령줄 인터페이스(CLIMongoDB..

Database 2024.08.02

공개 라우트와 비공개 라우트

웹 사이트에 회원가입을 해야지만 이용할 수 있는 페이지가 있다. 이처럼 누구나 접속할 수 있는 경로를 공개 라우트, 로그인한 사용자만 접속 가능한 경로를 비공개 라우트라고 한다.예제회원가입을 해야지만 이용할 수 있는 비공개 라우트와 누구나 접근 가능한 공개 라우트를 설정하는 예제이다. 이를 위해 RequireAuth 컴포넌트를 사용해 비공개 라우트를 보호하고, Layout 컴포넌트를 통해 공통 레이아웃을 정의한다.useAuth.tsximport type {FC, PropsWithChildren} from "react";import {createContext, useCallback, useContext, useState} from "react";import * as U from "../utils";// L..

Javascript/React 2024.08.01

리액트 라우터

react-router는 React 애플리케이션에서 클라이언트 사이드 라우팅을 처리할 수 있게 도와주는 라이브러리이다.React Router의 주요 기능경로 기반 라우팅: URL 경로에 따라 다른 컴포넌트를 렌더링 한다.네스티드 라우팅: 라우트 안에 라우트를 중첩하여 복잡한 내비게이션을 구현한다.동적 라우팅: URL 매개변수를 사용하여 동적인 콘텐츠를 처리한다.프로그램적 내비게이션: 코드에서 직접 내비게이션을 제어할 수 있다.라우트 보호: 인증 및 권한 관리를 통해 특정 라우트 접근을 제어한다.설치npm i react-router Routes, Route, LinkRoutesRoutes는 React Router v6에서 도입된 새로운 컴포넌트로, 라우트의 집합을 정의하는 역할을 한다. 이전 버전에서는 S..

Javascript/React 2024.08.01