🔬Computer Science/네트워크 39

스레드란, 스레드 특징, 싱글 스레드, 멀티 스레드

스레드란? 명령어가 CPU를 통해서 수행되는 객체의 단위이다. 하나의 프로세스 내에는 1개 이상의 스레드가 반드시 존재하고, 이러한 스레드는 같은 프로세스에 있는 자원과 상태를 공유한다. 하나의 스레드가 수정한 메모리는 같은 메모리를 참조하는 스레드에 영향을 미친다. 예를 들어 하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수 있다. 프로세스가 종료되면 그 프로세스에 속해있던 스레드도 함께 종료된다. ✔️ 스레드의 필요성 하나의 프로세스 안에서 여러 개의 루틴을 동시에 수행해서 수행 능력을 향상하려고 할 때 스레드를 사용하게 되는데, 독립적으로 수행하여 처리하려고 할 때 사용하게 됩니다. 즉 여러 개의 작업 단위로 구성된 프로그램에서 요청을 동시에 처리하기 위해서! ✔️ 스레드의 특징 - 프로세스..

TIL) 토큰 기반 인증 절차, OAUTH 2.0 이란, JWT

토큰의 개념(Refresh Token과 Access Token의 차이) 쿠키 / 세션 방식과 토큰 방식의 차이 JWT의 작동원리 header, payload, signature의 역할 JWT가 어떻게 토큰의 변조를 판별하는 지 토큰 방식의 한계 Authentication과 Authorization의 차이 Authorization Code와 Access Token의 차이 Authorization 서버와 Resource 서버의 차이에 대해 이해할 수 있다. 토큰 기반 서버나 db에 유저 정보를 담는 세션 기반 인증 방식을 보완한 방식 토큰은 클라이언트에서 인증 정보를 보관한다. 여기서 토큰은 유저 정보를 암호화한 상태로 담을 수 있고, 암호화했기 때문에 클라이언트에 담을 수 있다. 대표적인 토큰 기반 인증 ..

TIL) 프론트엔드 개발자가 알아두면 좋을 웹 공격 (SQL injection, XSS, CSRF, Clickjacking )

OWASP (The Open Web Application Security Project) 전세계의 보완 전문가들이 웹의 보완에 대한 표준을 정의하고 이에 대해 기업과 개발자들에게 효율적인 정보를 제공하는 오픈소스 커뮤니티 OWASP TOP 10 : 3년 정도의 주기로 발표하는 웹 10대 취약점 1. SQL injection 공격 : 데이터 베이스에서 임의의 SQL문을 실행할 수 있도록 명령어를 삽입하는 공격 유형 👉 응용 프로그램의 보안상의 허점을 이용해 데이터베이스를 비정상적으로 조작하여, 기록이 삭제되거나 데이터가 유출될 수 있다. 공격 시나리오 1. 공격자가 악의적인 SQL문을 넣어 서버에 전송한다. 2. 서버가 해당 SQL문을 기존 SQL에 삽입해서 데이터베이터스 쿼리를 보냄 👇 정상 SELECT..

TIL) Cookie 정의, Session 정의, 쿠키와 세션의 차이

인증에 필요한 기본 지식 Cookie Cookie 배경 쇼핑몰에서 살 아이텀을 장바구니에 넣고 여기저기 돌아다녀도 장바구니 안의 아이템은 유지가 된다. HTTP는 stateless (무상태성)인데 어떻게 정보가 유지 될까? 바로 쿠키 Cookie 덕분이다! 🍪 Cookie 란? 어떤 웹 사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 작은 데이터 서버에서 클라이언트에 영속성있는 데이터를 저장하는 방법이다. 그러므로 서버가 원한다면 서버는 클라이언트의 쿠키를 이용하여 데이터를 가져올 수 있다. 해당 도메인에 대해 쿠키가 존재하면, 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달한다. 그러므로 쿠키를 이용하는 것은 단순히 서버에서 클라이언트에 쿠키를 전송하는 것만 의미하지 않고 클..

TIL) 암호화, hashing이란, 해싱이란, salt 란?

암호화는 일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하여 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 '알고리즘'을 이용해 정보를 관리하는 과정이다. Encryption 예 const shiftBy = function(content, offset) { return content.split('').map(function(letter) { return String.fromCharCode(letter.charCodeAt() + offset); }).join(''); } shiftBy('apple',2) // 출력 'crrng' shiftBy('crrng',-2) // 출력 'apple' Hashing 이란? 어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것 ..

TIL) HTTPS 이란? HTTPS 특징, HTTPS 목적

