하나씩 알아가기

HTTP에 대해 알아보자 본문

HTTP에 대해 알아보자

clearwater 2021. 1. 25. 20:40
728x90
반응형

틀린 부분이 있을 경우, 지적해 주시면 감사하겠습니다.

 

HTTP

개념

HTTP는 Hyper Text Transfer Protocol의 약자로 웹 서버와 클라이언트 간의 통신을 위한 규약을 말합니다. 우리가 평소에 인터넷을 사용하기 위해서는 이 HTTP를 통해서 사용자는 웹 페이지의 정보를 서버에 요청하고 전달 받아서 화면을 받아보는 과정이 이루어져야 합니다. HTTP는 누구나 정보를 열람할 수 있는 플레인 텍스트 개념이라서 요즘에는 HTTPS가 선호됩니다. S는 secure를 뜻하며, 좀 더 보안된다고 볼 수 있습니다.

 

특징

1. 비연결성(Connectionless)

클라이언트가 서버에게 리소스를 요청한 후 응답을 받으면 연결을 끊어버리는 특징입니다. 연결을 끊어버리는 이유는 다수의 클라이언트와 연결을 계속 유지해야 하면, 이에 따른 많은 리소스가 발생하기 때문입니다. 이 리소스를 줄이기 위해 비연결적인 특징을 갖습니다. 단점은 서버가 클라이언트를 기억하고 있지 않으므로 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결을 시도/해제 해야하므로 오버헤드가 발생한다는 점입니다. HTTP의 keepAlive 속성을 사용하여 지속적 연결 상태를 유지할 수 있으며, HTTP 1.1 부터는 이 상태가 기본입니다.

 

2. 무상태성(Stateless)

서버가 클라이언트를 식별할 수 없는 특징을 말합니다. 즉, 각 클라이언트에 맞게 리소스를 응답하는 것은 기본적으로 불가능합니다. 이로 인한 불편함을 해결하기 위해서 브라우저 단에 쿠키를 저장하거나 서버단에 사용자 정보를 세션으로 저장하는 등의 방법을 사용할 수 있습니다.

 

HTTP 요청(Request)

클라이언트 → 서버

요청의 구조는 세 부분으로 구성되어 있습니다. 

  • Startline : 요청의 첫번째 줄
    • HTTP Method : 해당 요청이 의도한 액션을 정의하는 부분
    • Request target : 해당 request가 전송되는 목표 url
    • HTTP Version : 사용되는 HTTP 버전(주로 1.1 버전이 가장 널리 쓰임)
    • ex) GET /login HTTP/1.1 → "GET 메소드로 login이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다."
  • Headers : 요청의 메타 데이터를 담고 있음
    • Host : 요청을 보내는 타겟의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소
    • User-Agent : 요청을 보내는 클라이언트에 대한 정보(ex. Chrome, Firefox, Safari ...)
    • Content-Type : 해당 요청을 보낼 때(POST/PUT) 메시지 body의 타입 (ex. application/json, application/x-www-form-urlencoded)
    • Content-Length : body 내용의 길이
    • Authorization : 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authorization에 담음
    • Origin : 요청이 어느 도메인에서 왔는 지 명시, 서버의 Access-Control-* 속성에 필요
  • Body : 요청의 내용을 담고 있음

 

 

HTTP 응답

클라이언트 ← 서버

  • Status Line : 응답의 상태 줄로, 요청에 대한 처리 상태를 클라이언트에 먼저 알려줌
    • HTTP Version : 요청과 동일
    • Status Code : 응답 메시지의 상태 코드(밑에서 설명)
    • Status Text : 응답 메시지의 상태를 간략하게 설명해주는 텍스트
    • ex) HTTP/1.1 404 Not Found → HTTP 1.1 버전으로 응답하고 있는데 클라이언트 사이드에서 보낸 요청에 대해서 유저의 정보를 찾을 수 없음
  • Headers : 요청의 헤더와 동일하게, 응답의 메타 데이터를 담고 있다. 요청하는 브라우저의 User-Agent 대신 Server 헤더가 사용되는 등, 응담에서만 사용되는 헤더의 정보들이 있다.
  • Body : 요청의 Body와 동일하지만, 요청에서 메소드에 따라 존재하지 않을 수 있듯이 응답에서 데이터가 필요하지 않은 경우에는 Body가 없을 수 있다
    • ex) 로그인 요청에 대해 성공했을 때 응답의 body
Body: {
	"message": "SUCCESS"
	"token": "1a2b3c!@4d" (암호화된 유저의 정보)
}

 

 

응답 상태 코드

클라이언트가 서버에 요청을 하면, 서버는 요청에 대한 처리 상태를 숫자로 반환하는데 이를 응답 코드라 합니다.

  • 100번대 : 요청을 받았으면 작업을 계속한다
  • 200번대 : 요청을 성공적으로 수행했다
  • 300번대 : 클라이언트가 요청을 마치기 위해 추가적인 동작을 해야한다(리다이렉션)
  • 400번대 : 클라이언트 오류가 있다
  • 500번대 : 서버에 오류가 있다

응답을 할 때 올바른 HTTP 상태 코드를 반환하는 것이 중요합니다.

 

HTTP Method

클라이언트가 서버에 요청을 할 때, 어떤 목적을 갖는 행위인지 HTTP 메소드에 명시합니다.

  • GET : 서버에게 조회할 리소스를 요청한다 (READ, 조회)
  • POST : 서버에게 본문(body)에 생성할 데이터를 삽입하여 전송한다 (CREATE, 생성)
  • PUT : 서버에게 본문에 수정할 데이터를 삽입하여 전송한다 (UPDATE, 수정)
  • DELETE : 서버에게 삭제할 리소스를 요청한다 (DELETE, 삭제)
  • PATCH : PUT과 비슷하지만 일부만 수정한다는 점에서 다르다

 

※HTTPS는 HyperText Transfer Protocol over TSL/SSL의 약자로 기존의 HTTP를 암호화한 프로토콜로 보안이 강화된 버전입니다(HTTPS에 대해서는 다음번에 좀 더 자세한 내용으로 포스팅하겠습니다).

 

참고 및 출처

ko.wikipedia.org/wiki/HTTP#%EC%9A%94%EC%B2%AD_%EB%A9%94%EC%8B%9C%EC%A7%80

 

HTTP - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에

ko.wikipedia.org

velog.io/@kst6294/HTTP

 

HTTP

HTTP클라이언트(Client) 와 서버(Server) 사이에 이루어지는 요청(Request) 와 응답(Response) 프로코톨(Protocol).사전적인 HTTP의 뜻 외에 HTTP하면 생각나는 대표적인 개념은 HTML이라고 할 수 있다.HTML은 HyperTe

velog.io

victorydntmd.tistory.com/286

 

[HTTP] HTTP 특성(비연결성, 무상태)과 구성요소 그리고 Restful API

이번 글에서는 HTTP의 가장 큰 특징인 비연결성, 무상태 그리고 HTTP 상태코드(status)와 메서드(method), 헤더(header)에 대해 알아보도록 하겠습니다. 1. 비연결성 ( Connectionless ) 비연결성은 클라이언트

victorydntmd.tistory.com

github.com/baeharam/Must-Know-About-Frontend/blob/master/Notes/network/http.md

 

baeharam/Must-Know-About-Frontend

:mortar_board: 취준생이라면 반드시 알아야 하는 프론트엔드 관련 지식들. Contribute to baeharam/Must-Know-About-Frontend development by creating an account on GitHub.

github.com

 

728x90
반응형