Server 01 - HTTP


HTTP

HyperText Transfer Protocol, 웹에서 클라이언트(브라우저)와 서버가 통신할 때 사용하는 통신 규약. 통신 규약은 통신에 참여한 주체들이 합의한 메세지 형식을 의미한다. HTTP의 특징은 다음과 같다.

  • 비연결성
    • 브라우저가 서버에 특정 문서를 요청하는 순간, 잠시 서버와 연결했다가 응답이 완료된 후 바로 끊어짐
  • 무상태
    • 웹 서버와 웹 클라이언트 상태 정보가 유지하지 않음. 상태 정보 유지하기 위해선 쿠키나 세션이 필요

HTTP 구조

HTTP 요청 URL 구조

http:(1) //(2) localhost(3) :8080(4) /Application/board/index.html(5)
  1. http: 프로토콜 사용
  2. //: 프로토콜 사용 구분자
  3. localhost: 호스트 도메인
  4. 8080: 포트, 호스트 도메인에 연결된 포트 번호
  5. /Application/board/index.html 웹 어플리케이션 파일

HTTP 요청 프로토콜 구조

  1. start-line
    • 요청 방식 / 요청 URI / 프로토콜 버전 정보
    • GET BoardWeb/board/login.html HTTP/1.1
  2. message-header
    • 키:값 형태로된 브라우저 정보
  3. CRLF
    • Carriage Return Line Feed, 메세지 헤더/바디 구분자
  4. message-body
    • 사용자 입력 정보. 요청 방식에 따라 달라짐

HTTP 응답 프로토콜 구조

  1. status-line
    • 프로토콜 버전 / 상태 코드 / 상태 메세지 정보
  2. message-header
    • 키:값 형태로된 서버가 응답한 문서 정보
  3. CRLF
    • Carriage Return Line Feed, 메세지 헤더/바디 구분자
  4. message-body
    • 브라우저가 요청한 파일/문서

요청 방식(method)

  • GET: 조회
    • 사용자 입력 정보가 URI뒤 쿼리 문자열로 물음표뒤 키=값 형태로 포함됨
    • GET /BoardWeb/login?id=zzz&pw=dwdw HTTP/1.1
  • POST: 등록
    • GET과 달리, 사용자 입력 정보가 message-body에 포함됨
    • URI로 주요 정보 노출 방지
    • POST /BoardWeb/login HTTP/1.1
  • PUT: 수정
  • DELETE: 삭제

요청 URI

  • URL: Uniform Resource Locator, 요청시 사용
  • URI: Uniform Resource Identifier, URL에서 포트번호 이후 문자열을 의미
    URL: http://localhost:8080/Application/board/index.html  
    URI: /Application/board/index.html
    

응답 상태 코드 / 메세지

  • 200 / OK : 정상 처리
  • 403 / Forbidden : 브라우저가 요청한 파일에 접근 불가
  • 404 / Not Found : 브라우저가 요청한 파일이 서버에 없음
  • 405 / Method Not Allowed : 브라우저가 요청한 방식(method)이 서버에서 지원 불가
  • 500 / Internal Server Error : 브라우저가 요청한 기능을 서버에서 처리하다 난 오류