HTTP (HyperText Transfer Protocol)
인터넷에서 하이퍼텍스트를 교환하기 위한 텍스트 기반의 통신 규약으로 TCP/IP 위에서 작동하는 인터넷에서 데이터를 주고받을 수 있는 프로토콜, 80번 포트를 사용하고 있다.
따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.
HTTP, 통신 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다.
클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다.
HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다.
HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이였기 때문에, HTTP로 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있었다.
이러한 문제를 해결하기 위해 HTTPS를 사용하게 되었다.
HTTPS(Hyper Text Transfer Protocol Secure)
HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 라고도 불림.
HTTPS는 SSL(Secure Socket Layer)을 이용한 HTTP 통신 방식
HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있다.
HTTP는 보안에 취약하기 때문에 HTTP 통신을 하는 소켓 부분을 SSL이나 TLS (Transport Layer Security) 프로토콜로 대체
HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있다.
HTTPS의 암호화 방식을 하이브리드 암호 시스템이라고 하는데,
하이브리드 암호 시스템을 이용해 대칭키의 단점 (1개의 키를 공유하면서 해킹당할 수 있는 위험), 공개키의 단점 (속도가 느리고, 많은 컴퓨팅 파워가 필요) 모두를 보완함.
HTTP와 HTTPS의 차이점
암호화
HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있다. 하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 느리다. (거의 차이를 못느낌.) 또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.
따라서
개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용하면 된다.
포트번호
HTTP : 80번 포트
HTTPS : 443번 포트
검색 엔진 최적화에 좋음.
구글이 HTTPS 웹사이트에 가산점을 줘서 구글의 검색 결과 페이지에서 상위권으로 노출
가속화된 모바일 페이지 콘텐츠를 만들 수 있음.
구글의 검색 결과 페이지에서 상위권으로 노출
Application Programming Interface(API)
응용프로그램 간에 데이터를 주고 받는 방법
프로그램 혹은 시스템 간의 통신하는 창구, 즉 프로그램들이 서로 상호작용하는 것을 도와주는 매개체라 할 수 있다.
REST의 정의
REpresentational State Transfer
자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미.
즉, 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻함.
REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에,
웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일.
REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나.
REST의 구성 요소
모든 자원에는 고유한 ID가 존재하고, 이 자원은 Server에 존재합니다.
자원을 구별하는 ID는 '/exgroups/:exgroup_id'와 같은 HTTP URI 입니다.
Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청합니다.
HTTP 프로토콜의 Method를 사용합니다.
HTTP 프로토콜은 GET, POST, PUT, PATCH, DELETE의 Method를 제공합니다. ( CRUD )
Client와 Server가 데이터를 주고받는 형태로 JSON, XML, TEXT, RSS 등이 있습니다.
JSON, XML을 통해 데이터를 주고 받는 것이 일반적입니다.
REST의 특징