HTTP, HTTPS

J·2023년 6월 5일
0

CS & Network, etc

목록 보기
2/6
post-thumbnail

HTTP란?

  • HTTP(HyperText Transfer Protocol)는 웹 상에서 클라이언트와 서버 간에 정보를 주고 받기 위해 사용하는 프로토콜임. 웹 브라우저와 웹 서버 간의 소통을 가능하게 하며, HTML 문서, CSS, JavaScript 파일, 이미지 등의 다양한 리소스들을 전송함.
  • 주로 웹페이지, 이미지, 동영상, 문서 등의 리소스를 요청하고 응답하는 데 사용됨. 클라이언트는 HTTP 요청 메시지를 생성하여 서버에 보내고, 서버는 해당 요청을 처리하고 HTTP 응답 메시지를 클라이언트에게 반환함. HTTP는 주로 TCP/IP 프로토콜 위에서 동작하며, 보통 80번 포트를 사용함.

웹 서버에서 웹 페이지를 요청하는 상황을 예를 들면?

  1. 사용자가 브라우저를 열어 www.example.com 웹 사이트에 접속하려 함.

  2. 브라우저는 웹 서버에 해당 웹사이트의 메인 페이지를 요청하는 HTTP Request 메시지 생성.

    GET /index.html HTTP/1.1
    Host: www.example.com
    Accept: text/html

    GET 메서드를 사용해 "/index.html"를 요청하고 HTTP 버전은 "HTTP/1.1"이다.

    헤더는 대상 호스트 이름 www.example.com 과 브라우저가 텍스트/HTML 형식의 파일을 받아들이겠다는 정보가 포함되어 있다.

  3. 웹 서버는 받은 HTTP 요청 메시지를 해석하고 해당하는 리소스를 찾는다. 리소스를 찾았다면 상태 코드 200 (OK)를 포함한 HTTP 응답 메시지를 브라우저로 전송함.

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 1370
    
    <!DOCTYPE html>
    <html>
    <head>
       <title>Example Web Pagetitle>
    </head>
    <body>
       <h1>Welcome to Example Website!</h1>
       <p>This is an example web page.</p>
    </body>
    </html>

    프로토콜 버전이 "HTTP/1.1"이고 상태 코드는 "200 OK" 이다.

    헤더에는 콘텐츠 타입이 "text/html"이고 콘텐츠 길이는 "1370" 라는 정보가 있다. 본문에는 실제 HTML 문서의용이 포함되어 있다.

  4. 브라우저는 받은 HTTP 응답 메시지를 해석하여 HTML 코드에 맞춰 웹 페이지를 화면에 렌더링한다. 이제 사용자는 웹 페이지를 확인할 수 있음.

  • 이러한 과정을 통해 웹 서버와 브라우저가 서로 정보를 주고 받아 웹 페이지를 불러오게 됨.

그럼 HTTPS는 무엇인지?

  • HTTPS (HyperText Transfer Protocol Secure)는 기본적으로 HTTP와 동일한 프로토콜이지만 데이터 전송 과정에서 SSL/TLS 프로토콜을 이용해 암호화 처리를 함으로써 보안 강화가 되어 있는 버전임. HTTPS를 사용하면 사용자와 웹 서버 간에 주고받는 데이터의 기밀성, 무결성, 그리고 인증이 보장됨.

HTTPS 접속 시 통신 과정은?

  1. 사용자가 브라우저를 열어 www.example.com 웹 사이트에 접속하려 함.

  2. 브라우저 request 시작.

    • 브라우저는 www.example.com 웹 서버에 안전한 데이터 전송을 지원하는지 확인하기 위해 SSL/TLS 프로토콜을 사용하여 서버와 암호화된 연결을 협상함. 이를 '핸드셰이크'라고 함.
  3. 핸드셰이크.

    • 클라이언트와 서버간 암호화에 사용할 인증서 교환이 이루어짐, 서버는 클라이언트에게 자신의 인증서를 제공하고 클라이언트는 이 인증서를 신뢰할 수 있는 인증 기관(CA)의 서명으로 검증함. 연결이 성공적으로 수립되면 이후의 데이터 전송은 암호화되어 전송.
  4. HTTP 요청 보내기.

    • 웹 서버에 해당 웹사이트의 메인 페이지를 요청하는 HTTP Request 메시지를 생성. 이 메시지는 기본적인 구조나 포맷은 HTTP와 동일하나, 암호화된 채널을 통해 전송됨.
  5. HTTP 응답 받기.

    • 웹 서버는 요청을 처리하고 HTTP 응답 메시지를 브라우저로 보냄. 응답 메시지의 구조 HTTP 응답 메시지와 동일하지만, 이 정보는 암호화된 채로 전송됨.
  6. 브라우저가 전송받은 암호화된 데이터를 복호화하여 웹을 렌더링.

  • HTTPS는 기본적인 구조와 메시지 형식은 HTTP와 동일하지만 SSL/TLS 프로토콜의 사용으로 전송되는 데이터가 암호화되어 보안이 강화된 버전임.
  • HTTPS에서는 SSL/TLS 프로토콜을 사용하기 때문에 웹 서버 측에서 SSL/TLS 인증서를 발급하고 관리해야 함. 그렇지 않으면 브라우저에서 경고 메시지를 보여주고 웹 페이지에 접속할 수 없음.

정리

  • HTTP와 HTTPS는 웹 상에서 클라이언트와 서버 간에 정보를 주고 받기 위해 사용하는 프로토콜임. 웹 브라우저와 웹 서버 간의 소통을 가능하게 하며, HTML 문서, CSS, JavaScript 파일, 이미지 등의 다양한 리소스들을 전송함.
  • HTTP는 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고 받을 수 있음. 하지만 HTTPS를 이용하면 암호화/복호화 과정이 필요해 HTTP보다 속도가 느림. 또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용 발생.
  • 민감한 정보가 없는 페이지는 HTTP를 이용, 로그인, 결제 등의 민감한 정보가 필요한 페이지는 HTTPS를 사용하면 될 것.

Reference

profile
벨로그로 이사 중

0개의 댓글