멱등의 사전적 의미 네이버 국어사전에 의하면 멱등은 '연산을 여러 번 적용하더라도 결괏값이 달라지지 않는 일'을 뜻한다. HTTP 메소드의 멱등성(Idempotent) GET, POST, PUT, DELETE 등의 HTTP 메소드 중에는 멱등성을 갖는 메소드들이 존재한다. HTTP 메소드가 멱등성을 갖는다는 것은 동일한 HTTP 요청을 몇 번을 보내든 같은 결과를 만든다는 것이다. 하지만 이렇게 HTTP 메소드의 멱등성을 이해하면 헷갈릴 수 있다. 중요한 것은 반환받는 결과가 같다는 뜻이 아니라 서버의 결과(상태)가 같다는 것이다. 즉, HTTP 메소드의 멱등성은 HTTP 요청을 몇 번을 보내더라도 일정한 서버의 상태를 만듦을 의미한다고 생각하자. HTTP 메소드들의 멱등성 여부는 아래와 같다. HTTP..
HTTP 1.0과 HTTP 1.1의 차이 HTTP 1.0과 HTTP 1.1의 가장 큰 차이점은 역시 Keep-alive 기능이다. HTTP 1.0은 매 요청마다 TCP 세션을 맺어야 했지만 1.1은 한 번의 TCP 세션으로 여러 개의 요청을 날릴 수 있다. 좀 더 자세한 내용은 다음을 참고하자. [Web] HTTP 1.0 과 HTTP 1.1의 차이 HTTP란? HTTP(Hyper Text Transfer Protocol)는 인터넷에서 주로 사용하는 데이터를 송수신하기 위한 프로토콜이다. HTTP에 대한 자세한 내용은 다음을 참고하자. [네트워크] HTTP란? non-persistent HTTP vs persistent code-lab1.tistory.com HTTP 1.1의 문제점 HTTP 1.1에서는 ..
웹소켓(WebSocket) 프로토콜이란? 웹소켓(WebSocket)은 클라이언트와 서버(브라우저와 서버)를 연결하고 실시간으로 통신이 가능하도록 하는 첨단 통신 프로토콜이다. 웹소켓은 하나의 TCP 접속에 전이중(duplex) 통신 채널을 제공한다. 쉽게 말해, 웹소켓은 Socket Connection을 유지한 채로 실시간으로 양방향 통신 혹은 데이터 전송이 가능한 프로토콜이다. 오늘날 채팅 어플리케이션, SNS, 구글 Docs, LOL 같은 멀티플레이 게임, 화상회의 등 많은 분야에서 사용되고 있다. HTTP와의 차이는? 기존 HTTP는 단방향 통신이였다. 클라이언트에서 서버로 Request를 보내면 서버는 클라이언트로 Response를 보내는 방식으로 동작했다. 또한, HTTP는 기본적으로 무상태(S..
쿠키(Cookie)란? 쿠키는 클라이언트(로컬)에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 이러한 쿠키는 클라이언트에 저장되어 필요시 정보를 참조하거나 재사용할 수 있다. 보통 웹 환경에서는 클라이언트와 서버가 HTTP 프로토콜을 이용해 통신한다. 하지만 HTTP 프로토콜은 아래와 같은 특징을 가지기 때문에 쿠키를 사용한다. 1. Connectionless(비연결성) -> HTTP는 TCP 연결을 맺고 요청(Request)을 보내면 서버는 응답(Response)을 보내고 연결이 끊어진다. 물론 HTTP 1.1 버전은 커넥션을 계속 유지하는 keep-alive 옵션이 디폴트이긴 하다. 하지만 HTTP 1.0 버전은 기본적으로 connectionless이다. 참고) [Web] HTTP 1.0 과 ..
HTTP 헤더 HTTP 헤더는 HTTP 전송에 필요한 모든 부가정보를 담고 있다. 메시지 바디의 내용, 크기, 압축, 인증, 요청 클라이언트, 서버 정보 등등... 매우 많은 정보들이 들어있다. 표준 헤더의 내용은 너무나 많기 때문에 모든 내용에 대해 궁금하다면 다음을 참고하자. List of HTTP header fields - Wikipedia HTTP header fields are a list of strings sent and received by both the client program and server on every HTTP request and response. These headers are usually invisible to the end-user and are only proc..
HTTP 상태 코드란? 웹 서비스를 이용하다 보면 종종 "404 Not Found"라는 오류 메시지를 볼 수 있다. 이러한 오류 메시지는 HTTP 상태 코드를 기반으로 한다. HTTP 상태 코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. HTTP 상태 코드는 3자리 숫자로 이루어져 있으며 첫 번째 자리가 1부터 5까지 존재하며, 크게 아래와 같이 분류된다. 1xx (Informational) : 요청이 수신되어 처리중 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) : ..
MVC 패턴의 등장 배경 하나의 서블릿 혹은 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리한다면, 너무 많은 역할을 하게 되어 유지보수가 어렵다. 또한, UI를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 변경 시점이 다를 가능성이 매우 높다. 따라서 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. 특히, JSP 같은 뷰 템플릿은 화면을 렌더링 하는데 최적화 되어 있기 때문에 이 부분의 업무만 담당하는 것이 좋다. MVC 패턴을 사용하면 JSP나 서블릿으로 처리하던 것을 컨트롤러,모델,뷰라는 영역으로 서로 역할을 나눠 처리할 수 있다. 참고 : [Web] 서블릿(Servlet)이란? 서블릿 컨테이너란? [Web] 서블릿(Servlet)이란? 서블릿 컨..
프록시(Proxy)란? 프록시는 두 호스트가 통신할 때 서로 직접 통신하지 않고 중간에서 대리로 통신을 하도록 도와주는 것을 프록시(Proxy)라고 한다. 이러한 중계 역할을 하는 서버를 프록시 서버라고 부른다. 즉, 프록시 서버는 클라이언트와 서버 사이의 중계서버로서의 역할을 한다. 이러한 프록시 서버가 클라이언트와 서버 중간에 위치하면서, 클라이언트는 프록시서버를 서버로 인식하고 서버는 프록시 서버를 클라이언트로 인식하게 된다. 프록시서버는 위치에 따라 포워드 프록시(Forward Proxy)와 리버스 프록시(Reverse Proxy)로 나뉜다. 포워드 프록시(Forward Proxy)란? 포워드 프록시는 일반적으로 프록시, 프록시 서버 혹은 웹 프록시라고 불린다. 포워드 프록시는 클라이언트들 앞에 ..
템플릿 엔진이란? 템플릿 엔진은 템플릿 양식과 특정 데이터 모델에 따른 입력 자료를 합성하여 결과 문서를 출력하는 소프트웨어 또는 소프트웨어 컴포넌트를 말한다. 특히, 웹 템플릿 엔진은 웹 문서가 출력되는 템플릿 엔진을 말한다. 즉, 웹 템플릿 엔진은 지정된 템플릿 양식과 데이터가 합쳐져서 HTML 문서를 출력하는 소프트웨어를 말한다. 이후 웹 템플릿 엔진을 템플릿 엔진으로 부르겠다. 서버 사이드 템플릿 엔진 vs 클라이언트 사이드 템플릿 엔진 서버 사이드 템플릿 엔진은 서버에서 DB 혹은 API에서 가져온 데이터를 미리 정의된 템플릿(Template)에 넣어 HTML 문서를 만들어 클라이언트에 전달해주는 역할을 한다. 즉, HTML 코드에서 고정적으로 사용되는 부분은 템플릿으로 만들어두고 동적으로 생성..
서블릿(Servlet)이란? 자바 서블릿(Java Servlet)은 웹페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. -위키피디아- 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다. 기존에 서버는 정적인 자료(HTML, 사진, 글 등)만을 주고받았다. 하지만 웹에 다양한 기능이 요구되면서 정적인 자료뿐만 아니라 사용자 요구에 맞춘 동적인 페이지들을 만들 필요가 생겼다. 이를 위해 만들어진 것이 바로 서블릿이다. 쉽게 말해 서블릿은 클라이언트의 요청에 맞춰 동적인 결과를 만들어 주는 자바 웹 프로그래밍 기술이라고 할 수 있다. 이러한 서블릿은 WAS(Web Application Server)의 서블릿 컨테이너 안에서 동작하게 된다...