본문 바로가기
CS/HTTP

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

by 스응 2023. 3. 21.
728x90
728x90

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

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

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

 

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

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

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

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

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

 

 


HTTP (Hyper Text Transfer Protocol)

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

#  기본 메커니즘

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

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

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

#  Connection Less 지향

  - 요청이 종료되면 부하를 줄이기 위해 연결을 끊음

      → 해당 사용자임을 인증하는 정보가 필요함 : 쿠키 (Cookies)

 

 


HTTP 메시지

#  종류

  1) Request HTTP 메세지

  2) Response HTTP 메세지

 

#  기본 구조

 

  1) HTTP 헤드 

      - 메시지에 대한 정보

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

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

          ▶ 나머지 줄 : 헤더 (Header)

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

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

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

      - 헤드에 담아서 보내는 정보는 노출됨

 

  2) HTTP 바디

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

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

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

          → 따라서, POST 시에 보내는 정보는 바디 부분에 작성함

 

 

반응형
728x90

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)

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

 

상태 코드 설명
1xx   요청을 제대로 받았고, 처리가 진행 중임
2xx   요청이 제대로 처리됨

  - 200 : 성공
3xx   요청을 처리하려면 클라이언트가 추가 동작을 취해야 함

  - 302 : 다른 URL로 갈 것
4xx   클라이언트가 잘못된 요청을 보내어 처리에 실패함

  - 400 : 요청이 문법에 맞지 않음
  - 403 : 클라이언트가 리소스를 요청할 권한이 없음
  - 404 : 리소스가 없음
5xx   클라이언트의 요청은 유효하지만, 서버에 에러가 발생함

  - 500 : 요청을 처리하다가 에러가 발생함
  - 503 : 서버 과부하로 인해 요청을 처리할 수 없음

  3) 처리 사유 (Reason Phrase)

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

 

 


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

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

      → 보완 : HTTPS

 

HTTPS (HTTP over Secure socket layer)

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

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

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

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

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

320x100
반응형

댓글