HTTP 란?

Dean H. Park·2020년 8월 25일
2

네트워크

목록 보기
1/2
post-thumbnail

잠깐! 🙌🏻

Stateful

Client의 이전 상태를 저장하는 것을 말한다. Client의 상태를 서버가 저장하여, 정보로써 활용한다.

Stateless

Client의 이전 상태를 저장하지 않는다. 웹 서버가 사용자의 작업을 저장하지 않는다.

URI(Uniform Resource Identifier)

URI는 숫자, 문자 및 기호의 짧은 문자열을 사용하여 문서를 식별하기위한 표준이다. RFC 3986-URI에 정의 되어있다. URL, URN 및 URC는 모두 URI 유형이다.



HTTP

HTTP는 Hypertext Transfer Protocol의 약자이며, 웹 검색에 사용되는 통신 프로토콜 이다.

이 프로토콜은 클라이언트가 웹 서버에 HTTP 요청을 하고, 해당 서버가 브라우저에 표시되는 리소스로 응답하는 메시지 기반 모델을 사용한다.

모든 HTTP 상호 작용에는 요청과 응답을 포함한다. 본질적으로 HTTP는 Stateless이다.

Stateless는 모든 요청이 서로 분리되어 있으므로, 모든 요청이 요청을 수행하기에 충분한 정보를 자체적으로 포함해야 함을 의미한다. 즉, HTTP의 메시지 기반 모델의 각 트랜잭션은 각각 별도로 처리된다.

URL

URL (Uniform Resource Locator)은 웹에서 리소스를 식별하는데 사용되는 웹 주소이다.

웹은 시작부터 텍스트/HTML 파일, 문서, 이미지 등을 공유하는 플랫폼이었으며, 리소스의 모음이다.

프로토콜 (Protocol)

대부분의 프로토콜인 HTTP (또는 HTTPS) 외 프로토콜은 다음과 같다.

  • FTP (File Transfer Protocol)
    네트워크를 통해 클라이언트와 서버간에 파일을 전송하는데 사용되는 표준 프로토콜

  • SMTP (Simple Mail Transfer Protocol)
    이메일 전송 표준 프로토콜

  • 도메인 (Domain)
    리소스가있는 하나 이상의 IP 주소를 식별하는데 사용되는 이름

  • Path
    서버의 리소스 위치를 지정

  • 파라미터 (Parameters)
    서버에서 리소스를 식별하거나 필터링하는데 사용되는 추가 데이터


HTTP Requests

HTTP 요청은 URL 주소를 동반하며, 다음과 같은 Method가 필요하다.

  • GET : read
  • PUT : update
  • POST : create
  • DELETE : delete

모든 HTTP message에는 하나 이상의 헤더와 optional한 message body가 있다. body는 요청과 함께 전송 될 데이터 또는 응답과 함께 수신된 데이터가 포함된다.

모든 HTTP 요청의 첫 부분에는 세 가지 요소가 있다.

GET /list/search_result?user=vw+king HTTP/1.1

URL에 "?"는 검색어가 포함되어 있음을 의미한다. 즉, 요청 된 리소스의 parameter 를 보낸다.

  • 첫 번째 : 사용된 HTTP method
  • 두 번째 : 요청 된 URL
  • 세 번째 : 사용중인 HTTP 버전

HTTP 요청에는 다음과 같이 몇 가지 참고해야 할 사항이 있다.

  • Referer header
    요청이 시작된 URL.

  • User-Agent header
    요청을 생성하는데 사용되는 브라우저에 대한 추가 정보.

  • Host header
    동일 서버에서 여러 웹 페이지를 호스팅 할 때, 호스트 식별 위해 필요.

  • Cookie header
    클라이언트에 추가적인 parameter 제출.

  • DNT (Do Not Track)
    HTTP 요청 시, 브라우저에서 DNT를 헤더에 추가하여, 사이트로 하여금 유저가 정보를 추적 당할지에 대한 여부 확인 가능

  • Cache-Control
    요청/응답 내 단방향성 캐싱 메커니즘을 위한 디렉티브 정의가능.

  • Connection : Keep-Alive
    연결된 socket IN/OUT의 access가 정의된 시간 동안 연결된 상태 유지하여 비용절감을 통한 Stateless 단점 커버 가능.


HTTP Responses

HTTP 요청과 마찬가지로 HTTP 응답도 세 항목으로 구성된다.

