Network

[네트워크] HTTP

Ama_grammer 2024. 9. 5. 17:02

HTTP

1. HTTP란? 

HTTP 프로토콜은 클라이언트에서 요청(Request)를 하면 서버에서 요청받은 내용을 수행후 그것의 수행 상태와 컨텐츠를 다시 클라이언트에 응답(Response)를 보내는 방식으로 단방향 통신방식으로 한번 요청을 보냈으면 응답이 오기 전까지 다른 Request를 할 수 없다는 특징이 있다. 그리고 서버가 클라이언트의 상태를 저장하지 않는 Stateless 특성을 갖는다.

HTTP(Hyper Text Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜입니다. 쉽게 설명하자면 웹브라우저가 서버와 통신하는 규칙이에요.
- 출처 : 토스페이먼츠 개발자센터

2. HTTP 구조

HTTP 프로토콜의 동작

- Request Message 구성

  • Start Line (Method/Path Or Query HTTP/Version)
    • 말 그대로 Request 메시지의 첫번째 라인영역
    • "GET/search HTTP/1.1" 와 같은 형식을 갖는다. 
  • Headers
    • request에 대한 추가 정보를 갖고 있는 영역
    • (HOST, User-Agent, Agent, Connection, Context-Type, Content-Length 등)
  • Body
    • 실제로 전송할 데이터가 들어있는 영역
    • GET 요청은 일반적으로 Body 영역이 없다.

 

- Response Message 구성

  • Status Line (HTTP/Version, Status Code, Status Text)
    • 서버의 응답 상태를 간략하게 알려주는 영역
    • "HTTP/1.1 200 OK" 와 같은 형식을 갖는다.
    • Status Code는 숫자로 이루어져 있다.Headers
    • response에 대한 추가 정보를 갖고 있는 영역
    • Request와 공통 요소를 공유하고 있으니 일부 요소는 각 요청/응답에 특화된 요소가 있다.
  • Body
    • 서버에서 응답해서 보낸 실제 데이터가 있는 영역
    • Requst 때와 마찬가지고 항상 Body가 있는건 아니다.

3. HTTP Status Code

HTTP 요청에 대한 응답이 이루어 졌을 때 그 응답의 상태를 나타내는 숫자로 이루어진 코드이다.
Status Code Meaning Explanation
1xx 정보 제공 (Infomational) 임시 응답으로 현재 클라이언트 요청까지는 처리되었으니 계속 진행하라는 의미
2xx 성공 (Success) 클라이언트의 요청이 서버에서 성공적으로 처리됨을 의미
3xx 리다이렉션 (Redirection) 완전한 처리를 위해 추가 동작이 필요한 경우를 의미
주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그 주소에서 다시 시도하라는 의미
4xx 클라이언트 에러 (Client Error) 없는 페이지를 요청했거나 클라이언트단에서 잘못된 요청을 했음을 의미
5xx 서버 에러 (Server Error) 서버단에서 요청을 처리하던 중 서버에서 문제가 발생했음을 의미

 

Status Code는 크게 위의 표와 같이 다섯 종류로 구분할 수 있다.

그 안에는 더 상세한 상태표시 코드가 존재하니 필요한경우 찾아보며 상태코드에 따른 처리를 해주면 될것이다.


4. HTTP  Method

Method Explanation
CONNECT 요청한 리소스에 대한 양방향 연결을 시작하는 메소드
DELETE 지정한 리소스를 삭제하는 메소드, CRUD에서 Delete 기능
GET 특정한 리소스를 가져오는 메소드(데이터를 가져올 때만 사용), CRUD에서 Read 기능
HEAD 특정한 리소스를 GET메소드로 요청했을 때 돌아올 헤더를 요청하는 메소드
HEAD 메소드에 대한 응답은 본문을 가져서는 안 되고, 본문이 존재하더라도 무시해야함
(Content-Length 처럼 본문 컨텐츠의 설명을 담은 개체 헤더는 포함될 수 있음)
OPTIONS 주어진 URL 또는 서버에 대해 허용된 통신 옵션을 요청
클라이언트는 이 방법으로 URL을 지정하거나 별표를 지정하여 전체 서버를 참조할 수 있음
(허용된 요청 메소드 식별, CORS 사전 요청 등)
PATCH 리소스의 부분적인 수정을 할 때에 사용, CRUD에서 Update 기능
다른 리소스에게 부수효과(side-effects)를 일으킬 가능성이 있음
POST 서버로 데이터를 전송, CRUD에서 Create 기능
요청 본문의 유형은 "Content-Type" 헤더로 표시
멱등성이 보장되지 않음
PUT 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체
PATCH는 "부분수정"이라면 PUT은 "덮어쓰기" 느낌, CRUD에서 Update 기능
멱등성을 보장하기에 여러번 연속으로 보내도 같은 효과를 보임
즉, 부수효과가 없다.
TRACE 대상 리소스로 가는 경로를 따라 메시지 Loop-Back 테스트를 수행하여 유용한 디버깅 메커니즘을 제공

5. HTTP  장단점

- 장점

  • 동시 연결 수가 적기 때문에 메모리와 CPU 사용량이 낮음
  • TCP(Transmission Control Protocol) 연결이 적기 때문에 네트워크 혼잡이 적음
  • 핸드셰이킹은 초기연결 단계에서 이루어지기 때문에 후속 요청에 대한 핸드셰이킹이 필요 없어 대기시간이 줄어듦
  • 연결을 유지한 상태로 오류를 보고할 수 있음
  • HTTP 요청 및 응답은 HTTP 파이프라인을 허용함

- 단점

  • HTTP 통신을 구추하고 데이터를 전송하는데 높은 전력이 필요함
  • HTTPS와 같은 암호화방식이 아닌 TLS를 사용하여 요청과 응답을 암호화하여 보안성이 떨어짐
  • 모바일 환경 최적화가 되어있지 않고, 지저분함
  • 보안성이 떨어져 실제적인 데이터교환을 제공하지 않음
  • 클라이언트가 완전한 응답을 받을 때 까지 서버와의 연결을 유지해야해서 유지하는 동안 대기시간이 발생하며 그 시간동안에는 클라이언트의 다른 요청을 처리할 수 없음.

🔥 배운점

대학생 시절 배웠던 HTTP 프로토콜을 기억하며 머리에 있던 지식과 추가 내용을 정리하는 시간이었다.

HTTP 를 정리했으니 그것에서 보안이 추가된 HTTPS에 대해 정리를 할 필요가 있고, 그 밖에도 TCP, TLS 같은 HTTP 를 이해하는데 도움이 될 용어 및 개념에 대해 추가학습을 진행해야겠다.

 

참고

https://docs.tosspayments.com/resources/glossary/http-protocol

 

HTTP 프로토콜 | 토스페이먼츠 개발자센터

HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜입니다. 쉽게 설명하자면 웹 브라우저가 서버와 통신하는 규칙이에요.

docs.tosspayments.com

https://www.geeksforgeeks.org/http-full-form

 

HTTP Full Form - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

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

 

HTTP | MDN

하이퍼텍스트 전송 프로토콜 (HTTP) 은 HTML과 같은 하이퍼미디어 문서를 전송하기 위한 애플리케이션 계층 프로토콜입니다. 웹 브라우저와 웹 서버간의 통신을 위해 설계되었지만 다른 목적으로

developer.mozilla.org