HTTP

1. HTTP(Hyper Text Transfer Protocol)

: HTTP란 웹서버와 클라이언트간의 문서를 교환하기 위한 통신규약이다.(실제로 어떤종류의 데이터든지 전송이 가능하다.)

  • HTTP는 웹환경에서 사용하는 TCP/IP 기반의 응용프로토콜이다.
  • HTTP는 연결상태를 유지하지 않는 통신규약이다. (연결상태를 유지 - FTP, Telnet)
  • HTTP는 Request - Response가 1:1로 호환된다.(Sync)
  • HTTP에서 HyperText의 의미는 데이터 자체를 전송하기보다는 링크기반으로 데이터에 접근하겠다는 의미이다.
  • Client - Server 방식으로 동작한다.(요청과 응답)

HTTP


2. Connectless Protocol

: HTTP는 클라이언트가 서버에 요청하고, 응답을 받으면 연결을 유지하지 않고 끊어버린다. 이러한 방식으로 인해 하기와 같은 특징이 있다.

  • 장점 : 불특정 다수를 대상으로 서비스가 가능하다. 계속해서 새로운 클라이언트와 연결하고 연결을 해지하기 때문에 더 많은 클라이언트의 요청을 처리할 수 있다.

  • 단점 : 요청한 클라이언트와의 이전 요청에 대한 결과 등과 같은 클라이언트의 이전상태를 알 수 없다. 로그인 세션 등의 정보를 유지할 수 없다.

따라서 Cookie를 사용하여 클라이언트의 이전상태를 확인한다.Cookie는 클라이언트와 서버의 상태 정보를 가지고 있기 때문이다.(DB를 이용하여 클라이언트 정보와 상태를 저장하기도 한다.)


3. HTTP Method

: Method는 클라이언트의 요청방식이다.

일반적으로 HTTP POST, HTTP GET을 이용하여 개발을 진행한다. 그렇게 해도 상관없기 때문이다. 하지만 실제로 HTTP 규격에서는 HTTP의 Method를 아래와 같이 구분하고 있다.

  • GET(SELECT) : 데이터를 요청한다.
  • POST(INSERT) : 데이터를 삽입한다.
  • PUT(UPDATE) : 데이터를 업데이트한다.
  • DELETE(DELETE) : 데이터를 삭제한다.
  • HEAD(CHECK) : HTTP Header 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
  • OPTIONS : 웹서버가 지원하는 HTTP Mehtod 목록을 요청한다.
  • TRACE : 클라이언트의 요청을 그대로 반환한다.

Ref : HTTP의 Method


  • RESTFUL 과 HTTP Method
    흔히 Restful API를 설계/개발한다고들 한다. Restful의 제약사항/목표는 여러가지 것들이 존재하지만, HTTP Method 관점에서 Restful하다는 것은 HTTP Method들을 원래의 목적에 맞게 사용하는 것을 의미한다.
  1. 회원 가입 URI : [POST] /admin/member
  2. 회원 수정 URI : [PUT] /admin/member
  3. 회원 조회 URI : [GET] /admin/member
  4. 회원 삭제 URI : [DELETE] /admin/member

4. HTTP Status Code

: HTTP Response 의 상태코드

  • 1xx : Informational - 정보교환영
  • 2xx : Success - 성공(방식에 따라 다름)
  • 200 : OK - 성공
  • 3xx : Redirection - 방향 지정(해당페이지로 이동합니다.)
  • 301 : Moved Permanently - 요청 페이지의 영구적인 위치 변화
  • 302 : Found - 요청 페이지의 일시적인 위치 변화
  • 4xx : Client Error - 클라이언트 오류
  • 404 : Not Found - 요청받은 자원을 서버에서 찾을 수 없을때 나타나는 상태
  • 405 : Method Not Allowed - 서버에서 사용자가 요청한 주소의 메소드를 지원하지 않을때 나타남
  • 5xx : server Error - 서버 오류

5. HTTP 1.0 VS HTTP 1.1 VS HTTP/2

  • HTTP 1.0
  1. Client, IP Adress가 1:1
  2. 매번 필요시 Connection을 Open / Close
  3. 하나의 Request/Response에 요청 신규 Connection 생성
  • HTTP 1.1(HTTP 1.0 호환)
  1. Client, IP Adress가 1:N(하나의 IP Adress로 여러개의 WebSite 연결 가능, HTTP Request Header에 Host를 사용해야함.)
  2. 필요시 Multi Connection을 Open / Close
  3. 여러개의 Request/Response들이 기존 Connection 활용 가능
  4. OPTION HTTP Method 지원
  5. 캐싱 기능 제공
  6. HTTP Status Code 추가
  • HTTP 2.0(HTTP 1.1 호환)
  1. HTTP Header 데이터 압축(웹페이지 렌더링 시 요청 횟수를 줄여줌)
  2. Server Push 추가(Client 요청 없이 Server에서 Resource 제공 가능)
    Ref : HTTP의 변화