프론트엔드 개발

HTTP overview 본문

CS/Network

HTTP overview

태나미 2021. 8. 14. 14:58
HTTP(Hyper Text Transfer Protocol)란 
서버와 클라이언트가 인터넷 상에서 HTML 문서를 주고받을 수 있게 하기 위해 만든 protocol(통신 규약)입니다.

출처: https://timetodev.co.kr/article/index?aidx=149

클라이언트

이 역할은 주로 브라우저에 의해 수행됩니다

웹 페이지는 하이퍼텍스트 문서로, 표시된 텍스트의 일부는 사용자가 웹을 돌아다닐 수 있도록 새로운 웹 페이지를 가져오기 위해 실행될 수 있는 링크임을 뜻합니다. 

브라우저는 HTTP 요청 내에서 지시 사항들을 변환하고 HTTP 응답을 해석하여 사용자에게 명확한 응답을 표시합니다.

웹 서버

통신 채널의 반대편에는 클라이언트에 의한 요청에 대한 문서를 제공하는 서버가 존재합니다.

HTTP 통신방식

  • HTTP통신은 클라이언트가 데이터를 요청하면, 서버는 그 요청을 처리하여 다시 클라이언트에게 응답하는 형식을 따릅니다.
  • HTTP는 상태를 저장하지 않습니다(Stateless). 서버가 두 요청 간에 어떠한 상태도 유지하지 않음을 의미합니다.
    • 동일한 상태를 공유하기 위해 최근에는 쿠키, 세션, 로컬 스토리지 등을 사용합니다.

HTTP 흐름

클라이언트가 서버와 통신하고자 할 때, 다음 단계의 과정을 수행합니다:

 

1. TCP 연결을 엽니다. TCP 연결은 요청을 보내거나 응답을 받는데 사용됩니다. 클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 서버에 대한 여러 TCP 연결을 열 수 있습니다.

2. HTTP 메시지를 전송합니다 

출처: https://developer.mozilla.org/ko/docs/Web/HTTP

3.. 서버에 의해 전송된 응답을 읽어들입니다:

출처: https://developer.mozilla.org/ko/docs/Web/HTTP

4. 연결을 닫거나 다른 요청들을 위해 재사용합니다.

HTTP Request 구조

HTTP request는 크게 3가지(request line, headers, body)로 구성됩니다.

출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

request line

  • HTTP Method
    해당 request가 의도한 action을 정의하는 부분
    HTTP Methods에는 GET, POST, PUT, DELETE, OPTIONS 등
  • Request target
    해당 request가 전송되는 목표 uri
  • HTTP Version
    HTTP 프로토콜 버전. 버전에는 1.0, 1.1, 2.0 등이 있다.

headers

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

Key:Value 값으로 구성

Headers도 크게 3 부분으로 나뉨(general headers, request headers, entity headers) 

 

자주 사용되는 header 정보에는 다음과 같은 것들이 있습니다.

  • Host
    가져오려는 리소스의 경로. 여기서는 developer.mozilla.org
  • User-Agent
    요청을 보내는 클라이언트의 대한 정보, ex) 웹브라우저에 대한 정보
  • Accept
    해당 요청이 받을 수 있는 응답(response) 타입
  • Connection
    해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지할 것인지 아니면 끊을 것인지에 대해 지시하는 부분
  • Content-Type
    해당 요청이 보내는 메시지 body의 타입, ex) JSON을 보내면 application/json
  • Content-Length:
    메세지 body의 길이

body

해당 reqeust의 실제 메시지/내용

GET 방식의 request들은 대부분 body가 없는 경우가 많다.

HTTP Response 구조

Response도 request와 마찬가지로 크게 3가지(status line, headers, body) 구성되어 있습니다.

출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

status line

  • HTTP Version
    HTTP 프로토콜 버전
  • Status Code
    응답 상태를 나타내는 코드, ex) 200
  • Status messagge
    응답 상태를 간략하게 설명해주는 부분, ex) "OK"

headers

Response의 headers와 비슷한 형식

body

Response의 body와 비슷한 형식.

데이터를 전송할 필요가 없을 경우 request의 body가 비어있게 됩니다.

HTTP Methods

- GET

데이터를 서버에게 읽기 위해 요청하는데 사용하는 Method

- POST

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

데이터를 생성 및 수정 할때 사용하기 때문에, requst body에 데이터를 같이 보내기도 합니다.

- OPTIONS

주로 요청 URI에서 사용할 수 있는 Method를 받아올때 사용하는 Method

예를 들어, /update uri에서 어떤 method를 요청 가능한가를 알고 싶으면 먼저 OPTIONS 요청을 사용해서 확인하게 됩니다.

- PUT

POST와 비슷하게, 데이터를 생성 할때 사용되는 Method

- DELETE

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

 

 

출처

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview#http_%ED%9D%90%EB%A6%84

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-7-body

 

 

 

 

 

 

'CS > Network' 카테고리의 다른 글

3 Way-Handshake  (0) 2021.01.26
Comments