HTTP(Hypertext Transfer Protocol)

하쮸·2024년 11월 27일

1. HTTP.

  • HTTP란?
    • HTTP는 월드 와이드 웹(www)의 기반이 되는 애플리케이션 계층 프로토콜로, 네트워크 장치 간에 정보를 전송함.
    • 웹에서 데이터를 주고 받는 서버-클라이언트 모델의 프로토콜.
      • 즉, 웹 브라우저가 서버와 통신하는 규칙임.
    • 주로 웹 페이지를 로드하는 데 사용됨.

1-1. HTTP 통신 방법.

  • 사용자가 웹사이트를 방문하면 브라우저가 웹 서버로 리소스 요청
    -> 해당 요청을 받은 웹 서버는 HTML, CSS와 같은 리소스를 응답함.
  • 클라이언트의 요청과 서버의 응답 사이에는 여러 프록시 서버가 있음.
    • 프록시 서버는 캐시를 저장하거나 보안을 위해 서버의 IP주소를 숨기는 등 다양한 역할을 함.
  • 모든 통신은 안전하게 이뤄지기 위해 TCP(Transmission Control Protocol) 연결을 사용함.

1-2. HTTP 요청.

  • HTTP 요청은 웹 사이트를 로드하거나 정보를 요청하기 위해 웹 브라우저 등이 서버로 보내는 데이터임.
    • 각 HTTP 요청서로 다른 유형의 정보를 전달하는 일련의 인코딩된 데이터를 전달함.
  • 요청에는 아래와 같은 것들이 포함됨.
    • HTTP 버전
    • URL
    • HTTP 메서드
    • HTTP 요청 헤더
    • (선택 사항) HTTP 본문
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept-Language: ko-KR
  • 브라우저가 위와 같은 HTTP 요청서버로 보냄.
    • 첫 줄에는 HTTP 요청 메서드, URL 경로, HTTP 프로토콜 버전 정보.
    • 두번째 줄부터 HTTP 요청의 헤더.
      • key:value 쌍으로 이뤄져 있고, 웹사이트 도메인의 호스트, 언어, 사용자의 브라우저 등 서버가 필요한 정보를 전달함.

1-2-1. HTTP 메서드

  • HTTP 메서드는 HTTP 요청이 서버에서 기대하는 작업을 나타냄.
  • 일반적인 ExGET, POST
    • GET요청은 응답으로 정보를 받음.
    • POST요청은 일반적으로 클라이언트가 웹 서버에 정보를 보내고 있음을 나타냄.

1-2-2. HTTP 요청 헤더.

  • HTTP 헤더키-값 쌍으로 구성된 텍스트 정보로, 모든 HTTP 요청응답포함됨.
  • 클라이언트브라우저 정보요청 데이터와 같은 핵심 정보를 전달합니다.


1-2-3. HTTP 요청 본문.

  • HTTP 요청 본문에는 웹 서버로 전송되는 정보가 포함됨.

1-3. HTTP 응답.

  • 클라이언트의 HTTP 요청에 대한 서버의 응답.
  • 아래와 같은 것들이 포함 되어있음.
    • HTTP 상태 코드
    • HTTP 응답 헤더
    • (선택 사항)HTTP 본문
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2023 14:28:02 GMT
Server: Apache
Content-Type: text/html

<html>
...
</html>
  • 요청에 문제가 없었다면 서버는 위와 같은 응답을 함.
    • 첫 줄에는 HTTP 프로토콜 버전 정보와 HTTP 상태 코드가 있음.
    • 둘째 줄부터 key:value 쌍은 모두 헤더임.
      • 브라우저가 필요한 정보를 전달해주고, 응답의 Body는 브라우저가 요청한 데이터.

1-3-1. HTTP 상태 코드

  • HTTP요청의 성공 여부를 나타내는 코드.
상태 코드의미
1XX- 정보 제공
2XX- 성공
3XX- 리다이렉션
4XX- 클라이언트 오류
5XX- 서버 오류

1-3-2. HTTP 응답 헤더.

  • HTTP 응답에는 본문에서 전송되는 데이터의 언어, 형식 등 중요한 정보를 전달하는 헤더가 함께 제공됨.


1-3-3. HTTP 응답 본문.

  • 성공적인 응답에는 요청된 정보가 포함되어 있음.

1-4. 무상태성 프로토콜(stateless protocol).

  • 무상태 프로토콜(stateless protocol)은 각 요청을 독립적인 트랜잭션으로 처리하는 통신 방식.
  • 서버가 클라이언트의 상태를 보존하지 않음.
    • 즉, 이전 요청과 다음 요청이 서로 관련성이 없음.
  • 각 요청은 이전 요청과 무관하게 처리됨.
  • 서버는 세션 정보나 상태를 저장하지 않음.

1-4-1. 장점.

  • 높은 확장성
    • 서버를 쉽게 확장할 수 있어 트래픽 증가에 대응하기 용이함.
  • 유연성
    • 요청을 여러 서버로 분산 처리할 수 있음
  • 단순성
    • 서버 설계가 간단.

1-4-2. 단점.

  • 데이터 전송량 증가
    • 클라이언트는 매 요청마다 필요한 모든 정보를 포함해야됨.
  • 상태 유지의 어려움
    • 로그인과 같이 사용자의 상태를 유지해야 하는 서비스에서는 무상태 방식을 사용하기 어려움.

2. HTTP, HTTPS의 차이점.

  • HTTP에서 브라우저와 서버는 데이터일반 텍스트로 교환하기 때문에 보안에 취약함.
    • 데이터를 암호화 하지 않고 전송하기 때문.
  • HTTP의 이러한 단점을 보완한 것HTTPS.
    • 브라우저와 서버가 데이터를 전송하기 전암호화된 연결을 생성함.
    • HTTPS는 모든 요청 및 응답을 SSL(Secure Socket Layer)TLS(Transport Layer Security) 프로토콜에 따라 암호화함.
    • 이를 통해 개인정보와 같은 민간한 정보를 보호할 수 있음.

3. Ref

profile
Every cloud has a silver lining.

0개의 댓글