반응형

Computer Engineering/네트워크(Network) 17

[Web] JWT(JSON Web Token)란?

JWT JWT(JSON Web Token)는 데이터를 안전하고 간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식으로, JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 웹 토큰(Web Token)이다. JWT는 권한 부여에 매우 유용하다. 예를 들어, 새로 사용할 애플리케이션에서 Gmail과 연동되어 이메일을 읽어와야 한다면 사용자는 다음과 같이 권한을 부여받을 수 있다. Gmail 인증 서버에 로그인 정보(아이디, 비밀번호)를 제공한다. 인증에 성공할 경우, JWT를 발급받는다. 새로 사용할 애플리케이션은 JWT를 사용해 해당 사용자의 이메일을 읽거나 사용할 수 있다. JWT의 종류 액세스 토큰(Access Token) 리프레시 토큰(Refresh Token) 사용자(클라이언트)가 처음 인증을..

REST API 성숙도 모델(Maturity Model) 단계별 설계 방법

REST API 성숙도 모델 REST API를 작성할 때는 몇 가지 지켜야 할 규칙들이 있다. 로이 필딩이 논문에서 제시한 REST 방법론을 보다 더 실용적으로 적용하기 위해 레오나르드 리차드슨은 REST API를 잘 적용하기 위한 4단계 모델을 만들었다. 이를 리차드슨의 REST 성숙도 모델이라 한다. REST 성숙도 모델은 총 4단계(0~3단계)로 나누어진다. 3단계까지 모두 충족하는 것은 어렵다. 2단계까지만 적용해도 좋은 API 디자인이라 볼 수 있다. 이런 경우 HTTP API라고도 부른다. REST 성숙도 모델 0단계 REST 성숙도 모델의 0단계에서는 단순히 HTTP 프로토콜을 사용하기만 해도 된다. 0단계는 좋은 REST API를 작성하기 위한 기본 단계이다. 다음과 같이 허준이라는 이름의..

[Network] REST API란 무엇인가?

Intro 웹 애플리케이션에서는 HTTP 메서드를 이용해 서버와 통신한다. GET을 통해 웹 페이지나 데이터를 요청하고, POST로 새로운 글이나 데이터를 전송하며, DELETE로 저장된 글이나 데이터를 삭제할 수 있다. 이처럼 클라이언트와 서버가 HTTP 통신을 할 때는 어떤 요청을 보내고 받느냐에 따라 메서드의 사용이 달라진다. HTTP 메서드의 사용은 아무런 규칙 없이 이루어지는 것이 아니다. 요청과 응답을 할 때에는 정확히 요청하고 응답받을 수 있는 규약이 존재한다. REST란? REST API에서 REST는 REpresentational State Transfer의 약자로, 로이 필딩의 논문에서 웹(http)의 장점을 최대한 활용할 수 있는 아키텍처로써 처음 소개되었다. 즉, REST는 HTTP..

[Network] HTTP란 무엇인가?

HTTP(HyperText Transfer Protocol) HTTP는 HyperText Transfer Protocol의 줄임말로, 직역하면 하이퍼텍스트 전달 프로토콜이다. 하이퍼텍스트(HyperText)는 인터넷 사용자가 필요한 정보의 자유로운 검색을 가능하도록 해주는 텍스트의 전개 방식이다. HTTP는 이러한 하이퍼텍스트 방식의 정보를 교환하기 위한 하나의 규칙이다. 즉, HTML과 같은 문서를 전송하기 위해 사용되며 OSI 7 계층에서 응용 계층에 있는 프로토콜이다. HTTP는 웹 브라우저와 웹 서버의 소통을 위해 디자인되었으며, 전통적인 클라이언트-서버 아키텍처 모델에서 클라이언트가 HTTP 메시지 양식에 맞춰 요청을 보내면, 이에 서버는 HTTP 메시지 양식에 맞춰 응답을 한다. HTTP는 특..

[Web] 웹 애플리케이션 아키텍처 개념 정리 및 구현, 기술

웹 애플리케이션 아키텍처란? 웹 애플리케이션의 구조를 간단하게 도식화하면 위 이미지로 나타낼 수 있다. 웹 브라우저를 통해 클라이언트의 요청에 따라 웹 서버에 도달하게 되고, 애플리케이션 서버와 데이터베이스를 거쳐 필요한 리소스를 받아 클라이언트로 응답한다. 이때 클라이언트는 결과를 화면에 표시하게 된다. 웹사이트 vs 웹 애플리케이션 웹사이트(Website)와 웹 애플리케이션(Web application)은 일상에서 혼용하여 사용하기도 한다. 하지만, 엄밀히 말하면 이 둘은 서로 다른 개념이다. 웹 개발 영역에서 웹사이트(Website)는 일반적으로 정적 페이지들의 집합체를 의미한다. 만약, 웹사이트에서 동적 페이지를 포함하게 되면 이는 웹 애플리케이션(Web application)이 된다. 웹 애플리..

[Web] 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR)

