본문 바로가기
사이드 프로젝트/개발몰입과정[2021_SUMMER]

2주차 개념 스터디 - HTTP (2)

by 의정부핵꿀밤 2021. 8. 11.
728x90

🟡 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 구조

[ HTTP 단점 ]

- 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않기 때문에 데이터가 쉽게 도난당할 수 있다.

 

2. HTTPS

[ HTTPS란? ]

- 하이퍼 텍스트 전송 프로토콜 보안(Hypertext Transfer Protocol Secure)의 약자로 HTTP에 데이터 암호화가 추가된 프로토콜이다.

- 정보의 암호화가 되지 않는 HTTP의 단점을 HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 해결하였다.

- HTTPS는 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 공개키 암호화를 지원한다.

- SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 이게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다.

 

[ 공개키/개인키 ]

- HTTPS는 공개키/개인키 암호화 방식을 이용해 데이터를 암호화한다.

- 공개키와 개인키는 서로를 위한 1쌍의 키이다.

 

- 공개키 : 모두에게 공개가 가능한 키

- 공개키 암호화 : 공개키로 암호화를 함녀 개인키로만 복호화할 수 있다 -> 개인키는 개인만 가지고 있으므로 개인만 볼 수 있다

 

- 개인키 : 개인만 가지고 알고 있어야 하는 키

- 개인키 암호화 : 개인키로 암호화하면 공개키로만 복호화할 수 있다 -> 공개키는 모두에게 공개되어 있으므로, 개인이 인증한 정보임을 알려 신뢰성을 보장할 수 있다

[ HTTPS의 동작 과정 ]

- HTTPS는 SSL과 같은 프로토콜을 사용하여 공개키/개인키 기반으로 데이터를 암호화되어 전송되기 때문에 임의의 사용자가 데이터를 조회할 수 없다

- 이를 위해서 서버는 클라이언트가 요청을 보낼 때 암호화를 하기 위해 공개키를 생성해야 하는데, 일반적으로는 인증된 기간(Certificate Authority)에 공개키를 전송하여 인증서를 발급받는다.

 

- HTTPS의 공개키/개인키 기반의 대칭키 암호화 방식은 다음과 같다.

  1. A기업은 HTTP 기반의 애플리케이션에 HTTPS를 적용하기 위해 공개키/개인키를 발급한다
  2. CA 기업에게 돈을 지불하고, 공개키를 저장하는 인증서의 발급을 요청한다
  3. CA 기업은 CA 기업의 이름, 서버의 공개키, 서버의 정보 등을 기반으로 인증서를 생성하고 CA 기업의 개인키로 암호화하여 A기업에게 제공한다
  4. A기업은 클라이언트에게 암호화된 인증서를 제공한다
  5. 브라우저는 CA기업의 공개키를 미리 다운받아 갖고 있어서 암호화된 인증서를 복호화한다
  6. 암호화된 인증서를 복호화하여 얻은 A기업의 공개키로 데이터를 암호화하여 요청을 전송한다
  7. 암호화된 인증서는 CA의 개인키로 암호화되었기 때문에 신뢰성 확보가 가능하고, 클라이언트는 A기업의 공개키로 데이터를 암호화하였기 때문에 A기업만 복호화하여 원본의 데이터를 얻는다

HTTPS 동작 과정

 

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 끼리 통신을 함을 알 수 있다.

- 따라서 계층적 구조를 가지며, 각 계층은 대응되는 상대편의 계층에 대해서만 상관한다.

728x90

댓글