HTTPS 이란? (Hyper Text Transfer Protocol Secure Socket layer ) HTTP 프로토콜 내용을 암호화 (HTTP + Secure) HTTP over SSL(TLS), HTTP over Secure라고 부르기도 한다. HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 데이터를 암호화하여 전송하는 방법이다. HTTPS 특징 인증서 (certificate) - 데이터 제공자 신원 보장 = 데이터를 제공한 서버가 정말로 데이터를 보내준 서버인지 인증, 확인하는 용도이다. - 도메인 종속 = 인증서 내용에 서버의 도메인 관련 정보가 있어서 데이터 제공자의 인증을 용이하게 한다. 인증서의 도메인과 응답객체의 도메인을 비교할..

TIL) 검증 헤더, Cache-Control, 캐시 지시어 정리, 프록시 서버란?

웹 캐시 웹 캐시를 검증할 수 있는 여러 헤더 프록시 캐시 - 캐시(cache)는 컴퓨터 과학에서 데이터난 값을 미리 복사해 놓는 임시 장소이다. - 웹에서도 동일한 요청의 경우 같은 데이터를 다시 다운로드하지 않고 이를 웹 캐시로 저장해서 빠르게 불러올 수 있다. - 개인 컴퓨터에 저장하는 프라이빗 캐시 & 여러 유저에게 공통적으로 보여지는 데이터의 경우 프록시 서버에 별도로 캐시를 저장해서 사용자 경험을 향상시킬 수 있다. HTTP 헤더 - 캐시와 관련된 if) 캐시(데이터나 값을 미리 복사해 놓는 임시 장소)가 없을 경우 { 앞의 사례처럼 동일한 이미지를 요청하는 데 네트워크를 통해 같은 데이터를 또 다운받아야한다. } 결과 ➥ 용량이 클수록 비용이 커지고 브라우저의 로딩 속도가 느려진다. ➥ 느린..

TIL) HTTP 특징, 요청(Request) & 응답(Response)에서 사용되는 헤더, 콘텐츠 협상 헤더

HTTP 역사 응용계층에 속하는 HTTP, 이는 웹 사이트를 이용하기 위해 사용한다. HTTP/ 1.1 ~ HTTP/2 는 TCP 기반 프로토콜, HTTP/3 는 UDP 기반 프로토콜 HTTP 특징 클라이언트 서버 구조 = 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보낸다. 무상태성 프로토콜 (stateless) = 서버가 클라이언트의 상태를 보존하지 않는다. (클라이언트가 기억해서 데이터 전송) - 장점 : 서버 확장성 높음(스케일 아웃) - 단점 : 클라이언트가 추가 데이터 전송, 로그인이 필요 없는 단순한 서비스 소개 화면 같은 경우에는 무상태로 설계할 수 있지만, 로그인이 필요한 서비스라면 유저의 상태를 유지해야 하기 때문에 브라우저 쿠키, 서버 세션, 토큰 등을 이용해 상태를 유..

TIL) OSI 7계층 모델, TCP / IP 4계층 모델 정리

OSI 7계층 모델 OSI 7계층 모델 = ISO라는 국제표준화기구에서 제정한 표준 규격. 예전에는 같은 회사에서 만든 컴퓨터만 통신이 가능했는데, 다른 회사의 시스템이라도 네트워크 유형에 관계없이 상호 통신이 가능한 규약 (프로토콜)이 필요했다. 그래서 ISO에서 제조사에 상관없이 공통으로 사용할 수 있는 네트워크 표준 규격을 정의했다. OSI 7계층 모델 목적 = 표준화를 통해 포트, 프로토콜의 호환 문제를 해결하고, 네트워크 시스템에서 일어나는 일을 해당 계층 모델을 이용해 쉽게 설명할 수 있다. 또한 네트워크 관리자가 문제가 발생했을 때 이것이 물리적인 문제인지, 응용 프로그램과 관련이 있는지 등 원인이 어디에 있는지 범위를 좁혀 문제를 쉽게 파악할 수 있다. 하드웨어와 소프트웨어가 수행하는 기능..

TIL) 회선 교환 방식과 패킷 교환 방식 차이, IP 패킷의 한계, TCP와 UDP

패킷 교환 방식 회선 교환 방식 : 송수신 단말장치 사이에서 데이터를 전송할 때마다 통신경로를 설정하여 데이터를 교환하는 방식이다. 패킷 교환 방식 : 일정한 데이터 블록인 패킷을 교환기가 수신측 주소에 따라 적당한 통신경로를 선택하여 전송하는 교환방식이다. 전송하고자 하는 정보를 일정한 크기의 데이터로 분할한 후, 송수신 주소인 헤더를 각각에 부가한 패킷단위로 전송한다. IP(인터넷 프로토콜) = 인터넷 통신의 기본 IP 주소를 컴퓨터에 부여하여 통신한다. IP는 지정한 IP주소에 패킷이라는 통신 단위로 데이터를 전달한다. 패킷에는 출발지 IP, 목적지 IP 정보가 포함되어 있다. 패킷 단위로 전송시 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달한다. 이를 통해 복잡한 인터넷 망 사이에서도 ..