목록Backend/백엔드 필수개념 (14)
개발 무지렁이

𐂂 인증(Authentication)과 인가(Authorization) 🪤 인증이란 : 시스템이 제공한 신원을 확인하는 프로세스를 말한다. 🪤 인가란 : 인증된 개체가 어떤 작업을 수행할 권한이 있는지를 결정하는 프로세스를 말한다. 🌱 Spring Boot는 HTTP or HTTPS 요청이면 클라이언트가 뭐든간(?) 상관없이 요청을 처리한다. 클라이언트가 웹 브라우저인 경우, 브라우저 안의 🍪쿠키가 전달되어 인증 및 인가처리를 하는데, 클라이언트가 웹 브라우저가 아닌경우, 🍪쿠키를 잘 쓰지 않는다. 🍪쿠키를 쓰지 않으면 서버의 세션도 못쓴다. * 이럴때 인증 및 인가를 어떻게 처리할까? * 📕 참고 자료 📕 📍 scale-out(서버의 개수를 늘리는 것)되었을 때, 세션을 통해 인증처리 방식 로드밸런서에..

𐁍 NAT(Network Address Traslation) 🍩 ip주소 변환 : 내부 네트워크에서 사용되는 여러 디바이스의 사설ip주소를 공인ip주소로 변환 (외부 네트워크 or 인터넷과 통신할 때, 내부 디바이스가 하나의 공인ip로 표시된다.) 🍩 추가적인 보안 레이어 : 내부 네트워크에서 사용되는 디바이스들을, 외부에서 직접 접속할 수 없도록 보안 레이어 제공 🍩 ip주소 공유 : 여러 디바이스가 한개 or 제한된 수의 공인ip주소를 공유할 수 있다. ⚠️ 포트포워딩도 NAT기능 중하나이다. 📕 참고 자료 📕 Static NAT : 내부 ip주소와 외부 ip주소 간의 고정 매핑을 설정 내부 디바이스가 항상 동일한 공인 ip주소로 표시 Dynamic NAT : 내부 디바이스가 필요할 때마다 사용가능한..

🪙. 토큰(Token) 기반 인증 방식 : 클라이언트와 서버 간의 인증을 위해 토큰🪙을 사용하는 방식을 말한다. (1) 사용자🐽가 ID/Pwd를 제공하여 로그인을 시도한다. (2) 서버는 사용자🐽의 신원을 확인하고, 유효한(Valid) 경우 서버측에서 토큰🪙을 발급한다. (3) 해당 토큰🪙을 클라이언트로 전송한다. (4) 클라이언트는 이후 요청할 때마다, 토큰🪙을 헤더에 포함시켜 서버에 전송한다. (5) 서버는 토큰을 확인하여 사용자🐽의 신원과 권한을 확인하고 데이터를 전송한다. JWT(JSON Web Token) 서버와 클라이언트 간 인증을 위한 암호화된 토큰🪙을 말한다. 헤더(암호화 알고리즘) + 페이로드(사용자ID, 권한) + 서명(비밀키)으로 구성되며 사용자🐽가 로그인을 하면, 서버측에서 JWT🪙..

프로세스와 스레드 🧶. 프로세스는 실행중인 프로그램을 말한다. (프로세스는 운영체제(os)로부터 자원을 할당받는다.) 🪡. 스레드는 실행 제어만 분리한 것을 말한다. (스레드는 프로세스로부터 자원을 할당받는다.) 컨텍스트 스위칭(Context-Switching) CPU 사용권한을 다른 프로세스에게 넘기는 과정을 말한다. CPU는 여러 작업을 조금씩 번갈아가며 실행하여 처리한다. 🥥. PCB(Process Control Block) : 각 프로세스마다 하나의 엔트리(프로세스 관리 + 메모리 관리 + 파일 관리)로 존재 ⚠️. 프로세스가 running일 경우, 레지스터 정보를 CPU 내부 레지스터에 유지 ⚠️. 프로세스가 waiting일 경우. 레지스터 정보를 PCB에 저장

🌝. TCP(Transmission Control Protocol) 가상회선을 만들어 데이터 전송의 신뢰성을 보장하도록 하는 프로토콜을 말한다. (파일전송과 같이 🧩 신뢰성이 중요한 서비스에 사용) 🌚. UDP(User Datagram Protocol) : 그런 절차 없이 데이터그램 단위로 데이터 전송하는 프로토콜을 말한다. (스트리밍과 같이 🧩 연속성이 중요한 서비스에 사용) OSI(Open System Interconnection) 7계층 네트워크 통신을 구성하는 요소들을 7계층으로 표준화한 것. ⚠️. 통신과정을 단계별로 파악할 수 있어, 문제가 발생했을 때, 해결이 용이해진다. 7. Application Layer (응용 계층) 6. Presentation Layer (표현 계층) 5. Sessi..

𐂂 🌐 HTTP란 웹서버와 클라이언트 간에 데이터를 주고 받기 위한 통신 규약을 말한다. 𐁍 Rest (Representational State Transfer) 자원(resource)의 이름으로 식별하여, 해당 자원의 상태(자원의 표현)를 전달하는 것을 의미한다. 즉, 각각의 자원은 고유한 식별자(URI)를 가지며, 클라이언트는 이 식별자(URI)를 사용하여 자원의 상태(표현)을 요청하거나 변경할 수 있다는 것을 의미한다. ex. DB의 회원정보가 자원일 때, 'members/1'로 id가 1인 회원을 표현할 수 있다. ❓자원(resource) : 웹 애플리케이션이 관리하는 모든 것을 말한다. (Entity와 유사한 개념) ❓자원의 표현(Representation) : 요청되어지는 시점에서의 자원의 상..