목록study (10)
Studyyyyy
포트포워딩이란?공유기(라우터)가 들어오는 외부 요청을 내부 컴퓨터(사설 IP)로 전달해주는 설정필요한 이유 / 배경인터넷(외부)에서 오는 요청은 공인 IP까지만 도달 가능하기 때문에, 어떠한 포트(ex.8000포트)로 오는 요청은 내 컴퓨터(사설 IP)로 들어오게끔 NAT에서 설정이 필요하다.실생활 / 실무 예시집에서 Django 서버를 띄우고 외부에서 접근하고 싶을 때내 컴퓨터 내부 IP 확인 (ex. 192.168.0.10)공유기 관리자 페이지 접속 : 대부분 192.168.0.1 에서 접속 가능포트포워딩 설정 메뉴로 이동 : 보통 고급 설정 -> NAT/포트포워딩 -> 새 규칙 추가설정 입력 (포트 번호, 내부 IP, 내부 포트, 프로토콜)주의할 점보안 : 외부에서 누구든 접근이 가능하기 때문에 인..
PKCE (Proof Key for Code Exchange) 동작 원리 OAuth2 Authorization Code Flow를 모바일/SPA같은 비밀키를 안전하게 숨기기 어려운 환경에서 보안 강화를 위해 만든 방식 1. 클라이언트에서 code_verifier 생성클라이언트 앱에서 랜덤 문자열(ex. xYz123...) 생성외부에 노출되면 안되기 때문에 일반적으로 HttpOnly 쿠키에 저장2. code_challenge 생성code_verifier를 SHA256 해시 후 URL-safe Base64로 인코딩 -> code_challenge이걸 OAuth 서버로 보냄(공개해도 되는 값)3. 사용자가 로그인하면 Authorization Code 발급OAuth 서버는 code_challenge 값을 기억로..
V8 이란?구글 chrome과 Node.js에서 사용하는 javascript 엔진 : JS 코드를 실제로 실행해주는 프로그램필요한 이유 / 배경기존 JS엔진은 느리고 웹앱이 복잡해짐에 따라 성능이 중요해지며 Google에서 V8을 개발빠른 속도메모리 효율Node.js 런타임에서도 활용 가능동작 원리JS 코드를 받아 파싱 -> AST(Abstract Syntax Tree) 생성Ignition 인터프리터가 먼저 실행하여 결과를 빠르게 출력TurboFan JIT(Just in Time) 컴파일러가 자주 실행되는 코드(HOT CODE)를 기계어로 변환 -> 성능 향상GC(Garbage Collector) 가 메모리 자동 관리구성 요소IP 저장 매핑 테이블타이머 / 세션 관리 : NAT 테이블에 저장된 매핑은 일..
브라우저란?HTML, CSS, JS로 이루어진 웹 페이지를 해석, 화면에 그려주는 프로그램알아야 할 것렌더링 최적화DOM, Repaint, reflow, Layout 등의 이해 -> 성능 이슈 사전예방JS는 브라우저의 JS 엔진 위에서 실행 (V8)동작URL 입력DNS 조회 -> 요청 -> 응답(HTML)HTML 파싱 -> DOM 생성CSS 파싱 -> CSSOM 생성DOM + CSSOM -> 렌더트리 구성Layout 계산 -> 실제 위치와 크기 계산Paint -> 픽셀 단위로 화면에 그려줌Composite -> 최종 화면 출력실생활 / 실무 예시페이지가 느릴 때 -> 렌더링 관련된 이슈 파악 가능css 변경 -> repaint or reflow?브라우저 별 동작 차이를 고려한 크로스 브라우징 전략 수립관..
운영체제란?하드웨어와 소프트웨어 사이에서 자원을 관리하고 프로그램을 실행할 수 있도록 돕는 시스템 소프트웨어알아야 할 것브라우저, Node.js 런타임이 OS 위에서 작동함.브라우저의 메모리/프로세스 구조비동기 처리, I/O 처리 등 Node.js의 동작 이해성능 최적화(메모리 사용, cpu 점유율)웹 애플리케이션 배포 환경(ex. Linux)동작프로세스 관리: 실행중인 프로그램들 관리메모리 관리 : 어떤 프로그램이 얼마나 메모리를 사용하는지 감지, 조절파일 시스템 : 디스크에 파일을 저장하고 읽을 수 있도록 함.입출력 관리: 네트워크 요청, 마우스 입력 등을 제어스케줄링 : 어떤 작업을 언제 CPU에서 실행할지를 결정.실생활 / 실무 예시리눅스 환경에서 배포 시 기본적인 명령어, 파일 경로 등의 이해도..
NAT란?사설 IP 공인 IP로 변환시켜주는 기술필요한 이유 / 배경초창기 인터넷은 IPv4로 IP를 할당받았지만, 인터넷 보급이 늘어남에 따라 IP 생성에 한계가 생겨 한정된 공인 IP주소를 여러 내부 장비들이 공유할 수 있도록 만들어진 것이 NAT이다.사설 IP로는 외부 인터넷에 접근이 불가능하기 때문에 공인 IP로 변환하여 접근을 도와주는 역할도 포함한다.동작 원리NAT장비(공유기, 라우터..)가 중간에서 사설 IP 공인 IP 변환포트 번호를 이용하여 각 장비와의 연결 구분(PAT)구성 요소IP 저장 매핑 테이블타이머 / 세션 관리 : NAT 테이블에 저장된 매핑은 일정 시간동안만 유지되며, 클라이언트에서 통신을 멈출 시 매핑은 자동으로 삭제실생활 / 실무 예시하나의 공유기로 여러 사람이 같은 ..
RSA란?공개키와 개인키로 이루어진 비대칭 키 기반 암호화 알고리즘필요한 이유 / 배경이전에 있던 AES와 같은 대칭키 방식은 비밀키(암호화키=복호화키)를 송신자와 수신자가 공유하는 과정에서 보안이 취약하다는 단점이 있었기 때문에, 이를 보안하기 위해 후반에 등장한 것이 RSA이다.동작 원리큰 숫자는 소인수분해를 하기가 어렵다는 점을 이용하여, 두 개의 큰 소수를 소인수분해 하는 문제를 기반으로 만들어진 알고리즘구성 요소RSA-896, RSA-1024, RSA-1536, RSA-2048 등이 있고, 중요도가 높은 정보일 경우 RSA-4096이나 RSA-8192 사용실생활 / 실무 예시전자서명서명 생성(개인키)서명 검증(공개키)같은 원리로 생체 인증, 보안 키 기반 인증에서 사용HTTPS서버에서 공개키를 ..
HTTPS란?WWW 서비스의 데이터 통신용으로 이용하는 HTTP 프로토콜에 SSL의 암호화 통신 기능을 추가한 것이다. (HTTP + SSL)필요한 이유 / 배경HTTP는 데이터를 암호화 하지 않고 그대로 전송하기 때문에 네트워크 상에선 누구나 쉽게 볼 수 있으며, 이에 따라 외부에 의한 해킹, 데이터 손상의 위험이 따른다. 여기에 SSL(암호화 프로토콜)을 적용하여 데이터를 안전하게 송신할 수 있도록 만들어진 것이 HTTP이다.동작 원리클라이언트에서 서버로 접속 시도시, SSL 핸드셰이크 요청서버에서 SSL 인증서(RSA 공개키 포함)를 클라이언트로 전송클라이언트에서 인증서를 CA(신뢰된 인증기관)의 공개키로 검증. 유효성, 도메인 일치, 만료 기간 등AES 대칭키(생성키) 생성 후 서버의 RSA 공개..