웹 개발을 하기 위해서는 SSR(Server Side Rendering)과 CSR(Client Side Rendering)의 차이점을 알아야 한다. SSR이란? 서버 사이드 렌더링(SSR)은 JavaScript가 웹 페이지를 브라우저에서 렌더링하는 대신에, 서버에서 렌더링 하는 것이다. 실 생활 예시로는 온라인에서 상품을 주문했을 때, 배송 출발지에서 조립을 완료한 상태로 보내는 것과 유사하다. 브라우저가 서버의 URI로 GET 요청을 보내면, 서버는 정해진 웹 페이지 파일을 브라우저로 전송하고, 서버의 웹 페이지가 브라우저에 도착하면 완전히 렌더링된다. 서버에서 웹 페이지를 브라우저로 보내기 전에, 서버에서 완전히 렌더링했기 때문에 서버 사이드 렌더링이라 한다. 웹 페이지의 내용에 데이터베이스의 데이터..

[Web] 웹(Web)의 개념 정리

웹(Web)이란? 월드 와이드 웹(World Wide Web)은 전 세계에 퍼져 있는 인터넷 정보들을 서로 거미줄처럼 연결해준다. 즉, 인터넷에 연결된 사용자들이 서로의 정보를 주고받을 수 있는 공간을 의미한다. 이러한 월드 와이드 웹을 WWW으로 줄여 말하기도 하며, 간단히 웹 또는 W3라고도 한다. 웹 프로젝트는 1989년 유럽 핵물리 공동 연구소(CERN)의 연구원이었던 팀 버너스 리에 의해서 처음 시작되었다. 연구소 내의 직원들이 수많은 정보를 주고받는 상황에 다른 운영체제나 애플리케이션을 사용하고 있어서 발생하는 문제를 해결하기 위해 만든 개념이다. 따라서 일정한 형식의 기준인 HTML을 제안하게 되었고, HTML은 운영체제나 애플리케이션이 달라도 인터넷 브라우저만 있으면 모두가 동일한 정보를 ..

[Network/Web] 도메인(Domain)과 도메인 네임 시스템(DNS : Domain Name System) 개념 정리

도메인 네임이란? (Domain name) 만약, 웹 사이트의 주소를 https://123.123.123.123/hello/hello.html와 같이 IP 주소로 작성해야 한다면 기억하기가 매우 어려울 것이다. 따라서 사용자가 기억하기 어려운 표현을 심볼화된 이름인 도메인 이름을 사용한다. 인터넷 연결되는 호스트 컴퓨터에 부여되는 도메인 이름의 모호성과 혼란을 최소화하기 위해 IP 주소와 도메인 이름 사이에 제어가 가능한 이름 공간(Name space)을 구성한 다음, 이로부터 각 호스트 컴퓨터에 이름을 부여하도록 한다. 이름 공간은 각 IP 주소마다 유일한 이름을 연결시키며, 평면구조 혹은 계층구조를 갖도록 구성할 수 있다. 비영리 단체인 ICANN은 현재 4억 개에 달하는 모든 도메인을 관리하고 있다..

[Network/Web] URL이란? - URL 개념 정리 - URL과 URI의 차이

URL (Uniform Resource Locator) URL은 웹에 게시된 어떤 자원을 찾기 위해 브라우저에서 사용되는 메커니즘으로, 인터넷상에서 HTML이나 이미지 등 리소스의 위치를 특정하기 위한 서식으로 사용되기 위해 등장했다. 웹에는 수 많은 파일이 연결되어 있는데, 웹에 존재하는 파일을 다른 파일과 구별하기 위한 식별자로 사용되는 것이 URL이다. 인터넷 브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다. 예를 들어 구글(https://google.com:443)에 접속하면 google.com 주소가 가리키는 서버의 기본 폴더를 뜻한다. CLI나 GUI 환경에서 폴더와 파일의 위치를 찾아 이동하듯이 슬래시(/)를 이용해 서버의 폴더에 진입하거나 파일을 ..

[Network] 포트(Port) 개념 정리 및 종류

포트(Port) 포트는 “논리적인 접속장소”를 뜻하며, 인터넷 프로토콜인 TCP/IP를 사용할 때 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용한다. 네트워크 상에서 통신을 할 때 IP 주소를 바탕으로 해당 서버가 있는 컴퓨터에 접근하게 된다. 하나의 IP에서 여러 애플리케이션을 실행할 경우, 컴퓨터에는 여러 개의 서버가 실행하게 된다. 이때 포트번호를 통해 대상 IP 기기의 특정 애플리케이션의 서버에 접속할 수 있도록 알려주어야 한다. 위 그림은 한 서버 인스턴스에서 웹 서버와 메일 서버 두 개를 동시에 실행 중인 상황을 뜻한다. 이 경우 IP 주소만으로는 어느 서버로 요청을 보내는지 알 수 없다. 따라서 포트 번호를 통해 receiver를 특정하여 어느 서버로 보내는..

반응형