ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP 구조 및 핵심 요소
    WEB 2021. 9. 3. 01:36
    728x90

    1. HyperText Transfer Protocol

     

    2. HTTP 핵심 요소

       2-1. HTTP 통신 방식

       2-2. HTTP Request 구조

          2-2-1. Start Line

          2-2-2. Headers

          2-2-3. Body

       2-3. HTTP Response 구조

          2-3-1. Status Line

          2-3-2. Headers

          2-3-3. Body

     

    3. 자주 쓰이는 HTTP Methods

       3-1. GET

       3-2. POST

       3-3. OPTIONS

       3-4. PUT

       3-5. DELETE

     

    4. 자주 쓰이는 HTTP Status Code

       4-1. 200 OK

       4-2. 301 Moved Permanently

       4-3. 400 Bad Request

       4-4. 401 Unauthorized

       4-5. 403 Forbidden

       4-6. 404 Not Found

       4-7. 500 Internal Server Error

     

     

    0. Protocol

               - 네트워크 객체들 간의 규격, 순서 등을 정의한 통신 규약입니다. 단순히 말하면, 네트워크 상의 컴퓨터 간 대화입니다.

     

     

    1. HyperText Transfer Protocol

               - 태초에 아담과 이브가 있듯이, 웹에는 태초에 http + html 이 있었다

               - 프로토콜은 웹 상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조" 라고 보면 된다. 프론트앤드 서버와 클라이언트간의 통신에 사용된다. 또한 백앤드와 프론트앤드 서버간의 통신에도 사용된다.

               - 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약).

     

     

    2. HTTP 핵심 요소

     

    2-1. HTTP 통신 방식

    - HTTP 기본적으로 요청/응답 (request/response) 구조로 되어있다.

    클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조.

     

    - HTTP Stateless 이다. Stateless 란 말그대로 state(상태)를 저장하지 않는 다는 뜻. , 요청이 오면 그에 응답을 할 뿐, 여러 요청/응답끼리 연결되어 있지 않다는 뜻이다. 즉 각각의 요청/응답은 독립적인 요청/응답 이다. 예를 들어, 클라이언트가 요청을 보내고 응답을 받은 후, 조금 있다 다시 요청을 보낼 때, 전에 보낸 요청/응답에 대해 알지 못한다는 뜻이다. 그래서 만일 여러 요청과 응답 의 진행과정이나 데이터가 필요할 때는 쿠키나 세션 등등을 사용하게 된다.

     

     

     

    2-2. HTTP Request 구조

     

    2-2-1. Start Line

    - 말 그대로 HTTP request의 첫 라인(이름이 너무 식상하지만, 뭐 이미 이렇게 지어졌다). HTTP request start line또한 3부분으로 구성되어 있음.

     

    예시 ) GET /search HTTP/1.1

    1) HTTP Method

    해당 request가 의도한 action을 정의하는 부분.

    HTTP Methods에는 GET, POST, PUT, DELETE, OPTIONS 등등이 있다.

    주로 GET POST과 쓰임.

    2) Request target

    해당 request가 전송되는 목표 uri. (=URI(Uniform Resource Identifier)는 하나의 리소스를 가리키는 문자열입니다. 가장 흔한 URI URL, 웹 상에서의 위치로 리소스를 식별합니다. 반면, URN (en-US)은 주어진 이름공간 안의 이름으로 리소스를 식별합니다. 도서의 ISBN을 예시로 사용할 수 있습니다.)

    예를 들어 /login.

    3) HTTP Version

    말 그대로 사용되는 HTTP 버젼. 버젼에는 1.0, 1.1, 2.0 등이 있다.

     

    2-2-2. Headers

    - 해당 request에 대한 추가 정보(addtional information)를 담고 있는 부분.

    예를 들어, request 메세지 body의 총 길이 (Content-Length) .

    - Key:Value 값으로 되어있다 (: 이 사용됨).

    key:value

    HOST: google.com => Key = HOST, Value = google.com

    - Headers도 크게 3부분으로 나뉘지만(general headers, request headers, entity headers) 너무 자세한 부분임으로, 3부분 으로 구성되어 있다는것만 알고 있어도 괜찮다.

     

    1)     Host

    요청이 전송되는 target host url: 예를 들어, google.com

    2)     User-Agent

    요청을 보내는 클라이언트의 대한 정보: 예를 들어, 웹브라우저에 대한 정보.

    3)     Accept

    해당 요청이 받을 수 있는 응답(response) 타입.

    4)     Connection

    해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지 할 것인지 아니면 끊을 것인지에 대해 지시하는 부분.

    5)     Content-Type

    해당 요청이 보내는 메세지 body의 타입. 예를 들어, JSON을 보내면 application/json.

    6)     Content-Length:

    메세지 body의 길이.

     

    2-2-3. Body

    - 해당 reqeust의 실제 메세지/내용. Body가 없는 request도 많다.
    예를 들어, GET request들은 대부분 body가 없는 경우가 많음. 따라서 GET메서드의 경우에는 Body가 없습니다. 하지만 POST메서드는 서버에게 데이터의 생성, 수정, 삭제를 요구하기 때문에 서버로 전송하는 메세지나 내용이 있습니다. 따라서 POST메서드는 Body를 포함합니다.

     

     

     

    2-3. HTTP Response 구조

    Response request와 마찬가지로 크게 3부분으로 구성되어 있다.

     

    1)     Status line

    2)     Headers

    3)     Body

     

    2-3-1. Status Line

    Response의 상태를 간략하게 나타내주는 부분.

    3부분으로 구성되어 있다.

     

    1)     HTTP 버젼

    2)     Status code:

    응답 상태를 나타내는 코드. 숫자로 되어 있는 코드. 예를 들어, 200

    3)     Status text: 응답 상태를 간략하게 설명해주는 부분. 예를 들어, "Not Found"

     

    2-3-2. Headers

    Response headers와 동일하다. 다만 response에서만 사용되는 header 값들이 있다. 예를 들어, User-Agent 대신에 Server 헤더가 사용된다.

     

    2-3-3. Body

    Response body와 일반적으로 동일하다. Request와 마찬가지로 모든 response body가 있지는 않다. 데이터를 전송할 필요가 없을 경우 body가 비어있게 된다.

     

     

     

    3. 자주 쓰이는 HTTP Methods

     

    3-1. GET

    - 이름 그대로 어떠한 데이터를 서버로부터 받아(GET)올때 주로 사용하는 Method.

    - 데이터 생성/수정/삭제 없이 받아오기만 할때 사용된다.

    - 가장 간단하고 많이 사용되는 HTTP Method

    - 언급한대로 주로 데이터를 받아올때 사용되기 때문에 request body를 안 보내는 경우가 많다.

     

    3-2. POST

    - 데이터를 생성/수정/삭제 할 때 주로 사용되는 Method.

    - 데이터를 생성 및 수정 할 때 많이 사용하기 때문에 대부분의 경우 requst body가 포함되서 보내진다.

     

    3-3. OPTIONS

    - 주로 요청 URI에서 사용할 수 있는 Method를 받아올때 사용된다.

    - 예를 들어, /update uri에서 어떤 method를 요청 가능한가(GET? POST?)를 알고 싶으면 먼저 OPTIONS 요청을 사용해서 확인하게 된다.

     

    3-4. PUT

    - POST와 비슷하다. 데이터를 생성 할때 사용되는 Method.

    - POST와 겹치기 때문에 PUT을 사용하는 곳도 있고 POST로 통일해서 사용하는 곳도 있는데, 최근 몇년 사이에 POST에 밀려서 잘 사용안되는 추세.

     

    3-5. DELETE

    - 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰이는 Method

    - PUT과 마찬가지로 POST에 밀려서 잘 사용안되는 추세.

     

     

     

    4. 자주 쓰이는 HTTP Status Code

     

    4-1. 200 OK

    - 가장 자주 보게 되는 status code.

    - 문제없이 다 잘 실행 되었을때 보내는 코드.

     

    4-2. 301 Moved Permanently

    - 해당 URI가 다른 주소로 바뀌었을때 보내는 코드.

     

    4-3. 400 Bad Request

    - 해당 요청이 잘못된 요청일 때 보내는 코드.

    - 주로 요청에 포함된 input 값들이 잘못된 값들이 보내졌을 때 사용되는 코드.

    - 예를 들어, 전화번호를 보내야 되는데 text가 보내졌을 때 등등.

     

    4-4. 401 Unauthorized

    - 유저가 해당 요청을 진행 할려면 먼저 로그인을 하거나 회원 가입을 하거나 등등이 필요하다는 것을 나타내려 할 때 쓰이는 코드.

     

    4-5. 403 Forbidden

    - 유저가 해당 요청에 대한 권한이 없다는 뜻.

    - 예를 들어, 오직 과금을 한 유저만 볼 수 있는 데이터를 요청 했을 때 등.

     

    4-6. 404 Not Found

    - 요청된 uri가 존재 하지 않는다는 뜻.

     

    4-7. 500 Internal Server Error

    - 서버에서 에러가 났을 때 사용되는 코드.

    - API 개발을 하는 백앤드 개발자들이 싫어하는 코드.

     

     

     

    참고 : https://velog.io/@teddybearjung/HTTP-%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%86%8C#2-2-1-start-line

     

    HTTP 구조 및 핵심 요소

    하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약).즉 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구

    velog.io

    https://joshua1988.github.io/web-development/http-part1/#http-request--http-response

     

    프런트엔드 개발자가 알아야하는 HTTP 프로토콜 Part 1

    API 데이터 요청을 위해 꼭 알아야 하는 HTTP 프로토콜의 정의, HTTP Status Code, HTTP Methods 등

    joshua1988.github.io

     

    728x90

    'WEB' 카테고리의 다른 글

    서버와 클라이언트 기본 구조  (0) 2021.09.03
    Web에서의 페이지 전환 방법 2가지  (0) 2021.09.03
    Jinja2 기본 문법  (0) 2021.09.03
Designed by Tistory.