새소식

프론트엔드 공부/네트워크

HTTP와 HTTPS

  • -

HTTP와 HTTPS는 둘 다 인터넷에서 데이터를 전송하는 프로토콜이다.

HTTP는 Hypertext Transfer Protocol의 약자로, 웹 브라우저와 웹 서버 간의 통신에서 사용한다. HTTP는 인터넷 상에서 데이터를 전송할 때, 데이터의 안전성을 보장하지 않기 때문에 보안에 취약하다. 즉, 데이터가 제3자에 의해 도난당할 가능성이 있다. 이러한 문제점을 보완하기 위해 HTTPS가 나왔다.

@edhotels HTTP VS HTTPS

HTTPS는 HTTP와 Secure Socket Layer(SSL) 또는 Transport Layer Security(TLS)를 조합하여 보안성을 높인 프로토콜이다. HTTPS는 웹 브라우저와 웹 서버 간의 통신에서 데이터를 암호화하여 전송하므로 제3자에 의한 데이터 도난 등을 방지할 수 있다. HTTPS를 사용하는 경우 URL이 "https://"로 시작하며, 브라우저에는 보안을 나타내는 잠금 아이콘이 표시된다.

잠금 아이콘

HTTPS는 온라인 상에서 민감한 정보를 주고받는 경우에 반드시 사용하는게 좋다. 예를 들어, 로그인 정보, 신용카드 정보 등의 개인정보를 주고받을 때는 HTTPS를 사용하는게 좋다. 또한, HTTPS를 사용하는 웹사이트는 검색 엔진에서 더 높은 순위를 받을 수 있다. 그래서 현재는 HTTPS를 사용하는 웹사이트가 대부분이다.


HTTP의 특징

HTTP는 Hypertext Transfer Protocol의 약자로, 웹 브라우저와 웹 서버 간의 통신에서 사용되는 프로토콜이다. HTTP의 특징으로는 무상태성(Stateless)과 비연결성(Non-persistent connection)이 있다.

  1. 무상태성은 HTTP 프로토콜이 이전의 요청 상태를 기억하지 않는다는 것을 말한다. 즉, 클라이언트가 요청을 보낼 때마다 서버는 그 요청에 대한 응답을 반환하고, 클라이언트와의 연결을 끊는다. 이후 다시 클라이언트가 요청을 보내면, 서버는 클라이언트의 요청에 대한 응답을 다시 반환한다. 이전의 요청 상태를 기억하지 않기 때문에 서버는 각각의 요청을 독립적으로 처리해야 하며, 이는 서버의 처리 시간과 리소스 사용량을 증가시킬 수 있다.
  2. 비연결성은 클라이언트와 서버가 한 번 연결을 맺은 후, 한 번의 요청에 대한 응답을 받으면 연결을 끊는 것을 의미한다. 이를 Non-persistent connection이라고도 부른다. 이러한 방식은 서버의 리소스를 효율적으로 사용할 수 있도록 하지만, 매번 연결을 맺고 끊는 작업은 오버헤드가 있을 수 있다.

따라서, HTTP의 무상태성과 비연결성은 서버의 처리 시간과 리소스 사용량을 증가시킬 수 있지만, 각각의 요청에 대한 응답을 독립적으로 처리할 수 있도록 하여 서버의 부하를 분산시키는 효과도 있다.


HTTP 헤더

@serverguy HTTP 요청

요청(Request)에서 사용되는 헤더(Headers)는 HTTP 요청에 대한 메타데이터 정보를 전달한다. 이 정보는 클라이언트와 서버 간의 통신을 원활하게 하며, 요청에 대한 추가적인 정보를 제공한다.

일반적으로 사용되는 요청 헤더

  1. Host: 요청한 호스트의 도메인 이름 또는 IP 주소를 지정합니다.
  2. User-Agent: 클라이언트의 소프트웨어 정보를 지정합니다. 예를 들어, 브라우저의 종류와 버전 정보가 포함될 수 있습니다.
  3. Accept: 클라이언트가 원하는 미디어 타입을 지정합니다. 서버는 이 정보를 바탕으로 적절한 리소스 표현(representation)을 반환합니다.
  4. Accept-Language: 클라이언트가 원하는 언어를 지정합니다.
  5. Accept-Encoding: 클라이언트가 원하는 인코딩 방식을 지정합니다. 예를 들어, 압축된 데이터를 요청할 수 있습니다.
  6. Connection: 클라이언트와 서버 간의 커넥션 유지 여부를 지정합니다.
  7. Cookie: 서버가 클라이언트에게 보낸 쿠키 정보를 지정합니다.
  8. Authorization: 요청에 대한 인증 정보를 지정합니다. 예를 들어, 사용자 이름과 암호를 포함할 수 있습니다.
  9. Referer: 이전 페이지의 URL을 지정합니다. 이 정보는 주로 웹사이트에서 링크 클릭 등의 동작을 추적하는 데 사용됩니다.
  10. Cache-Control: 클라이언트와 서버 간의 캐시 관리 정보를 지정합니다.

요청 헤더는 HTTP 요청에서 이 정보를 바탕으로 요청에 대한 적절한 응답을 반환하고, 클라이언트는 이 정보를 바탕으로 요청과 응답을 적절하게 처리해준다.

