본문 바로가기

과거공부모음

HTTP와 HTTPS

HTTP(HyperText Transfer Protocol)

웹에서 데이터를 전송하기 위한 프로토콜, 클라이언트와 서버 간에 요청 및 응답을 주고받는 방식으로 동작한다.

HTTP는 상태가 없는 stateless 프로토콜, 각 요청과 응답은 독립적이고 서버는 이전 요청의 정보를 저장하지 않는다.

 

동작 순서

  1. 클라이언트에서 서버로 요청 : HTTP요청은 메서드(GET, POST, PUT, DELETE), 요청 URL, 프로토콜 버전, 헤더 정보, 요청에 대한 내용을 포함
  2. 서버에서 요청 처리 : 서버는 클라이언트의 요청을 받아 처리하고, 적절한 응답을 준비한다.
    요청 처리는 웹 페이지를 반환하거나 데이터베이스에서 정보를 가져오는 등의 작업이 포함된다.
  3. 서버에서 클라이언트로 응답 전송 : 서비는 처리된 요청에 대한 응답을 클라이언트에게 전송한다.
    HTTP응답은 프로토콜 버전, 상태 코드(200, 404, 400, 500), 상태 메시지, 헤더 정보, 응답에 대한 내용을 포함한다.
  4. 클라이언트에서 응답처리 : 클라이언트는 서버에서 반환받은 응답을 처리하고 사용자에게 표시한다

 

HTTPS(HyperText Transfer Protocol Secure)

HTTP에 SSL또는 TLS 프로토콜을 추가해서 데이터를 암호화하고 안전하게 전송하기 위한 프로토톨이다.

 

동작 순서

  1. SSL/TLS 핸드셰이크 : 클라이언트가 서버에 열결을 시도할 때 먼저 SSL/TLS 핸드셰이크 과정이 시작된다.
    이 과정에서 클라이언트와 서버는 암호화 알고리즘, 키 교환 방식, 서버 인증서 확인 등의 작업을 수행한다.
    핸드셰이크가 성공적으로 완료되면 클라이언트는 서버에 요청을 전송한다.
  2. 클라이언트에서 서버로 요청 : HTTP와 동일한 방식으로 요청을 전송하지만 데이터는 SSL/TLS 프로토콜에 따라 암호화되어 전송한다.
  3. 서버에서 요청 처리 : HTTP와 동일한 방식으로 요청을 처리한다.
  4. 서버에서 클라이언트로 응답 : HTTP와 동일한 방식으로 응답을 전송하지만 데이터를 SSL/TLS 프로토콜에 따라 암호화되어 전송한다.
  5. 클라이언트에서 응답처리 : HTTP와 동일하게 처리한다.

 

HTTP와 HTTPS 차이점은 보안 및 암호화에 있다.

 

보안 : 가장 중요한 차이점은 보안이다.

  • HTTP는 기본적으로 암호화를 하지 않는 텍스트로 데이터를 전송한다. 따라서 데이터가 중간자 공격에 노출이 된다.
  • HTTPS는 SSL(Secure Sockets Layer)또는 TLS(Transport Layer Security)를 사용해 데이터를 암호화하고 전송한다. 이로 인해서 중간자 공격을 방지하고 데이터의 기밀성과 무결성을 보장한다.

포트 번호 : HTTP와 HTTPS는 각각 다른 포트 번호를 사용한다.

  • HTTP는 기본적으로 포트 번호를 80을 사용한다.
  • HTTPS는 기본적으로 포트 번호를 443을 사용한다.

URL 스키마

인증성

  • HTTP는 따로 인증서가 필요없다
  • HTTPS는 SSL또는 TLS 인증서를 사용해서 사이트의 소유자에 대한 정보를 포함해 사용자가 사이트를 신회할 수 있는지 확인한다.

SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 무엇일까?

SSL은 웹 서버와 브라우저 간에 암호화된 연결을 제공하는 프로토콜이다.
이 프로토콜은 인증, 암호화, 무결성 보호 기능을 제공하며 데이터가 안전하게 전송되도록 한다.
SSL은 비대칭 암호화 기술을 사용하여 데이터를 암호화하며 인증서를 사용하여 서버의 신원을 확인 TLS은 SSL의 진화된 버전으로 보안 및 암호화 기능을 개선한 프로토콜이다.
TLS는 SSL과 동일한 목적으로 사용되지만 암호화 알고리즘과 키 교환 메커니즘을 최적화하고 취약점을 해결하여 더 강력한 보안을 제공한다.

 

현재 대부분 웹 사이트는 SSL대신 TLS를 사용하며 SSL은 점차 폐기되고 있는 추세이다.

'과거공부모음' 카테고리의 다른 글

데이터베이스와 ORM  (0) 2023.04.18
RESTful API  (0) 2023.04.17
call by value와 call by reference  (0) 2023.04.17
클로저  (0) 2023.04.17
async/await  (0) 2023.04.17