HTTP/1.1 200 OK

  • 첫 번째 : 사용중인 HTTP 버전
  • 두 번째 : 요청 결과 숫자 코드
  • 세 번째 : 두 번째 설명글

HTTP 응답에도 참고해야 할 사항이 있다.

  • 서버 헤더
    사용중인 웹 서버 소프트웨어에 대한 정보.
  • Set-Cookie header
    브라우저에 쿠키 설정.
  • Message body
    HTTP 응답 Message body.
  • Content-Length header
    바이트 단위의 메시지 본문 크기.

HTTP Methods

  • GET
    GET 요청은 자원 상태를 변경하지 않으므로, 데이터가 수정되지 않은 지정된 자원에서 데이터를 요청하는데 사용
  • POST
    자원을 만들기 위해 서버에 데이터를 보내는데 사용.
  • PUT
    request body의 contents를 사용하여, 서버의 기존 자원을 업데이트.
  • HEAD
    GET과 동일하게 response에 header가 포함되만, 본문은 미포함.
    GET 요청 전, 리소스가 있는지 확인하는데 사용.
  • TRACE
    진단 목적으로, 요청 메시지의 정확한 내용을 body에 반환.
  • OPTIONS
    대상 서버에서 사용할 수 있는 HTTP 메서드 반환.
  • PATCH
    전체를 수정하는 PUT과 달리, 부분만 수정.
  • DELETE
    지정한 자원 삭제.

REST

REST (Representational State Transfer)는 요청 및 응답의 현재 시스템 리소스 상태를 나타내는 아키텍처 스타일이다.

일반적인 방법
http://carapp.com/search?make=wv&model=beetle
REST:
http://carapp.com/search/vw/beetle

HTTP Headers

HTTP Header는 두 번째 줄 부터 추가되며, 콜론으로 구분 된 이름 : 값 쌍으로 정의된다. HTTP Header는 요청 또는 응답과 함께, 추가 parameter를 보내는데 사용된다.

용도에 따라 4가지로 분류된다.

  • General header
    요청 및 응답 메시지 모두에서 사용할 수 있으며, 교환되는 데이터와 독립적.
  • Request header
    요청 된 데이터에 대한 parameter 또는 요청하는 클라이언트에 대한 중요한 정보를 제공하는 parameter 정의.
  • Response header
    수신 응답에 대한 정보 포함.
  • Entity header
    메시지 본문을 구성하는 내용 설명.

HTTP 상태 코드

모든 HTTP 응답 메시지는 요청 결과를 알려주는 HTTP 상태 코드를 첫 줄에 포함해야 한다.

  • 1xx : 정보
  • 2xx : 요청 성공
  • 3xx : 리다이렉션
  • 4xx : 요청 에러
  • 5xx : 서버 에러

(관련 문서)

HTTPS (Hypertext Transfer Protocol Secure)

HTTPS는 클라이언트와 서버간에 암호화 통신을 제공한다.

HTTPS에서 통신 프로토콜은 TLS (Transport Layer Security) 또는 SSL (Secure Sockets Layer)을 사용하여 암호화된다.

따라서 프로토콜은 종종 TLS를 통한 HTTP 또는 SSL을 통한 HTTP 라고도 한다.

TLS 및 SSL 프로토콜은 모두 비대칭 암호화 시스템을 사용한다. 비대칭 암호화 시스템은 공개 키(암호화 키)와 개인 키(복호화 키)를 사용하여 메시지를 암호화한다. 누구나 공개 키를 사용하여 메시지를 암호화 할 수 있다. 그러나 개인 키는 특정 수신자만 해독 할 수 있다.

SSL/TLS handshake

웹 사이트에 대한 HTTPS 연결을 요청하면 웹 사이트에서 SSL 인증서를 브라우저로 보낸다. 브라우저와 웹 사이트가 통신을 시작하는 프로세스를 "SSL / TLS handshake"라고 한다. SSL / TLS handshake에는 브라우저와 웹 사이트가 서로 유효성을 검사하고 SSL / TLS 터널을 통해 통신을 시작하는 일련의 단계가 포함된다.

알다시피 HTTPS 연결 중에 신뢰할 수있는 보안 터널이 사용되면 브라우저 주소 표시 줄에 자물쇠 아이콘이 표시된다.

profile
Hi, I'm dean. Front-end developer who likes UI/UX Design.

0개의 댓글