HTTP   HyperText Transfer Protocol  

(2021-02-25)

http, 포트 80


1. HTTP 상에서 웹 서버웹브라우저 상호 간의 데이터 전송을 위한 응용계층 프로토콜
     - 처음에는, WWW 상의 하이퍼텍스트 형태의 문서를 전달하는데 주로 이용
     - 현재에는, 이미지,비디오,음성 등 거의 모든 형식의 데이터 전송 가능


2. HTTP의 특징

  ㅇ 요청 및 응답 메세지로 대응되는 구조
     - 동작형태가 클라이언트/서버 모델로 동작

         메세지 교환 형태의 프로토콜 
     - 클라이언트서버 간에 `HTTP 메세지`를 주고받으며 통신
        . SMTP 전자메일 프로토콜과 유사  ☞ 메일 메세지 포멧, MIME 참조

     * [참고]  HTTP 메세지의 구성 형태 
        . HTTP의 응답 및 요청 메세지 구성   ☞ HTTP 메세지(HTTP Message) 참조
           .. HTTP 요청 메세지 (HTTP 요청 메소드 : GET, POST, HEAD, PUT, CONNECT, UNLINK, LINK 등)
           .. HTTP 응답 메세지
        . HTTP 메세지헤더HTTP 헤더 참조
        . HTTP 메세지헤더 항목들의 구분 ☞ HTTP 헤더 항목 참조

  ㅇ  트랜잭션 중심의 비연결성 프로토콜
     - 종단간 연결이 없음 (Connectionless) 
     - 이전의 상태를 유지하지 않음 (Stateless)

  ㅇ 수송계층 프로토콜 및 사용 포트 번호TCP, 포트번호, 잘알려진 포트번호 참조
     - 수송계층 프로토콜 : TCP  
     - 사용 포트 번호    : 80번


3. HTTP의 표준 / 역사

  ㅇ HTTP 0.9 : 차후 정식 버전과 구분하기 위해 HTTP/0.9로 불리움 (1990년경)
     - HTML 문서를 요청해서 이를 가져오는 매우 단순한 초기의 프로토콜
        . 단일 라인 요청에 경로 제시 및 GET 메서드로써 문서를 가져오고 연결을 끊는 것이 전부
        . 즉, 요청에 데이터(바디)를 포함하지 않음

  ㅇ HTTP 1.0 : RFC 1945  (1996년) 
     - 유용한 초기 개념들 도입
        . HTTP 헤더 (요청,응답 모두에서 사용되며, 헤더,바디를 빈 줄로 분리)
        . HTTP 메서드
        . HTTP 응답 코드
        . 리다이렉트, 비지속 연결(non-persistent) 등

  ㅇ HTTP 1.1 : RFC 2068 (1997년) => RFC 2616 (1999년) => RFC 7230~7235  (1998년~) 
     * [참고] ☞ HTTP 표준 참조
     - HTTP 1.0 으로부터 기능 향상
        . HTTP 헤더Host 필드를 필수 항목으로 함 
           .. 따라서, 1개 IP 주소에 다수의 가상 호스팅이 가능해짐
        . HTTP 헤더 내 Accept 필드에 의한 컨텐츠 협상
        . HTTP 메소드 추가 및 조정 
           .. OPTIONS,CONNECT,TRACE 추가
           .. PUT,DELETE 필수로 됨
        . 잘 정의된 캐시 컨트롤
        . 블록 단위 인코딩 전송
        . 병렬 커넥션
           .. 여러 TCP 커넥션을 통한 동시 HTTP 처리 (실제 많이 사용됨)
           .. 또한, 요청 파이프라인을 통한 병렬 커넥션 처리도 가능 (실제 사용 거의 없음)
        . 지속 커넥션(persistent, 때론, 킵얼라이브 커넥션 라고도 함)을 통한 재사용 가능
           .. HTTP 1.0에서는 요청 헤더에 다음 헤더를 추가함으로써, Keep-Alive를 구현했으나,
           .. HTTP 1.1에서는 지속 커넥션 접속이 기본 동작이 됨
           .. (기존 TCP 연결을 끊지 않음으로써, 재연결에 따른 TCP 느린 시작에 의한 지연 방지)
        . 그 크기를 미리 알 수 없는 컨텐츠의 청크(chuncked) 전송 인코딩 지원
        . SSL/TLS에 의한 암호화 통신 지원


4.  HTTP의 인증, 보안

  ㅇ HTTP 인증 방식
     - 자체 인증 방식 : Basic 인증 및 Digest 인증
     - 기타 인증 방식 : 별도의 인증 모듈을 사용하여 직접 구현 (복잡하지만 보안성 강화됨)

  ㅇ HTTP 보안 버전 : HTTPS (Secure Hypertext Transfer Protocol)
     - 도청, 통신 상대방 위장, 임의 내용 변경 등 방지
        . SSL/TLS 등 다른 프로토콜들을 조합시켜 통신 내용을 암호화시킴


5.  HTTP의 중계프록시
     - 역할 : 다른 사람을 대신하여 무엇인가를 하는 것 (중개자)
     - 위치 : 클라이언트서버 사이에 위치
     - 특징 : 동일 프로토콜로 연결
     - 용도 : 캐싱, 영역 내 특정 사이트 접근 방지, 엑세스 로그 획득 등
  ㅇ 게이트웨이
     - 역할 : 프록시 처럼 중계 역할을 하나, HTTP 프로토콜 이외 기능 수행 (프로토콜 변환 등)
     - 특징 : 서로다른 프로토콜 간을 변환해주며 연결
     - 참고 : CGI 등
  ㅇ 릴레이 : 단순 프록시 (단순 중계)



Copyrightⓒ   차재복 (Cha Jae Bok)    " 정보통신 및 과학기술 지식을 간결하게 정리,체계화시키고 있습니다. "