@serverguy HTTP 응답

HTTP 응답헤더는 웹 서버가 클라이언트에게 보내는 메시지의 일부분으로, 웹 브라우저가 서버로부터 받은 응답의 처리방법을 결정하는데 중요한 역할을 한다.

일반적으로 사용되는 응답 헤더

  1. Content-Type: 이 헤더는 서버가 보내는 문서의 형식을 지정합니다. 예를 들어, HTML 문서는 "text/html", 이미지는 "image/png" 또는 "image/jpeg"와 같은 형식을 가집니다.
  2. Cache-Control: 이 헤더는 클라이언트가 서버로부터 받은 응답을 캐시할 수 있는지 여부를 결정합니다. 캐시를 사용하면 같은 요청에 대한 응답을 더 빠르게 처리할 수 있습니다.
  3. Server: 이 헤더는 서버 소프트웨어의 이름과 버전 정보를 포함합니다. 이 정보는 보안상의 이유로 가리거나 숨기는 것이 좋습니다.
  4. Set-Cookie: 이 헤더는 서버에서 클라이언트로 쿠키를 전송하는 데 사용됩니다. 쿠키는 클라이언트의 로컬 브라우저에 저장되어 이전에 방문한 웹사이트의 정보를 유지할 수 있게 합니다.
  5. Location: 이 헤더는 클라이언트를 다른 페이지로 리디렉션하는 데 사용됩니다. 이것은 보통 3xx 상태 코드와 함께 사용되며, 클라이언트는 새로운 URL로 다시 요청합니다.
  6. ETag: 이 헤더는 서버에서 보낸 문서의 버전을 식별하는 데 사용됩니다. 클라이언트는 ETag 값을 사용하여 캐시된 문서가 최신인지 여부를 확인할 수 있습니다.

HTTPS의 특징

HTTPS는 HTTP와 Secure Socket Layer(SSL) 또는 Transport Layer Security(TLS)를 조합하여 보안성을 높인 프로토콜이다. HTTPS의 특징으로는 암호화, 인증, 무결성 보호 등이 있다.

  1. 암호화: HTTPS는 데이터를 암호화하여 전송함으로써 제3자에 의한 데이터 도난 등을 방지한다. HTTPS는 대칭키 암호화 방식과 공개키 암호화 방식을 모두 사용한다.
  2. 인증: HTTPS는 웹 서버의 인증을 통해 사용자가 접속하는 웹사이트가 신뢰할 수 있는지 확인한다. 인증 방식으로는 SSL 인증서를 사용한다.
  3. 무결성 보호: HTTPS는 전송되는 데이터의 무결성을 보호한다. 데이터가 전송 중에 변경되지 않도록 하여 데이터 조작을 방지한다.

HTTPS를 사용하는 경우 URL이 "https://"로 시작하며, 브라우저에는 보안을 나타내는 잠금 아이콘이 표시된다. HTTPS를 사용하는 웹사이트는 검색 엔진에서 더 높은 순위를 받을 수 있으며, 민감한 정보를 주고받을 때는 반드시 HTTPS를 사용하는게 좋다.

하지만 HTTPS는 암호화와 인증 등의 과정으로 인해 HTTP보다 처리 속도가 느리고, 서버 리소스를 많이 사용합니다. 따라서 HTTPS를 사용하는 경우, 서버의 성능과 보안성을 균형있게 유지하는 것이 중요하다.


HTTPS의 암호화 키

HTTPS의 암호화 키는 서버와 클라이언트 간의 통신을 안전하게 보호하기 위해 사용한다. 이 암호화 키는 대칭키와 공개키 암호화 방식을 사용하여 생성된다.

먼저, 대칭키 암호화 방식은 서버와 클라이언트가 공유하는 암호화 키를 사용하여 데이터를 암호화하고 복호화하는 방식.

이 방식은 데이터 전송 속도가 빠르고 암호화/복호화 과정이 간단하기 때문에 대부분의 HTTPS 통신에서 사용된다.

하지만 대칭키 암호화 방식은 암호화 키를 공유하는 과정에서 해킹 등의 공격을 받을 가능성이 있기 때문에, HTTPS는 대칭키와 공개키 암호화 방식을 함께 사용한다.

공개키 암호화 방식은 서버와 클라이언트 각각이 다른 암호화 키를 가지고 있는 방식이다. 서버는 공개키를 공개하고, 클라이언트는 이를 사용하여 데이터를 암호화한다. 이 암호화된 데이터는 서버의 비밀키로만 복호화할 수 있다. 이러한 방식으로 암호화된 데이터는 해킹 등의 공격을 받아도 안전하게 전송될 수 있다.

따라서 HTTPS의 암호화 키는 대칭키와 공개키 암호화 방식을 결합하여 생성되며, 이를 통해 서버와 클라이언트 간의 안전한 통신이 가능해진다.


읽어보기 좋은 곳

 

What is the difference between HTTP and HTTPS? (Detailed Guide)

What is the difference between HTTP and HTTPS?. Comparison guide of HTTP vs HTTPS you should read to know why you should move on to HTTPS.

serverguy.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.