본문 바로가기
면접준비

[프론트엔드 면접] HTTP와 HTTPS의 개념 및 차이점

by 기억보다 기록을 2024. 2. 12.
반응형

안녕하세요!

프론트엔드 개발자 면접 준비하면서 실제로 직접 받아본 질문들 하나씩 정리해보겠습니다. 

오늘 HTTP와 HTTPS 프로토콜 개념과 서로 차이점을 알아보겠습니다.

 

 


 

 

 

 


 

HTTP이란?


HTTP (Hypertext Transfer Protocol) 은 클라이언트와 서버 간에 데이터를 주고받는 데 사용되는 텍스트 기반의 프로토콜입니다. 웹 브라우저와 웹 서버 간에 문서를 전송하는 데 주로 사용되며, HTML 문서, 이미지, 스크립트, 스타일 시트 등의 웹 페이지 자원을 전송하는 데 적합합니다. HTTP 주요 특징을 다음과 같습니다. 

 

1.  클라이언트 (일반적으로 웹 브라우저)가 서버에 요청을 보냅니다. 이 요청은 HTTP 메서드(GET, POST, 등)와 함께 원하는 자원의 경로(Uniform Resource Identifier, URI)를 포함합니다.
서버 응답:

 2.  서버는 클라이언트의 요청을 받고, 해당 자원에 대한 응답을 생성합니다. 응답은 상태 코드, 헤더, 본문 등으로 구성됩니다.

 3.  서버의 응답이 클라이언트에게 전송됩니다. 이때, 전송에는 TCP/IP 프로토콜을 사용합니다. TCP/IP는 신뢰성 있는 데이터 전송을 제공합니다.


4.  클라이언트는 서버로부터 받은 데이터를 해석하여 웹 페이지를 렌더링합니다. 이 과정에서 HTML, CSS, JavaScript 등의 웹 페이지 구성 요소들이 사용됩니다.

 

 


 

 

HTTP 메서드 정리


 

간단히 말하면, HTTP 메서드는 클라이언트가 서버에게 어떤 동작을 원하는지를 나타내는 수단입니다. 

다양한 HTTP 메서드가 있지만, 주로 사용되는 몇 가지 메서드들을 자세히 설명해보겠습니다.

 

 

GET: 리소스를 요청하고 서버에서 해당 리소스를 반환합니다. 주로 정보를 요청할 때 사용합니다.


POST: 리소스에 데이터를 제출하여 리소스를 생성하거나 업데이트합니다. 주로 양식 제출 등에 사용됩니다.

 

PUT: 리소스를 업데이트 또는 생성합니다. 요청된 리소스가 이미 있으면 업데이트하고, 없으면 새로 생성합니다.

 

DELETE: 지정된 리소스를 삭제합니다.

 

HEAD: GET과 유사하지만 응답에서 본문을 제외하고 헤더 정보만을 반환합니다.

 

OPTIONS: 서버가 지원하는 메서드를 확인하기 위해 사용됩니다.

 

 

 


 

 

 

 


 

 

HTTPS 개념


HTTPS ( Hypertext Transfer Protocol Secure ) 는 HTTP의 보안 강화 버전으로, 데이터를 안전하게 전송하기 위해 SSL(보안 소켓 레이어) 또는 최신 버전인 TLS(전송 계층 보안) 프로토콜을 사용하는 프로토콜입니다.


그 중에 SSL (Secure Sockets Layer) 초기에 사용된 보안 프로토콜로, 웹에서 데이터를 암호화하고 안전하게 전송하기 위한 기술이며 서버 및 클라이언트 간의 통신을 보호하기 위해 사용되며, 공개 키 및 개인 키를 이용한 암호화 및 복호화를 통해 보안을 제공해줍니다. 


다음으로 TLS(Transport Layer Security) SSL의 후속 버전으로, 현재 주로 사용되는 프로토콜입니다.
더 강력한 보안 및 암호화 기술을 도입하고, SSL의 취약점을 보완하여 보다 안전한 통신을 제공합니다.

 

 

 


 

 

