12/09 HTTP

김성욱·2022년 12월 15일

HTTP


1. HTTP란?

  • Hypertext Transfer Protocol의 줄임말
  • 웹 상에서 브라우저와 서버가 데이터를 주고 받을 때 사용하는 프로토콜이다.
    • 프로토콜 : 통신 규약이라는 의미로 데이터를 주고 받는 방식에 대한 규칙
  • 이름에 포함된 하이퍼텍스트 뿐만아니라, 텍스트, 미드어 등의 데이터도 전송할 수 있다.

2. 특징

  • 클라이언트의 요청(request)와 서버의 응답(response)로 이루어진다.
  • TCP/IP 통신 위에서 동작한다.(80번포트)
    • TCP/IP
      • 인터넷 프로토콜 스위트(Internet Protocol Suite)로 온라인상의 안전하고 효율적인 데이터 전송의 필수 요건을 정의한다.
      • 2대의 기기 간에 데이터 전송을 담당하고 있다. 수백대의 컴퓨터 사이에서 활발하게 데이터가 공유되고 있는 것처럼 보여도 사실 모든 데이터 교환은 2대의 기기만 개입된다.
      • 인터넷과 이와 유사한 컴퓨터 네트워크 사이에서 정보를 주고 받는데 이용되는 통신 프로토콜 모음이다.
      • 전송 제어 프로토콜(Transmission Control Protocol:TCP)과 인터넷 프로토콜(Internet Protocol:IP)가 있다.
      • TCP : 한 기기에서 다른 기기로 데이터 전송을 담당한다.
      • IP : 데이터의 조각을 최대한 빨리 대상 IP주소로 보내는 것을 담당한다.
  • HTML 문서 외에도 단순 텍스트나 이미지, 오디오 등의 미디어 데이터도 전송 가능하다.
  • 비연결성(Connectionless)
    • 한가지 요청에 대한 응답을 받으면 연결을 끊어버린다.
      • 연결에 대한 리소스를 줄일 수 있는 장점이 있지만, 같은 클라이언트에서 오는 요청도 계속 연결/해제 해야한다.
  • 무상태(Stateless)
    • 비연결성의 특징때문에 서버는 클라이언트를 식별하지 못한다. 같은 클라이언트에서 계속 요청을 보내더라도 그 요청은 독립적이다.

3. HTTP 메소드

  1. GET : 데이터 조회
  2. HEAD : GET과 같지만 서버가 응답할 떄 Body 값없이 Header만 리턴
  3. POST : 서버에게 데이터 전송
  4. PUT : 요청 URI를 수정하거나 새로 추가하도록 요청
  5. PATCH : 서버의 데이터를 일부 수정
  6. DELETE : 요청 URI의 데이터를 삭제
  7. TRACE : 클라이언트로부터 수신한 요청을 응답에 포함시켜 전달
  8. OPTIONs : 서버에서 특정 데이터가 어떤 메소드를 지원하는지 알아볼때 사용
  • PUT은 요청시에 수정을 원하는 데이터에 대한 필드를 모두 채워서 보내야하지만, PATCH는 일부 필드만 채워도 된다.

4. URL이란?

  • URL(Uniform Resource Locators)은 서버에 자원(resource)를 요청하기 위해 입력하는 영문 주소입니다.

  • 숫자로 되어있는 IP주소보다는 훨씬 기억하기 쉽다는 장점이 있습니다.

  • 브라우저에서는 이렇게 url로 되어있는 HTTP 요청을 DNS(Domain Name System)를 통해 host에 해당하는 실제 IP 주소로 변환하여 서버에 요청(Request)을 보냅니다.

  • URL의 구조는 다음과 같습니다.


5. HTTP/1.1과 2.0의 차이

  • HTTP/1.1은 기본적으로 커넥션 당 하나의 요청과 응답만 처리한다.

  • 즉, 여러 개의 요청을 한 번에 전송할 수 없고 응답 또한 마찬가지다.

  • 따라서 HTML 문서 내에 포함된 여러 개의 리소스 요청, 즉 CSS 파일을 로드하는 link 태그, 이미지 파일을 로드하는 img 태그, 자바스크립트를 로드하는 script 태그 등에 의한 리소스 요청이 개별적으로 전송되고 응답 또한 개별적으로 전송된다.

  • 이처럼 HTTP/1.1은 리소스의 동시 전송이 불가능한 구조이므로 요청할 리소스의 개수에 비례하여 응답 시간도 증가하는 단점이 있다.

  • HTTP/2는 커넥션당 여러 개의 요청과 응답, 즉 다중 요청/응답이 가능하다.

  • 여러 리소스의 동시 전송이 가능하므로 HTTP/1.1에 비해 페이지 로드 속도가 약 50% 정도 빠르다고 알려져 있다.


profile
성욱

0개의 댓글