[네트워크] HTTP 프로토콜

유선·2024년 4월 21일
0

CS

목록 보기
16/25
post-thumbnail

💡 HTTP(Hypertext Transfer Protocol) 프로토콜이란?

  • 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜
  • HTTP는 일반적으로 TCP/IP 위에서 동작
  • 기본적으로 클라이언트가 요청(Request)을 보내고 서버가 응답(Response)을 반환하는 방식으로 동작
  • 클라이언트-서버 모델에 기반을 둔 상태 없는(stateless) 프로토콜
    ✔️ 이전 요청과 다음 요청 간에 상태 정보가 유지되지 않는다는 것을 의미
  • 먼저 사용자가 웹사이트를 방문하면 브라우저가 웹서버로 리소스를 요청한다.
  • 요청을 받은 웹서버는 HTML, CSS와 같은 리소스를 응답으로 돌려준다.
  • 클라이언트의 요청과 서버의 응답 사이에는 여러 프록시 서버가 있다.
  • 프록시 서버는 캐시를 보관하거나 보안을 위해 서버의 IP 주소를 숨기는 등 다양한 역할을 한다.
  • 이 모든 통신은 안전하기 이뤄지기 위해 TCP(Transmission Control Protocol) 연결을 사용한다.

💡 HTTP 요청

  • 브라우저는 아래와 같은 HTTP 요청을 서버로 보낸다.
  • 첫 줄에는 HTTP 요청 메서드, URL 경로, HTTP 프로토콜 버전 정보가 있다.
  • 두 번째 줄부터 모두 HTTP 요청의 헤더이다.
  • key:value 쌍으로 이뤄져 있다.
  • 헤더는 웹사이트 도메인의 호스트, 언어, 사용자의 브라우저 등 서버가 필요한 정보를 전달한다.
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept-Language: ko-KR

💡 HTTP 응답

  • 요청에 문제가 없다면 서버는 아래와 같은 응답을 돌려준다.
  • 첫 줄에는 HTTP 프로토콜 버전 정보HTTP 상태 코드가 있다.
  • 둘째 줄부터 보이는 key:value 쌍은 역시 모두 헤더이다.
  • 응답의 헤더는 브라우저가 필요한 정보를 전달한다.
  • 마지막으로 응답의 Body는 브라우저가 요청한 데이터다. 아래 예시에서는 HTML 데이터를 돌려주고 있다.
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2023 14:28:02 GMT
Server: Apache
Content-Type: text/html

<html>
...
</html>

💡 HTTP와 HTTPS의 차이점

🔍 HTTP

  • HTTP 통신에서 브라우저와 서버는 데이터를 일반 텍스트로 교환한다.
  • 기본 포트번호는 80이다.
  • HTTP는 데이터를 암호화하지 않고 전송하기 때문에 제3자가 데이터를 가로채고 읽을 수 있다.
  • 보안을 강화하기 위해 HTTP는 HTTPS(Hypertext Transfer Protocol Secure)로 확장됐다.

🔍 HTTPS

  • HTTPS는 이름에서도 알 수 있듯이 HTTP의 더 안전한 버전이다.
  • 기본 포트번호는 443이다.
  • HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 생성한다.
  • HTTPS는 모든 요청 및 응답을 SSL(Secure Socket Layer)TLS(Transport Layer Security) 프로토콜에 따라 암호화한다.
  • 그래서 HTTPS를 사용하면 카드 정보나 비밀번호와 같은 민감한 정보를 보호할 수 있다.

💡 TLS(Transport Layer Security)

  • 온라인 네트워크에서 데이터를 안전하게 주고받기 위한 암호화 프로토콜
  • 통신 데이터를 TLS 프로토콜을 따라 암호화하면 누군가 데이터를 가로채도 복호화할 수 없기 때문에 악성 공격에서 데이터를 보호할 수 있다.
  • TLS가 적용된 HTTP는 HTTPS라고 불린다.
  • HTTP 뒤에 붙은 S는 보안(Security)를 뜻한다.
  • TLS가 적용되지 않은 HTTP 데이터는 평문으로 통신되기 때문에 위험하다.

🔍 TLS 와 SSL 차이

  • SSL(Secure Sockets Layer)은 TLS와 함께 사용되는 용어이다.
  • SSL에는 여러 보안 취약점이 있었기 때문에 사용이 중단되었고, 더 안전한 TLS 프로토콜로 대체되었다.
  • TLS가 아직 생소해서 지금도 널리 SSL이라는 용어가 사용되지만, 실제로는 TLS를 사용하는 게 더 일반적이다.
  • 최신 웹 브라우저는 대부분 SSL을 지원하지 않고, 지원하더라도 사용 환경이 저하될 수 있는 위험이 있다.

🔍 TLS 보안

⭐️ TLS는 다음 세 가지 방법으로 통신 데이터를 보호한다.

  1. 인증: 통신하고 있는 서버를 신뢰할 수 있는지 알려준다. CA(Certification Authority)에서 발급받는 인증서로 상대 서버의 서비스 정보, 공개키, 지문, 디지털 서명 등 다양한 정보를 확인할 수 있다.
  2. 암호화: 대칭 및 비대칭 암호화 조합을 사용해서 안전하게 데이터를 보호한다. 통신을 시작할 때 비대칭키로 안전하게 대칭키를 공유하고, 실제로 통신 과정에서는 대칭키로 데이터를 암호화 및 복호화한다.
  3. 무결성: 통신 과정에서 데이터가 손실되거나 변조되는 것을 방지한다.
profile
Sunny Day!

0개의 댓글