네트워크 (Network)/HTTP

[HTTP] 통신 프로토콜 - HTTP와 HTTPS

송기동 2024. 1. 25. 18:56
728x90

HTTP (Hyper Text Transfer Protocol)

- 서버와 클라이언트의 데이터 교환을 요청과 응답 형식으로 정의한 프로토콜

# 기본 메커니즘

- 클라이언트가 서버에게 요청하면 서버가 응답하는 것

   : 웹 서버는 HTTP 서버를 HTTP 서비스 포트에 대기시킴 (TCP/80 or TCP/8080을 주로 사용함)  

      → 클라이언트가 서비스 포트에 HTTP 요청을 전송하면 이를 해석하여 응답을 반환함

 


HTTP 메세지

# 종류

  • Request HTTP 메세지
  • Response HTTP 메세지

 

# 기본 구조

1) HTTP 헤드

- 메세지에 대한 정보

- 각 줄은 CRLF(빈 줄)로 구분됨

- 첫 줄 : 시작 줄 (Start-line)

- 나머지 줄 : 헤더 (Header)

   : 필드와 값으로 구성됨 → HTTP 메세지 또는 바디의 속성을 나타냄

   : 하나의 HTTP 메세지에는 0개 이상의 헤더가 있을 수 있음

- 헤드의 끝은 CRLF 한 줄로 나타냄

 

2) HTTP 바디

- 헤드의 끝을 나타내는 CRLF 뒤에 있는 줄

- 클라이언트가 서버에게 or 서버가 클라이언트에게 전송하려는 데이터가 담김

- 바디에 담아서 보내는 정보는 노출되지 않음

   → 따라서, POST 방식으로 보내는 정보는 바디 부분에 작성

 


HTTP 요청 (Request)

- 서버에게 특정 동작을 요구하는 메세지

   → 서버는 해당 동작과 클라이언트 권한을 검토하고, 적절할 때만 이를 처리

 

1) 메서드(Method)

     : URI가 가리키는 리소스를 대상으로, 서버가 수행하길 바라는 동작을 나타냄

        ▶ GET

              : 리소스를 가져오라는 메서드

                이용자가 브라우저에 웹 서버의 주소를 입력하거나 하이퍼링크를 클릭하면

                새로운 페이지를 렌더링하기 위해 리소스 필요

                → 브라우저는 GET 요청을 서버에 전송하여 리소스를 받아옴

        ▶ POST

             : 리소스로 데이터를 보내라는 메서드

               전송한 데이터는 HTTP 바디에 포함됨

              ex) 로그인 시 id, pw 등이 POST 요청을 통해 서버로 보내짐

2) 요청 URI

     : 메서드의 대상이 되는 리소스  ex) html 파일명

3) HTTP 버전

     : 클라이언트가 사용하는 HTTP 프로토콜의 버전  ex) HTML/1.1

 


HTTP 응답 (Response)

- HTTP 요청에 대한 결과 및 이유, 전송할 웹 리소스를 반환하는 메시지

 

1) HTTP 버전

      - 서버에서 사용하는 HTTP 프로토콜의 버전

2) 상태 코드 (Status Code)

      - 요청에 대한 처리 결과를 세 자릿수로 나타낸 것

 

[HTTP] 상태 코드

HTTP 상태 코드 - 3자리 숫자로 이루어져 있으며, 총 100번대 ~ 500번대 까지 존재 - 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드 - 상태 코드에 따라 요청의 성공/실패 여부 판단 HTTP 상태 코

thdrlehd.tistory.com

 

3) 처리 사유 (Reason Phrase)

      - 상태 코드가 발생한 이유를 짧게 기술함

 


#  요청(Request)과 응답(Response)

- 클라이언트는 웹 서버에게 특정 리소스를 지정해서 제공해달라고 '요청'

- 서버가 해당 요청에 대응되는 동작을 통해 클라이언트에서 리소스를 반환하며 '응답'

    → 프로토콜 : 이러한 규격화된 상호작용에 적용되는 '평등한' 약속(규약)

          (비교 : 인터페이스는 '강제성이 있는' 약속)

    ex) TCP/IP : 네트워크 통신의 기초가 되는 프로토콜

           HTTP : 웹 애플리케이션이 사용하는 프로토콜

           FTP : 파일을 주고받을 때 사용하는 프로토콜

 


- HTTP의 응답과 요청은 평문으로 전달됨 (특정 형식이 없는 문자열)

   → '중간 탈취자'가 이러한 정보를 가로채면 중요한 정보가 유출될 수 있음

   → 보완 : HTTPS

 

HTTPS (HTTP over Secure socket layer)

- TLS (Transport Layer Security) 프로토콜 도입

   → TLS는 서버와 클라이언트 사이에 오가는 모든 HTTP 메시지를 암호화함

   → 공격자가 중간에 메시지를 탈취하더라도 해석할 수 없음

   → HTTP 통신이 도청과 변조로부터 보호됨

   → 현재 개발되는 서비스들은 규모에 상관없이 HTTP보다 HTTPS를 사용하는 추세

728x90