ABOUT ME

Today
Yesterday
Total
  • sample - 웹의 동작 (HTTP 프로토콜 이해)
    부스트코스 대학생 서포터즈 BOOSTER 2기 2020. 1. 19. 23:18

     

    이번 포스팅에서는 HTTP프로토콜의 작동방식과, HTTP프로토콜의 요청/응답 데이터 포맷에 대하여 알아보겠습니다.

     

    본론에 앞서 핵심 개념은 아래 5가지가 있습니다.

     

    • HTTP
    • Request 형식
    • Request Method
    • Response 형식
    • 응답 코드

     

     

    HTTP (Hypertext Transfer Protocol)란?

    • 팀 버너스리(Tim Berners-Lee)와 그가 속한 팀은 CERN에서 HTML뿐만 아니라 웹 브라우저 및 웹 브라우저 관련 기술과 HTTP를 발명하였습니다.
    • 문서화된 최초의 HTTP버전은 HTTP v0.9(1991년)입니다.
    • HTTP는 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜(protocol)입니다.
    • HTTP는 계속 발전하여 HTTP/2까지 버전이 등장한 상태입니다.

     

    HTTP 작동방식

    • HTTP는 서버/클라이언트 모델을 따릅니다.
    • 장점
      - 불특정 다수를 대상으로 하는 서비스에는 적합하다.
      - 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에 클라이언트와 서버 간의 최대 연결 수보다 훨씬 많은 요청과 응답을 처리할 수 있다.
    • 단점
      - 연결을 끊어버리기 때문에, 클라이언트의 이전 상황을 알 수가 없다.
      - 이러한 특징을 무상태(Stateless)라고 말한다.
      - 이러한 특징 때문에 정보를 유지하기 위해서 Cookie와 같은 기술이 등장하게 되었다.

     

    URL (Uniform Resource Locator)

    • 인터넷 상의 자원의 위치
    • 특정 웹 서버의 특정 파일에 접근하기 위한 경로 혹은 주소

    HTTP (Hypertext Transfer Protocol)

    • 요청 메서드 : GET, PUT, POST, PUSH, OPTIONS 등의 요청 방식이 온다.
    • 요청 URI : 요청하는 자원의 위치를 명시한다.
    • HTTP 프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜 버전이다.

    첫번째 줄의 요청메소드는 서버에게 요청의 종류를 알려주기 위해서 사용됩니다.

    각각의 메소드 이름은 다음과 같은 의미를 가집니다.

    참고로 최초의 웹 서버는 GET방식만 지원해줬습니다.

    • GET : 정보를 요청하기 위해서 사용한다. (SELECT)
    • POST : 정보를 밀어넣기 위해서 사용한다. (INSERT)
    • PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE)
    • DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE)
    • HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
    • OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.
    • TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.

     

     

     

    그렇다면 HTTP에 S가 붙은 HTTPS 는 어떤 용도로 사용되는 걸까요? HTTP와 무엇이 다를까요?

     

    우선 클라이언트에서 서버에 접속 할 때, 서버의 HTTP와 HTTPS 포트는 각각 80, 443으로 차이가 있습니다. 

     

    그리고 80, 443 포트는 url에 80인지 443인지 확인할 수 있는 방법이 

    HTTP 접속(80포트)일 때 url의 맨 앞이 http:// 로 시작하고,

    HTTPS 접속(443포트)일 때 url의 맨 앞이 https:// 로 시작하는 차이점이 있습니다. 

     

     

    예를 들어 자신의 컴퓨터로 로컬 서버를 실행 후 주소창에 localhost를 입력하여 접속한다면(서버 기본 설정을 바꾸지 않았을 경우)

    chrome 환경에서 http 로컬 서버 접속화면

    위와 같은 'i' 아이콘이 앞에 붙은 것을 확인할 수 있습니다. 이 아이콘을 클릭해보면

    http 서버 접속시 알 수 있는 정보

    위의 이미지처럼 HTTPS가 사용되지 않았다고 알려줍니다. 

     

    반면 https://www.edwith.org/boostcourse-web/lecture/16661 처럼 앞부분이 https:// 로 시작하는 url의 경우 

    chrome 환경에서 https 서버 접속화면
    https 서버 접속시 알 수 있는 정보

    위 이미지처럼 주소창 가장 왼쪽부분에 자물쇠 모양의 아이콘과 함께, 클릭했을 때 HTTPS가 사용되었다고 알려주는 것을 확인할 수 있습니다.

     

     

    웹서버를 구동할 때 서버 설정에서 HTTP, HTTPS 설정을 각각 지정하는 방법이 있으며,

    웹 브라우저 주소창에 사이트 url을 입력할 때 http:// 또는 https:// 를 입력하지 않아도 강제로 HTTP 또는 HTTPS로만 접속할 수 있도록 설정할 수 있습니다. 

     

    예를 들면, naver 홈페이지에 접속할 때 https://naver.com가 아닌 naver.com만 입력해도 되는 것이죠.

     

     

    더 자세히 알아보자면

    HTTP는 암호화가 되어 있지 않은 프로토콜이지만, HTTPS는 서버와 클라이언트 사이에서 전달되는 패킷을 암호화하는 방식이 추가된 개념이라고 생각하시면 됩니다. 

     

    HTTPS는 암호화 과정 때문에 HTTP보다 비교적 속도가 느리지만, 체감할 정도는 아닙니다. 

     

     

    또한, 웹서버를 개발할 때 HTTP를 이용한다면 일부 서비스 구현이 어려울 수 있습니다. 

     

    예를 들어 SNS계정을 통한 회원가입 기능을 추가할 때 일부 SNS developer 사이트에서는 HTTPS 환경에서 기능을 정상적으로 사용할 수 있도록 제한하기도 합니다.

     

    그리고 웹에서 위치 정보를 이용한 서비스를 제공하려고 할 때 HTTP 환경에서는 모든 브라우저에서 위치 권한을 얻지 못하도록 되어 있어 HTTPS가 필요합니다.

     

     

     

    HTTP, HTTPS 서버 설정 방법과 웹서버에 SNS계정으로 로그인하는 방법 등은 이후 포스팅에서 다루도록 하겠습니다.

     

    긴 글 읽어주셔서 감사합니다!

     

     

     

     

     

    참고 자료

     

     

     

     

    * 이 글은 edwith [부스트코스] 웹프로그래밍 - 1. 웹프로그래밍 기초 강의 글을 참조하여 작성하였습니다.

Designed by Tistory.