[네트워크] HTTP란?
Network

[네트워크] HTTP란?

728x90

 

정말 많이보고 주소창에 입력도 많이한 HTTP. 오늘은 이 HTTP에 대해서 알아보겠습니다!


HTTP란?

HTTP는 HyperText Transfer Protocol의 줄임말입니다. 직역을 하면 하이퍼텍스트 전송 프로토콜이죠.

 

하이퍼텍스트(HyperText)가 뭐에요?

기존의 책에서 보이는 글처럼 선형적인 텍스트가 아니라, 문장이나 단어 등이 링크를 통해 서로 연결된 형태의 비선형 텍스트를 뜻합니다. 일반 글 뿐만이 아니라 하이퍼텍스트 문서는 사용자가 원하는대로 쉽게 이동할 수 있도록 하이퍼링크(하이퍼텍스트 문서끼리 연결이 되는 링크)를 포함할 수 있습니다. 하이퍼텍스트의 대표적인 예시는 HTML 문서입니다.

 

따라서 다시한번 뜻을 살펴보면 이 하이퍼텍스트 문서(HTML)을 전송하기 위한 프로토콜이라는 거네요!! 아하!!

 

근데 프로토콜(Protocol)은 뭐죠? ㅜㅜ

프로토콜은 규칙(약속)이라는 뜻을 가지고 있습니다. 규칙이 정해져있지 않으면 통일성이 없이 무분별하게 여러가지 전송방법이 생겨나고, 그만큼 개발자와 사용자는 많은 불편을 겪게될것입니다. 따라서 네트워크에서 하이퍼텍스트를 전송할때는 이 프로토콜(규칙)으로 보내야한다는 뜻의 규칙이 HTTP입니다.

 

따라서 웹 문서(하이퍼텍스트 문서)를 주고받을 때는 HTTP를 사용하고, 파일을 주고받을 때는 FTP 전송, 메일은 SMTP, POP 등 전달하는 데이터유형에 따라 여러 프로토콜이 존재합니다.


HTTP의 버전과 역사

  • HTTP/0.9 (1991년) : GET 메서드만 지원, HTTP 헤더 없음
  • HTTP/1.0 (1996년): 메서드, 헤더 추가(HTML 이외 다른 파일 전송 가능)
  • HTTP/1.1 (1997년): 현재 HTTP/1.1 을 주로 사용 (TCP 기반)
  • SPDY: 구글이 만든 프로토콜, HTTP 속도를 개선시키기 위해 만들어졌습니다. 대표적인 기능은 다음과 같습니다.
    • 헤더를 압축하는 기능
    • 하나의 TCP 커넥션에 여러 요청을 동시에 보내는 기능
    • 클라이언트가 요청을 보내지 않아소 서버가 리소스를 푸시하는 기능
  • HTTP/2 (2015년): SPDY 프로토콜을 기반으로 만들어졌으며 성능이 개선됨. 1.1은 커넥션 하나에 여러개의 파일을 전송할 수 있는 1개의 파이프라인을 연결하는데, 2.0은 커넥션하나에 여러개의 파이프라인 연결 (TCP 기반)
  • HTTP/3 (2019년): 성능 개선. UDP기반의 프로토콜인 QUIC를 사용하여 통신.
    • QUIC (Quck UDP Internet Connection): UDP를 사용하여 인터넷을 연결하는 프로토콜

참고로 특정 웹에서 HTTP 버전을 보고싶다면 이렇게 하시면 됩니다!

  1. f12를 눌러서 개발자 툴 열기
  2. 네트워크 탭으로 이동
  3. 위에 테이블 헤더에서 오른쪽 클릭 후 프로토콜 선택

아마 대부분이 HTTP/1.1 로 보일것이고, h2는 HTTP/2, h3은 HTTP/3을 의미합니다. 구글은 역시 h3 더군요.. 


HTTP의 특징

HTTP는 크게 3가지 특징을 가지고 있습니다

  • 클라이언트-서버 구조
    • HTTP는 클라이언트가 서버에 요청을 보내면, 서버는 응답을 주는 클라이언트-서버 구조로 이루어져있습니다.
  • 무상태 프로토콜(Stateless)
    • 클라이언트가 서버에게 요청을하면 서버가 응답을 주지만, 서버에서는 그 클라이언트의 상태를 보존하지 않습니다. 한번 해당 요청에 대한 처리를 하면 다시 남남이 되어 다음 요청을 하면 아예 새롭게 처리를 하게됩니다.
    • 장점: 서버 확장성이 높습니다.
      • 예를 들어 클라이언트가 하나 있고 서버A, 서버B가 있습니다. 서버에서 상태를 유지해주는 것을 전제로 처리한다면, 만약 클라이언트가 서버A와 통신중이라면 항상 서버A가 응답해주어야합니다
  • 비연결성 (Connectionless)
    • HTTP는 기본이 연결을 유지하지 않는 모델입니다. (HTTP/1.0 기준)
    • 서버에 요청을 보내고 응답을 받기위해서는 서버와의 연결이 필요하겠죠, 하지만 기본적으로 빠르게 응답을 제공할 수 있기때문에 계속해서 연결을 유지하고 있지는 않습니다. 

 

출처:
- [네트워크/HTTP] HTTP란? – 특징(무상태와 비 연결성)
- Http 프로토콜 버전별 정리

 

728x90