HTTP(Hyper Text Transfer Protocol) 서버 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. OSI 네트워크 통신 모델의 애플리케이션 계층에서 사용한다. HTTP 동작 클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다. 요청 : client -> server 응답 : server -> client HTML 문서만이 HTTP 통신을 위한 유일한 정보 문서는 아니다. Plain text로 부터 JSON 데이터 및 XML과 같은 형태의 정보도 주고 받을 수 있으며, 보통은 클라이언트가 어떤 정보를 HT..
트랜잭션이란? 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 최소 단위 트랜잭션의 특징 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 하나의 트랜잭션은 Commit되거나 Rollback된다. 예를 들어, ATM으로 계좌이체를 한다고 생각해보면, A 은행에서 출금하여 B은행으로 송금 송금 중, 알 수 없는 오류가 발생하여 A은행 계좌에서 돈은 빠져 나갔지만 B은행의 계좌에 입금되지 않음 이와 같은 상황을 막기위해 거래가 성공적으로 모두 끝나야 이를 완전한 거래로 승인하고, 거래 도중 뭔가 오류가 발생했을 때는 이 거래를 처음부터 없었던..
연속 메모리 할당 메모리에는 다양한 프로그램도 올라가지만 OS도 올라간다. 그래서 메모리는 OS를 위한 파티션과 프로그램을 위한 파티션이 존재한다. 이전 게시물에서 설명했듯이 loading time binding에서 MMU를 활용해 물리적 주소를 논리적 주소처럼 연속적으로 메모리를 할당하는 것을 가능하게 했다. 또한 MMU에는 메모리 보호 기능도 있어서, 메모리 가용 범위를 넘어가지 않도록 해준다. 하지만, MMU를 통해 연속 메모리를 할당하는 것은 외부 단편화가 발생 할 수도 있다는 단점이 있다. 단편화(Fregmentation) 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면, 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할만큼의 작은 자유 공간들이 늘어나게 되는데 이를 단편화라고 한다..
메모리란? : 메인 메모리, RAM을 뜻한다. 프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간. 즉, 작업을 위해 사용되는 공간. 메모리 관리가 필요한 이유는? : 사용자들이 프로그래밍을 하면서 쉽게 메모리를 사용할 수 있도록 해준다. 사용자가 프로그래밍 언어를 활용해 코드를 작성할 떄 내부적으로 운영체제가 메모리를 관리해준다는 것이다. 운영체제가 메모리를 관리를 해준다는 것은 효율적으로 사용할 수 있도록 도와준다는 뜻이다. 또한, 메모리를 보호해준다. 메모리 보호란, A라는 프로세스가 있는데 다른 B라는 프로세스가 동시에 실행중에 있다. 그런데 B가 A의 메모리를 침범한다면 서로의 프로세스가 섞이기는 일이 발생할 것이다. 이러한 문제를 막는 행위이다. 운영체제의 역..
SQL Injection SQL Injection이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위이다. 이는 비교적 쉬운 방법이면서도 성공시 큰 피해를 입힐 수 있는 공격이다. 클라이언트가 입력한 데이터를 제대로 필터링 하지 못하는 경우에 발생한다. SQL Injection의 예시이다. - 각 클라이언트가 자격증 번호를 조회하는 시스템 - SQL 진행은 anjinma 클라이언트가 '자격증 번호 조회'를 클릭하여 anjinma라는 이름이 웹 서버에 전송되면 DB 입력값과 비교한 다음 일치하면 자격증 DB를 출력해준다. - 여기서 blackhat 이 anjinma의 자격증 번호를 조회하기 위해 SQL문을 수정하지..
렌더링은 웹 페이지 접속 시 페이지를 화면에 그려주는 것 이라고 이전 게시물에 설명을 해놨다. 렌더링 종류 렌더링은 서버로부터 받아와 전체페이지를 렌더링하는 서버사이드 렌더링(SSR)과 클라이언트에서 필요한 부분만 렌더링하는 클라이언트 사이트 렌더링(CSR)로 구성된다. SSR(Server Side Rendering) - 서버 영역에서 렌더링 과정을 수행하는 것 - 사용자가 웹 페이지에 접속하면 서버로 해당 페이지에 대한 요청이 진행 되고 서버에서는 필요한 html, css,js 를 이용해서 페이지를 서버에서 렌더링한 다음 클라이언트로 보내주는 것이다. 즉, 서버에서 완전한 html 페이지를 직접 만들어서 제공한다. - 동작 원리 사용자가 웹 페이지를 방문하면, 서버는 리소스를 확인하고 페이지 내에 있는..
이전에 했던 웹 동작 방식은 사용자가 url을 입력한 후 url을 서버로 어떻게 받는지를 봤다면 브라우저 동작 방법은 url을 입력했을 떄 어떤 과정을 거쳐 브라우저 페이지가 화면에 보이는 지에 대한 방법이다. 브라우저는 사용자가 선택한 자원을 서버에 요청한 뒤 브라우저에 표기한다. 자원은 html, pdf, 이미지 등 다양한 형태로 이뤄져 있고, 자원의 주소는 URL에 의해 정해진다. 브라우저가 가진 인터페이스는 보통 URL을 입력하는 주소 표시줄, 이전.다음 버튼, 북마크, 새로고침 버튼, 홈 버튼 등이 있다. 브라우저 기본 구조 브라우저 엔진 사용자 인터페이스와 렌더링 엔진 사이의 동작 제어 렌더링 엔진 요청한 콘텐츠 표시 (html 요청이 들어오면? → html, css 파싱해서 화면에 표시) 통..
웹의 동작 방식을 단순히 말하자면 "클라이언트가 서버에 요청을 보내면 서버는 요청에 대한 응답을 해준다." 로 정리 할 수 있다. 하지만 클라이언트와 서버 두개만 있다고 웹이 동작하는 것이 아니라 추가로 다양한 요소들이 필요하다. 쉽게 예를 들어 말하자면, 레스토랑에 손님이 들어온다. 손님은 종업원에세 음식을 주문하고 종업원은 요리사에서 주문서를 전달한다. 그러면 요리사는 음식을 조리한다. 요리가 끝나면 요리사는 종업원에게 요리를 전달하고 종업원은 손님에게 음식을 준다. 여기서 종업원 = 웹 클라이언트, 요리사 = 웹 서버라고 생각한다면 손님(사용자)의 음식(페이지)주문을 확인한 종업원(웹 클라이언트)이 요리사(웹 서버)에 요청(Request)를 보내면, 요리사(웹 서버)는 해당 요청(Request)에 ..