HTTPS 주요 특징 정리


간단하게 설명드리자면 HTTPS의 주요 동작 방식은 클라이언트와 서버 간의 안전한 통신을 위해 인증, 암호화, 및 데이터 무결성을 보장하는 단계적인 과정을 포함합니다. 이러한 접근은 중요한 정보를 주고받는 웹 트래픽에서 보안을 강화합니다. 자세한 설명은 다음과 같습니다. 

 

우선, HTTPS는 클라이언트가 안전한 연결을 확립하고자 서버에 HTTPS로 연결을 요청합니다.
또는 서버는 클라이언트에게 인증서를 제공하고, 이 인증서는 서버의 공개 키와 서버의 신원 정보를 포함합니다.
클라이언트는 이 인증서를 사용하여 서버의 신원을 확인하고, 신뢰할 수 있는 기관(Certificate Authority, CA)에 의해 서명된 유효한 인증서인지 확인합니다.

 

추가적으로  클라이언트와 서버는 SSL/TLS 핸드셰이크를 통해 통신에 사용할 암호화 알고리즘, 세션 키, 및 기타 보안 매개변수를 협상합니다. 이 단계에서 양측은 서로에 대한 안전한 터널을 설정합니다. 클라이언트와 서버는 핸드셰이크 과정에서 협상한 세션 키를 사용하여 통신할 수 있도록 준비됩니다. 이 세션 키는 대칭형 암호화에 사용되어 데이터의 기밀성과 무결성을 보장합니다.

HTTPS 데이터 암호화 및 전송 기능으로 세션 키를 사용하여 데이터는 암호화되어 전송됩니다. 클라이언트와 서버 간의 모든 통신은 이러한 암호화된 터널을 통해 이루어집니다. 클라이언트와 서버는 받은 암호화된 데이터를 세션 키를 사용하여 해독하고, 원본 데이터로 복원합니다. 암호화된 데이터를 전송하는 동안 데이터의 무결성이 보장되므로, 중간에서의 감청이나 조작을 방지합니다.

세션이 끝나면 안전한 연결이 종료되고, 이를 통해 사용자와 서버 간의 데이터 전송이 안전하게 이루어집니다.

 

 

 


 

 

 

 

 


 

 

HTTP와 HTTPS의  차이점


눈에 자주 보이는 HTTP와 HTTPS의 주요 차이점은 서로 보안, 포트 번호, 인증서, 암호화, 데이터 무결성, 그리고 사용 목적에 있습니다. 하나씩 정리해보면 자세한 차이첨을 설명과 간단한 예시로 알아보겠습니다. 

 

1. 보안 (Security):

HTTP => 비안전한 프로토콜로, 데이터는 암호화되지 않고 평문으로 전송됩니다. 중간에서의 감청이나 데이터 변조에 취약합니다. 예를 들어, 사용자의 로그인 정보나 결제 정보가 중간에서 가로채질 우려가 있습니다.


HTTPS =>  보안 강화를 위해 SSL/TLS 프로토콜을 사용하여 데이터를 암호화하고 안전한 터널을 형성합니다. 중간에서의 감청을 방지하고 데이터의 무결성을 보장합니다. 사용자의 로그인 정보 및 결제 정보가 암호화되어 안전하게 전송됩니다.

 

 

2. 포트 번호 (Port Number):

HTTP => 기본적으로 80번 포트를 사용합니다.

HTTPS => 기본적으로 443번 포트를 사용합니다.

 


3. 인증서 (SSL Certificate):

HTTP  => 인증서가 필요하지 않습니다.

HTTPS => 서버는 클라이언트에게 인증서를 제공하고, 클라이언트는 이를 사용하여 서버의 신원을 확인합니다.
사용자가 HTTPS로 접속한 웹 사이트의 주소창에는 'https://'와 함께 인증서를 발급한 기관의 정보가 표시됩니다.

 

 

4. 암호화 (Encryption):

HTTP  => 데이터는 암호화되지 않아 보안에 취약합니다.


