🟡 HTTP 요청 메서드
HTTP는 요청 메서드를 정의하여 주어진 리소스에 수행하길 원하는 행동을 나타내며, HTTP 동사라고도 한다. 각각의 메서드는 서로 다른 의미를 구현하지만, 일부 기능은 메서드 집합 간에 서로 공유하기도 한다.
- GET
GET 메서드는 특정 리소스의 표시를 요청한다. GET을 사용하는 요청은 오직 데이터를 받기만 한다.
- HEAD
HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않는다.
- POST
POST 메서드는 특정 리소스에 엔티티를 제출할 때 쓰인다. 이는 종종 서버의 상태의 변화나 부작용을 일으킨다.
- PUT
PUT 메서드는 목적 리소스 모든 현재 표시를 요청 payload로 바꾼다.
- DELETE
DELETE 메서드는 특정 리소스를 삭제한다.
- CONNECT
CONNECT 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺는다.
- OPTIONS
OPTIONS 메서드는 목적 리소스의 통신을 설정하는데 쓰인다.
- TRACE (en-US)
TRACE 메서드는 목적 리소스의 경로를 따라 메시지 loop-back 테스트를 한다.
- PATCH
PATCH 메서드는 리소스의 부분만을 수정하는데 쓰인다.
🟢 HTTP vs HTTPS
1. HTTP
[ HTTP란? ]
- 하이퍼 텍스트 전송 프로토콜(Hypertext Transfer Protocol)의 약자로, 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜로 웹서핑을 할 때 서버에서 브라우저로 데이터를 전송해 주는 용도로 가장 많이 사용된다.
- HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용한다.
- 그리고 인터넷의 초기에 모든 웹사이트에서 기본적으로 사용되었던 프로토콜이다.
[ HTTP의 구조]
- HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. HTTP는 상태를 가지고 있지 않은 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다.
[ HTTP 단점 ]
- 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않기 때문에 데이터가 쉽게 도난당할 수 있다.
2. HTTPS
[ HTTPS란? ]
- 하이퍼 텍스트 전송 프로토콜 보안(Hypertext Transfer Protocol Secure)의 약자로 HTTP에 데이터 암호화가 추가된 프로토콜이다.
- 정보의 암호화가 되지 않는 HTTP의 단점을 HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 해결하였다.
- HTTPS는 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 공개키 암호화를 지원한다.
- SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 이게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다.
[ 공개키/개인키 ]
- HTTPS는 공개키/개인키 암호화 방식을 이용해 데이터를 암호화한다.
- 공개키와 개인키는 서로를 위한 1쌍의 키이다.
- 공개키 : 모두에게 공개가 가능한 키
- 공개키 암호화 : 공개키로 암호화를 함녀 개인키로만 복호화할 수 있다 -> 개인키는 개인만 가지고 있으므로 개인만 볼 수 있다
- 개인키 : 개인만 가지고 알고 있어야 하는 키
- 개인키 암호화 : 개인키로 암호화하면 공개키로만 복호화할 수 있다 -> 공개키는 모두에게 공개되어 있으므로, 개인이 인증한 정보임을 알려 신뢰성을 보장할 수 있다
[ HTTPS의 동작 과정 ]
- HTTPS는 SSL과 같은 프로토콜을 사용하여 공개키/개인키 기반으로 데이터를 암호화되어 전송되기 때문에 임의의 사용자가 데이터를 조회할 수 없다
- 이를 위해서 서버는 클라이언트가 요청을 보낼 때 암호화를 하기 위해 공개키를 생성해야 하는데, 일반적으로는 인증된 기간(Certificate Authority)에 공개키를 전송하여 인증서를 발급받는다.
- HTTPS의 공개키/개인키 기반의 대칭키 암호화 방식은 다음과 같다.
- A기업은 HTTP 기반의 애플리케이션에 HTTPS를 적용하기 위해 공개키/개인키를 발급한다
- CA 기업에게 돈을 지불하고, 공개키를 저장하는 인증서의 발급을 요청한다
- CA 기업은 CA 기업의 이름, 서버의 공개키, 서버의 정보 등을 기반으로 인증서를 생성하고 CA 기업의 개인키로 암호화하여 A기업에게 제공한다
- A기업은 클라이언트에게 암호화된 인증서를 제공한다
- 브라우저는 CA기업의 공개키를 미리 다운받아 갖고 있어서 암호화된 인증서를 복호화한다
- 암호화된 인증서를 복호화하여 얻은 A기업의 공개키로 데이터를 암호화하여 요청을 전송한다
- 암호화된 인증서는 CA의 개인키로 암호화되었기 때문에 신뢰성 확보가 가능하고, 클라이언트는 A기업의 공개키로 데이터를 암호화하였기 때문에 A기업만 복호화하여 원본의 데이터를 얻는다
3. HTTP vs HTTPS
- HTTP는 암호화가 없어서 보안에 취약하지만, HTTPS는 안전하게 데이터를 주고받을 수 있다
- HTTPS에는 암호화/복호화 과정이 필요하기 때문에 HTTP보다 속도가 느리다. (요즘에는 속도 차이가 거의 없다)
- HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다
- 따라서 개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 단순한 정보 조회 등만을 처리하고 있다면 HTTP를 이용하면 된다.
🔵 HTTP vs TCP vs IP
1. TCP/IP
- TCP/IP 는 TCP와 IP 의 2개의 프로토콜로 이루어져 있는데, 통상 IP 프로토콜 위에 TCP 프로토콜이 놓이게 되므로 TCP/IP 라고 부르게 되었다.
2. TCP (Transmission Control Protocol)
- 데이터 전달을 관리하는 규칙으로 데이터를 작게 나누어 한쪽에서 다른 쪽으로 옮기고, 다시 조립해 원래대로 만드는 규칙이다
- 이 때 작게 나눈 데이터 단위를 패킷이라고 하며, 인터넷에서는 정보를 전달하는 단위를 의미한다
- TCP는 패킷을 조립, 손실된 패킷을 확인하고, 재전송 하도록 요청하는 기능을 의미한다
3. IP(Internet Protocol)
- 인터넷상의 주소 규칙이다
- 인터넷상에 연결된 모든 컴퓨터의 위치에 규칙이 필요한데, 이전에는 2⁸*4자리의 주소인 IPv4를 사용하였지만 주소가 고갈되고 있어서 16⁴*8자리인 IPv6로 전환되고 있다
4. TCP / IP 4계층
- OSI(Open Systems Interconnections) 7계층은 시스템들의 연결을 위한 모델이다
- TCP/IP 4계층은 이를 웹서비스에 맞게 단순화 시킨 모델이다
1) Application Layer(응용 계층)
이 계층은 네트워크를 사용하는 응용프로그램(FTP, Telnet, SMTP) 등으로 이루어지며, OSI 계층의 Aplication Layer 와 Presentation Layer 를 모두 포함한다.
2) Transport Layer(전송 계층)
계층의 이름에서 알수 있듯이, 도착을 원하는 시스템까지 데이타를 전송하기 위한 일을 하는 계층이다. OSI 모델의 Session Layer 과 Transport Layer 를 포함하고 있으며, 각각의 시스템을 연결하고, TCP 프로토콜을 이용하여 데이터를 전송한다.
3) Internet Layer(인터넷 계층)
데이터를 정의하고 데이터의 경로를 배정하는 일(라우팅)을 담당한다. 데이타를 정확히 라우팅하기 위해서 IP 프로토콜을 사용한다. OSI 의 Network Layer 과 Data Link Layer 를 포함한다.
4) Physical Layer(물리 계층)
물리적 계층 즉, 이더넷 카드와 같은 하드웨어를 말한다.
5. TCP/IP 4계층에 의한 데이터 전송
- WWW (World Wide Web)는 HTTP 프로토콜을 이용한다.
- 우선 사용자는 브라우저를 사용하여 www.naver.com와 같은 URL 입력을 통해서 웹 페이지를 요청한다.
- 사용자의 요청(문자)은 인터넷상에서 전달되기 용이한 패킷으로 만들기 위해서 TCP 패킷으로 만들어지게 된다.
- 이는 다시 인터넷 상에서 원하는 주소로 이동할수 있도록 하기 위해서 IP 패킷으로 다시 만들어지고 IP 패킷에는 자신의 주소와 도착해야 할 상대방의 주소 정보가 들어있고, 이것은 URL의 이더넷카드로 TCP/IP 패킷이 전달되게 된다.
- 이더넷 카드는 TCP/IP 패킷을 바로 윗 계층(Internet Layer)으로 보내는데, 여기에서는 IP 패킷을 분석해서 이 패킷이 어디에서 왔으며 도착지가 어디인지를 IP 주소를 기반으로 판단하게 된다.
- 목적지가 자신이면 이것을 다시 Transport Layer 로 보내고, TCP 프로토콜을 사용하여 메시지가 누락된게 있으면 다시 요청하거나 순서를 재조합하여 통신 메시지를 검사해서 이것을 다시 Application Layer 에게 보낸다.
- Application Layer 에서는 웹서버(IIS, Apache 같은)가 통신메시지를 HTTP 프로토콜에 준하는 검사를 통해 사용자가 요청한 웹페이지를 읽어들여서 Transport 계층으로 보내게 된다.
- 웹페이지를 브라우저까지 전송하는 과정은 위의 정반대의 과정을 순차적으로 거치게 된다.
- 최종적으로 웹브라우저는 웹페이지를 받은 후 HTTP 프로토콜에 준하여 렌더링 작업을 거친후 화면에 뿌려주게 된다.
- 따라서 각각의 계층은 각각의 계층만을 상관하고 있음을 알 수 있다.
- 즉 Application Layer 에 위치하는 브라우저와 웹서버는 HTTP 프로토콜에 의해서 자신의 계층끼리만 통신을 하고, Transport Layer 은 역시 TCP 프로토콜에 의해서 Transport Layer 끼리 통신을 함을 알 수 있다.
- 따라서 계층적 구조를 가지며, 각 계층은 대응되는 상대편의 계층에 대해서만 상관한다.
'사이드 프로젝트 > 개발몰입과정[2021_SUMMER]' 카테고리의 다른 글
2주차 개념 스터디 - BE (웹 서버, DB) (0) | 2021.08.11 |
---|---|
2주차 개념 스터디 - 서버와 클라이언트, 세션과 쿠키, Prettier & ESLint (0) | 2021.08.11 |
2주차 개념 스터디 - HTTP (1) (0) | 2021.08.09 |
1주차 개념 스터디 - Node.js의 BE 또는 FE Library / Framework (0) | 2021.08.01 |
1주차 개념 스터디 - 'REST API'란 무엇인가 (0) | 2021.07.31 |
댓글