HTTP는 무엇이고 특징이 뭘까?

younoah·2022년 1월 15일
0

[WEB]

목록 보기
1/7

📕 HTTP란?

HTTP(Hypertext Transfer Protocol)는 하이퍼링크가 담겨있는 텍스트 파일(텍스트뿐만 아니라 다양한 미디어 포함)을 전송하기 위한 규약을 의미한다.

📙 HTTP의 특징

1. Stateless 프로토콜이다.

HTTP로 어떤 한가지의 요청을 보낼때는 상태가 존재하지 않는다. 즉 클라이언트가 서버에게 요청을 보낼 때 서로 다른 요청은 독립적이다.

예를들어 test.com/page1 요청 후 test.com/page2 를 요청하는 경우, 이 둘의 요청은 서로 연관성을 가지지 않고 독립적이다. 즉, page1에서 만들어진 데이터는 page2를 요청할 때 유지되지 않는다.

하지만 상태가 필요한 경우가 있을수 있다. 예를들어 사용자가 로그인을 했는지에 대한 정보를 저장해놓고 서버에게 요청을 해야하는 경우일 때이다.

이때는 HTTP 쿠키를 사용하면 상태를 저장하는 Session을 사용할 수 있다.

응답(Response) 헤더에 아래와 같이 Set-Cookie 를 명시하면 이를 받은 브라우저는 자동으로 쿠키에 데이터를 저장한다.

Set-Cookie: <cookie-name>=<cookie-value>

이후에 상태가 필요한 요청을 보낼때 아래와 같이 요청(Request) 헤더에 Coockie 를 명시하여 브라우저가 가지고 있는 쿠키들을 요청에 담아서 전송할 수 있다.

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry

HTTP 쿠키 자세히보기
HTTP 쿠키는 서버가 웹 브라우저에 전송하는 작은 데이터 조각이다. 브라우저는 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재요청 시 저장된 데이터를 함께 전송한다. 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용하며, 이를 통해 사용자의 로그인 상태를 유지할 수 있다.


2. 클라이언트-서버 프로토콜

HTTP는 요청(request)과 응답(response)으로 이루어진 규약이다. 클라이언트(브라우저)에서 서버에게 URL을 통해 요청을 보내고 응답을 받는 방식이다.

request-response

(이미지 출철: 캡틴판교님 블로그)


📔 HTTPS란?

HTTPS(Hypertext Transfer Protocol Secure)은 기존 HTTP에서 보안이 추가된 버전이다.

서버와 클라이언트간에 요청과 응답을 하는 과정에서 중간에 악의적으로 데이터를 가로챌수가 있다.

기존 HTTP에서는 서버와 클라이언트간에 요청과 응답을 하는 과정에 암호화가 되어있지 않다. 따라서 중간에 가로채면 데이터가 온전히 노출되기 때문에 보안적으로 취약하다.

반면에 HTTPS를 사용한다면 SSL이나 TLS와 같은 암호화방식을 이용해 요청과 응답을 암호화 하여 소통할 수 있기 때문에 안전하다.

이렇게 암호화하여 소통할 수 있는 이유는 간단하게 말해서 요청과 응답을 하는 서버와 클라이언트간에 서로 보안관계가 형성되d


📗 HTTP의 버전

HTTP는 HTTPv1HTTPv2 버전이 있다. 둘의 가장 큰 차이점은 효율성보안성이다.

HTTP v1

  • HTTP 혹은 HTTPS 모두 사용이 가능하다.
  • 클라이언트와 서버간에 통신을 할 때 텍스트를 기반으로 통신을 한다. 따라서 다른 사람이 통신하는 내용을 보면 바로 이해가 가능하기 때문에 보안에 취약하다.
  • 헤더를 압축하지 않는다. 따라서 크기가 크므로 효율적이지 않고 정보가 그대로 노출되어있다.
  • 한번에 하나의 파일만을 주고 받을 수 있다.

HTTP vs2

  • HTTPS만 사용이 가능하다.
  • 클라이언트와 서버간에 통신을 할 때 텍스트가 아닌 binary raw 데이터 형태로 통신을 한다. 따아서 제 3자가 해당 통신을 보아도 그대로 이해하기 힘들다.
  • 헤더를 압축해서 통신하기 때문에 효율적이다.
  • 여러개의 파일을 동시에 주고 받을수 있다.

📘 HTTP 통신과정

  1. 클라이언트 서버가 통신을 하기위해 HTTP를 사용하면 첫번째로 TCP 커넥션이 생긴다.
  2. 클라이언트가 서버에게 요청(Request)을 보낸다.
  3. 요청에 맞게 서버가 보내준 응답(Response)을 읽는다.
  4. 연결을 닫거나 다른 요청을 위해 연결을 재사용한다.

TCP(전송 제어 프로토콜)

  • 두 개의 호스트를 연결하고 데이터를 교환하게 해주는 중요한 네트워크 프로토콜이다.
  • TCP 통신을 할 때 서버가 통신할 준비가 되어 있는지, 서로 연결해서 데이터를 주고 받을 수 있는지 확인한다. 여기서 준비가 되었다면 통신을 하게 되고, 준비가 안 되었다면 서버가 준비가 안 됐다는 메시지 혹은 에러를 사용자에게 보여줄 수 있다.
  • TCP는 데이터와 패킷이 보내진 순서대로 전달되는 것을 보장해준다. TCP의 역할은 에러가 없이 패킷이 신뢰할 수 있게 전달되었는지 보증해주는 것이다.

참고하면 좋은 사이트
https://velog.io/@bky373/Web-HTTP%EC%99%80-HTTPS-%EC%B4%88%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC

profile
console.log(noah(🍕 , 🍺)); // true

0개의 댓글