HTTPS  =>  SSL/TLS 프로토콜을 사용하여 데이터를 암호화하여 중간에서의 감청을 방지합니다.

 

예를 들어, HTTP는 Wi-Fi 네트워크를 통해 전송되는 데이터를 감청하는 공격에 취약하지만, HTTPS는 암호화된 통신으로 보호됩니다.

 

 

5. 데이터 무결성 (Data Integrity):

HTTP => 데이터가 중간에서 변경될 우려가 있어 무결성이 보장되지 않습니다.

HTTPS => 암호화된 데이터를 전송하므로 중간에서의 데이터 변경이 감지되고 무결성이 유지됩니다.

간단한 예시로  사용자가 정보를 입력하는 양식 데이터가 중간에서 변조되지 않고 정확하게 전송됩니다.

 

 

6. 사용 목적:

HTTP => 주로 웹 페이지의 조회, 검색 등과 같이 보안이 크게 중요하지 않은 데이터 전송에 사용됩니다.

HTTPS => 개인 정보, 로그인 정보, 결제 정보 등 민감한 데이터를 주고받을 때 사용되며, 보안이 필수적인 상황에서 권장됩니다.

 

 

 


 

 

 

 

 

 


 

 

HTTP vs HTTPS 중 선택은?


 

그래서 HTTP와 HTTPS 중에 언제 어떤 것을 사용하는 것이 좋을까요?

 

장답은 바로 사용할 프로토콜은 사용자의 요구사항과 웹사이트의 성격에 따라 다르며, 보안과 성능 측면에서 HTTP와 HTTPS 중에서 선택해야 합니다. 

1.  HTTP를 선택하는 경우:

정보의 민감도가 낮고 공개적인 정보일 때 측, 블로그, 뉴스 사이트 등과 같이 민감한 정보를 주고받지 않는 웹사이트에서는 HTTP를 사용할 수 있습니다.

속도가 우선시되는 경우 HTTPS는 암호화와 추가적인 보안 프로세스로 인해 약간의 성능 오버헤드가 발생할 수 있습니다. 속도가 매우 중요한 경우에는 HTTP를 선택할 수 있습니다.

 

2.  HTTPS를 선택하는 경우:

민감한 정보 전송이 필요한 때 로그인 정보, 결제 정보 등 민감한 데이터를 주고받을 때는 HTTPS를 사용하여 데이터를 안전하게 전송해야 합니다.

또는 검색 엔진 최적화 (SEO) 강화 과정에서 구글 등의 검색 엔진은 HTTPS를 사용하는 웹사이트를 높게 평가하며, HTTPS를 사용하면 SEO에 긍정적인 영향을 줄 수 있습니다.

신뢰성 확보를 위해 HTTPS는 데이터의 무결성과 서버의 신원을 보장하기 때문에 사용자들에게 높은 신뢰성을 제공합니다.

 

 

 

 


결론


오늘 HTTP와 HTTPS 서로 차이점으로 알아봤습니다. 마지막으로 다시 한번 정리해보자면 HTTP와 HTTPS는 웹 통신의 기본 프로토콜로서, 주요한 차이점을 가지고 있습니다. HTTP는 보안성이 낮고 데이터가 암호화되지 않아 중간에서의 감청과 데이터 변조에 취약한 반면, HTTPS는 SSL/TLS 프로토콜을 이용하여 데이터를 안전하게 암호화하여 전송합니다.

HTTPS는 민감한 정보 전송 시에 보안성을 강화하고 중간에서의 공격으로부터 데이터를 보호합니다. 특히 인증서를 통한 서버의 신원 확인과 데이터 암호화를 통한 안전한 통신은 사용자와 웹 서버 간의 신뢰성을 높이며, 중요한 개인 정보를 안전하게 전송할 수 있도록 합니다. 따라서 현대적인 웹 보안 표준으로 HTTPS를 사용하는 것이 권장되며, 웹 사용자와 서비스 제공자 간의 안전한 상호작용을 보장합니다.

 

 

 

 

 


 

반응형