flutter 프로젝트를 진행하고 있는 중에 통신단을 작업하기 전에 웹 및 앱에서 주로 사용하는 통신 방식인 HTTP 통신에 대해 정리하려고 합니다.
목차
HTTP 란?
HTTP는 Hiper Text Transfer Protocol의 약자로 월드 와이드 웹의 토대이며 하이퍼텍스트 링크를 사용하여 웹 페이지를 로드하는 데 사용됩니다.
여기서 하이퍼 텍스트란 하이퍼 링크를 나타낼 수 있는 텍스트를 의미합니다.
하이퍼 링크란 웹 상에서 흔히 볼 수 있는 밑줄로 되어있는 링크로 이 링크를 통해 연결되어 있는 사진, 동영상, 웹 등에 접속할 수 있습니다.
한마디로, 하이퍼 링크를 통해 사용자가 한 문서에서 다른 문서로 이동할 수 있도록 하는 초월적인 글이라고 할 수 있습니다.
HTTP는 네트워크 장치 간에 정보를 전송하도록 설계된 애플리케이션 계층 프로토콜이며 네트워크 프로토콜 스택의 다른 계층 위에서 실행됩니다. HTTP를 통한 일반적인 흐름에는 클라이언트 시스템에서 서버에 요청한 다음 서버에서 응답 메시지를 보내는 작업이 포함됩니다.
HTTP 시퀀스
HTTP는 기본적으로 클라이언트 - 서버 구조입니다. 클라이언트가 브라우저를 통해서 어떠한 서비스를 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 클라이언트에게 응답(reponse)하는 형태로 동작합니다.
요청 : client -> server
응답 : server -> client
HTTP 특징
- Tcp/Ip를 이용하는 응용 프로토콜이다.
- HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
- HTTP는 비열결성 프로토콜이기 때문에 요청/응답 방식으로 동작한다.
http 요청(request) 구조
HTTP 요청은 웹 브라우저와 같은 인터넷 통신 플랫폼에서 웹 사이트를 로드하는 데 필요한 정보를 요청하는 방법입니다. 일반적인 HTTP 요청에는 다음이 포함됩니다.
- Request Method
- 헤더
- 본문
REQUEST METHOD
HTTP 동사라고도 불리는 HTTP 메서드는 HTTP 요청이 쿼리 된 서버에서 기대하는 작업을 나타냅니다.
예를 들어, 가장 일반적인 두 가지 HTTP 메서드는 'GET'과 'POST'입니다. 'GET' 요청은 응답으로 정보를 기대하는 반면 'POST' 요청은 일반적으로 클라이언트가 웹 서버에 정보를 제출하고 있음을 나타냅니다(양식 정보 등. 예: 제출된 사용자 이름 및 비밀번호).
GET, POST 이외에도 PUT과 DELETE가 있습니다.
- GET : 자료를 요청할 때 사용
- POST : 자료의 생성을 요청할 때 사용
- PUT : 자료의 수정을 요청할 때 사용
- DELETE : 자료의 삭제를 요청할 때 사용
헤더
헤더에는 키값 쌍에 저장된 텍스트 정보가 포함되어 있으며 헤더는 모든 HTTP요청에 포함됩니다. 이러한 헤더는 클라이언트가 사용하는 브라우저 및 요청되는 데이터와 같은 핵심 정보를 전달합니다.
본문
요청의 본문은 요청에서 전송되는 정보의 '본문'을 포함하는 부분입니다. HTTP요청의 본문에는 사용자 이름 및 비밀번호 또는 양식에 입력된 기타 데이터와 같이 웹 서버에 제출되는 모든 정보가 포함됩니다.
HTTP 응답(response) 구조
서버가 요청에 대한 답변을 클라이언트에게 보내는 것을 HTTP응답이라고 합니다. 이러한 응답은 HTTP 요청에서 요청된 내용을 기반으로 중요한 정보를 전달합니다.
일반적인 HTTP응답 구조는 다음과 같습니다.
- 상태 코드
- 헤더
- 본문
상태 코드
HTTP상태 코드는 HTTP요청이 성공적으로 완료되었는지 여부를 나타내는 데 가장 자주 사용되는 3자리 코드입니다. 상태 코드는 다음 5개 블록으로 나뉩니다.
- 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
- 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
- 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
- 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
- 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.
XX는 00에서 99사이의 다른 숫자들을 나타냅니다.
숫자 '2'로 시작하는 상태 코드는 성공을 나타냅니다. 예를 들어 클라이언트가 웹 페이지를 요청한 후 가장 일반적으로 표시되는 응답의 상태 코드는 '200 OK'로, 요청이 제대로 완료되었음을 나타냅니다.
응답이 '4' 또는 '5'로 시작하면 오류가 발생했음을 의미하며 웹 페이지가 표시되지 않습니다. '4'로 시작하는 상태 코드는 클라이언트 쪽 오류를 나타냅니다( '404 NOT FOUND'가 일반적인 예).
'5'로 시작하는 상태 코드는 서버 쪽에서 문제가 발생했음을 의미합니다. 상태 코드는 '1'이나 '3'으로 시작할 수도 있으며, 이는 각각 정보 응답과 리디렉션을 나타냅니다.
헤더
요청 헤더와 마찬가지로 HTTP응답에는 응답 본문에서 전송되는 데이터의 언어 및 형식과 같은 중요한 정보를 전닳는 헤더가 함께 제공됩니다.
본문
응답에는 대부분의 경우 본문이 있습니다. 보통 클라이언트에서 데이터를 요청하면 서버는 응답 메시지에 요청한 데이터를 담아서 보내주기 때문입니다. 응답 메시지에 HTML이 담겨 있는데 이 HTML을 받아 브라우저가 화면에 렌더링 합니다.
참고 자료
https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/
'개발 > CS' 카테고리의 다른 글
아토믹 디자인 이란? (0) | 2024.01.29 |
---|---|
TDD 란 무엇일까? (0) | 2024.01.27 |
Multipart/form-data 정리 (1) | 2024.01.27 |
Firebase Improve 기능 정리 (1) | 2024.01.24 |
Firebase Grow 기능 정리 (0) | 2024.01.23 |