• HTTP : Hyper Text Transfer Protocol

  • MIME 타입 : HTTP를 통해 전송되는 객체의 데이터 포맷 라벨

    text/html : HTML 문서
    text/plain : 일반 텍스트
    image/png : PNG 이미지
    video/quicktime : Apple Quicktime 비디오
    
  • text/html, text/plain, image/png, video/quicktime 등

  • URI : Uniform Resource Identifier

    • URL : Uniform Resource Locator - 흔히 쓰이는 웹 주소 형태
    http:// : Scheme. 리소스에 접근하기 위해 사용되는 프로토콜
    dev-lr.com : 서버의 인터넷 주소
    index.html : 서버의 리소스 이름
    
    <http://dev-lr.com/index.html>
    
    • URN : Uniform Resource Name - 특정 리소스의 고유한 이름
    urn:ietf:rfc:2141
    
  • HTTP 트랜잭션 : 서버와 클라이언트가 HTTP 메시지를 주고받음

    • 메서드 : 각각의 요청 메시지에 포함되는 동작 명령

      GET 서버에서 리소스를 가져오라
      PUT 클라이언트에서 보낸 리소스를 서버에 저장하라
      DELETE 클라이언트가 지정한 리소스를 서버에서 삭제하라
      POST 클라이언트에서 서버로 데이터를 보내라
      HEAD 지정한 리소스의 HTTP 헤더만 보내라
    • 상태 코드 : 각각의 응답 메시지에 포함되는 요청 결과값

      200 OK. 올바른 응답
      302 리소스가 다른곳으로 이동됨
      404 리소스를 찾을 수 없음
  • HTTP 메시지 : 트랜잭션에서 오가는 요청/응답 내용

    • 시작줄 : 메서드, 상태 코드 등

      GET /text/example.txt HTTP/1.0
      
      HTTP/1.0 200 OK
      
    • 헤더 : MIME 타입 등

      Accept: text/*
      Accept-Language: en, fr
      
      Content-type: text/html
      Content-length: 19
      
    • 본문 : 실질적인 데이터

      • 텍스트, 이미지, 비디오 등 모든 데이터
  • TCP 커넥션 : Transmission Control Protocol

    • 오류 없는 데이터 전송
    • 순서에 맞는 전달(Queue)
    • 조각나지 않는 데이터 스트림(크기제한 없음)
    • IP주소, 포트번호 이용
  • HTTP 프로토콜 버전

    • HTTP/0.9 : 1991년 사용. GET 메서드만 지원. 간단한 HTML 객체 처리만 가능
    • HTTP/1.0 : 널리 쓰이기 시작. 헤더, 추가 메서드, 멀티미디어 등 다양한 객체 처리 추가
    • HTTP/1.0+ : keep-alive 커넥션, 가상 호스팅, 프록시 연결 지원 추가
    • HTTP/1.1 : 기존 HTTP 설계의 구조적 결함을 교정하고 성능을 최적화. 현재 널리 쓰이는 버전
    • HTTP/2.0 : 구글의 SPDY 프로토콜 기반으로 개발중
  • 웹의 구성 요소

    • 프록시
      • 클라이언트와 서버 사이의 HTTP 중개 역할
      • 사용자 대신 서버에 접속하는 역할. 보안을 위해 사용
      • 특정 컨텐츠 차단, 바이러스 검출 등
    • 캐시
      • 자주 접속되는 웹 데이터가 저장되는 프록시 서버
      • 속도 향상을 위해 사용
    • 게이트웨이
      • 다른 애플리케이션과 연결된 웹 서버
      • HTTP 트래픽을 다른 프로토콜로 변환
    • 터널
      • HTTP 통신을 단순히 전달만 하는 프록시
      • 특정 커넥션 내에서 양측의 데이터를 검증하지 않고 그대로 전달만 하는 역할
    • 에이전트
      • 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램
      • 웹 브라우저, 크롤러 등