본문 바로가기
Computer Science/네트워크

HTTP 개관

by devstep 2022. 3. 28.

HTTP 개관

  • 웹 브라우저와 웹 서버가 기본적인 트랜잭션(요청 명령과 응답 결과)을 구현하기 위해 어떻게 메세지를 주고 받는지 알아본다.

학습목표

  • 얼마나 많은 클라이언트가 서버와 통신하는지
  • 리소스가 어디서 오는지
  • 웹 트랜잭션이 어떻게 동작하는지
  • HTTP 통신을 위해 사용하는 메세지의 형식
  • HTTP 기저의 TCP 네트워크 전송
  • 여러 종류의 HTTP 프로토콜
  • 인터넷 곳곳에 설치된 다양한 HTTP 구성요소

리소스

  • 웹 리소스 : 웹에 콘텐츠를 제공하는 모든 것
  • 정적 파일
  • 동적 파일 : 요청에 따라 콘텐츠를 생산하는 프로그램 통해 생산

미디어 타입(MIME 타입)

  • 웹서버는 모든 HTTP객체 데이터에 MIME 타입을 붙인다.

  • 웹브라우저는 서버에서 객체를 받을 때 다룰 수 있는 객체인지 MIME 타입을 통해 확인

  • 구성 : 주 타입/부 타입

    MIME type 설명
    text/html html로 된 텍스트 문서
    text/plain plain ASCII 텍스트 문서
    image/jpeg JPEG 이미지
    imge/gif GIF 이미지
    video/quicktime 애플 퀵타임 동영상
    application/vnd.ms-powerpoint 파워포인트 프레젠테이션

URI

  • 서버 리소스 이름
  • 통합 자원 식별자(uniform resource identifier)
  • 웹서버 리소스는 각자 이름을 갖고 있고, 클라이언트는 리소스를 지목할 수 있다.
  • HTTP는 주어진 URI로 객체를 찾아온다.
http://www.joes-hardware.com/specials/saw-blade.gif
* 프로토콜-서버-리소스
  • URI(자원 식별자)에는 URL과 URN이 있다.

URL

  • 통합 자원 지시자(uniform resource locator)
  • 리소스 식별자의 가장 흔한 형태
  • 특정 서버의 한 리소스에 대한 구체적인 위치 서술
  • 리소스에 대한 주소
  • 오늘날 대부분의 URI는 URL이다.
  • URL은 리소스가 어디에 있고, 어떻게 접근할 수 있는지 분명히 알려준다.
http://www.oreilly.com/index.html
ftp://joe:tools4u@ftp.joes-hardware.com/locking-pliers.gif
 스킴(어떻게)-서버의 인터넷주소(어디에)-웹서버 리소스(무엇을)
- 스킴(리소스에 접근하기 위해 사용하는 프로토콜)

URN

  • uniform resource name
  • 리소스의 위치에 영향 받지 않은 유일무이한 이름 역할
  • 리소스를 옮기더라도 문제 없이 동작
  • 여러 종류의 네트워크 접속 프로토콜로 접근해도 문제 없다.
  • 리소스 위치 분석을 위한 인프라 지원이 필요

트랜잭션

  • HTTP 트랜잭션은 요청 명령응답 결과로 구성되어 있다.

메서드

  • 여러 종류의 요청 명령을 지원
HTTP메서드 설명
GET 지정한 리소스를 보내라
POST 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라
PUT 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라
PATCH
DELETE 서버 리소스를 삭제하라
HEAD 지정한 리소스에 대한 응답에서 HTTP 헤더 부분만 보내라

상태코드

  • HTTP 응답 메세지는 상태 코드와 함께 반환된다
HTTP 상태코드 설명
200 문서가 바르게 반환되었다
302 다시 보내라. 다른 고셍 가서 리소스를 가져가라
404 리소스를 찾을 수 없다

웹페이지는 여러 객체로 이루어질 수 있다.

  • 웹페이지는 보통 리소스의 모음이다.
  • 예시) 시각적으로 풍부한 웹페이지를 가져올 때 대량의 HTTP 트랜잭션을 수행한다.
    • 레이아웃 서술 : HTML 뼈대
    • 첨부된 이미지
    • 그래픽 조각
    • 자바 애플릿
  • 추가로 HTTP 트랜잭션들을 수행한다.

메세지

  • HTTP 메세지는 단순한 줄 단위의 문자열이다.
  • 요청 메세지 : 웹 클라이언트에서 웹 서버로 보낸 HTTP 메세지
  • 응답 메세지 : 서버에서 클라이언트로 가는 메세지

아래 3부분으로 이뤄진다

  • 시작줄
    • 요청은 무엇을 해야하는지
    • 응답은 무슨 일이 일어났는지 나타냄
  • 헤더
    • 헤더 필드가 0개 이상 이어진다.
    • : 로 구분되고, 이름과 값으로 구성된다.
    • 헤더는 빈 줄로 끝난다.
  • 본문
    • 어떤 종류의 데이터든 들어갈 수 있다.
    • 본문은 텍스트 뿐아니라 임의의 이진 데이터를 포함할 수 있다.

TCP커넥션

  • 어떻게 메세지가 TCP커넥션을 통해 한 곳에서 다른 곳으로 옮겨가는지 확인해보자.

TCP/IP

  • HTTP
    • 애플리케이션 계층 프로토콜
    • HTTP는 신뢰성 있는 TCP/IP 프로토콜에게 네트워크 통신을 맡긴다.
  • TCP/IP는 TCP와 IP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합이다.
  • TCP 커넥션이 맺어지면, 메세지가 없어지건, 손상되건, 순서가 뒤바뀌어 수신되는 일은 없다.
  • TCP가 제공하는 것
    • 오류 없는 데이터 전송
    • 순서에 맞는 전달 (데이터는 언제나 보낸 순서대로 도착한다)
    • 조각나지 않는 데이터 스트림(언제든 어떤 크기로든 보낼 수 있다)

접속

  • 메세지 전송을 위해서는 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야 한다.
  • TCP에서는 서버 컴퓨터에 대한 IP 주소와 그 서버에서 실행 중인 프로그램이 사용 중인 PORT 번호가 필요하다.
  • IP와 PORT는 URL을 통해 알아낸다.
    • URL은 리소스에 대한 주소이다.
    • URL은 리소스를 가지고 있는 장비에 대한 IP주소를 알려줄 수 있다.
  • 웹 브라우저가 HTTP를 이용해 서버의 HTML 리소스를 사용자에게 보여주는 순서
    1. 웹브라우저는 서버의 URL에서 호스트 명을 추출한다.
    2. 웹브라우저는 서버의 호스트 명을 IP로 변환한다. (DNS를 통해)
    3. 웹브라우저는 URL에서 포트번호를 추출한다.(포트 없는 경우 80)
    4. 웹브라우저는 웹 서버와 TCP 커넥션을 맺는다.(TCP/IP프로토콜에게 네트워크 통신을 맡긴다)
    5. 웹브라우저는 서버에 HTTP 요청을 보낸다.
    6. 서버는 웹브라우저에 HTTP 응답을 돌려준다.
      (클라이언트는 서버에서 HTTP 응답을 읽는다.)
    7. 커넥션이 닫히면, 웹브라우저는 문서를 보여준다.
  • drawing

참고자료

댓글