티스토리 뷰

ETC/Summary

HTTP 통신이란 ?

LeeeGi 2023. 6. 21. 23:39
반응형

 최근 안드로이드 개발을 하다가 너무나도 당연하게 Retrofit으로 API 통신을 시도하는 저를 보며 문득 이런 생각이 들더라구요.

나는 HTTP 통신의 개념에 대해 알고 사용하는 걸까...?

 생각해보면, 얼추 개념과 왜 사용하는지 정도는 알고 있지만 누군가에게 설명하기에는 얼버무릴 수 밖에 없는 것 같더라구요. 그래서 항상 사용하는 것이지만 최소한의 개념 정도는 이해하고, 생각하면서 사용을 해야겠다고 결심하고 공부를 해보았습니다.

 

반응형

1. 통신이란 무엇인가?

  • 클라이언트(앱)에서 가장 많이 수행하는 처리 중 하나로 서버에 데이터를 요청하고 받아온 데이터를 화면에 표시
  • 크게 소켓연결과 HTTP 연결의 두가지 방식으로 나뉨

 

2. 소켓연결

  • 네트워크 상의 두 프로그램 사이에서 일어나는 양방향 통신
  • 양방향 통신 중 한 쪽의 엔드포인트(통신단자)를 소켓이라고 하며, P와 Port로 이루어져 있음
  • 클라이언트와 서버가 특정 포트를 통해 연결을 유지하며, 실시간으로 양방향 통신이 가능
  • 주로 동영상 스트리밍, 채팅, 온라인 게임 등에서 많이 사용되는 방식
  • 계속해서 Connection을 들고 있기 때문에 HTTP통신에 비해 많은 리소스가 소모됨

 

3. HTTP 연결

  • HTTP : Hyper Text Transfer Protocol
  • 80번 포트 사용, 웹 상에서 정보를 주고받을 수 있는 프로토콜
  • 클라이언트가 서버에 헤더와 바디로 이루어진 메시지를 요청
    • 서버에서 이 요청을 처리하고 응답코드와 함께 응답을 반환함
    • 클라이언트의 요청이 있을 때, 서버가 응답하는 방식으로 단방향 통신
    • 최근 Keep Alive 옵션으로 일정 기간 Connection을 유지하는 방식으로 통신이 가능 해짐
  • HTML 파일을 전송하는 프로토콜이라는 의미를 가지며, 웹브라우저에서 통신이 일어남
  • 현재는 JSON, Image 파일 등 또한 전송 가능함
  • Connectionless
    • 소켓을 사용해서 접속을 만들지만, 용건이 있을때만 연결했다가 용건이 끝나면 끊음
    • 서버에 여유가 생겨 더 많은 접속요구에 대응할 수 있음
  • Stateless
    • 기본적으로 서버가 클라이언트를 식별할 수 없음
    • 쿠키나 세션, 혹은 토큰을 사용해야 식별 가능

 

4. HTTP Method

  • 클라이언트가 서버에 메시지를 보낼 때 어떠한 목적을 가졌는지 밝히는 것
  • 아래와 같은 메서드 들이 있음
Method 설명
GET 서버에 존재하는 리소스를 요청, 서버를 수정하지 않기 때문에 safe method 로 분류
HEAD GET과 같지만 서버가 본문(body)을 포함하지 않음
POST 클라이언트에서 요청한 URL에 본문의 내용으로 새로운 리소스를 생성
PUT 클라이언트가 요청한 내용으로 서버의 전체 리소스를 수정(갱신)
DELETE 서버에 존재하는 리소스를 삭제
CONNECT 요청 리소스에 대해 양방향 연결을 수립, 예로 프록시를 통한 SSL 연결수립에 사용될 수 있음
OPTIONS 웹 서버가 어떤 HTTP 메소드를 지원하는지 확인할 경우 사용
TRACE 메시지의 변조여부 확인을 위해, 서버가 수신한 클라이언트의 메시지를 반환하도록 함
PATCH 해당 리소스의 일부만을 수정

 

5. RESTful API

  • REST : Representational State Transfer
  • HTTP 기반으로 필요한 자원에 접근하는 방식을 정해놓은 네트워크 아키텍처
  • 다음과 같은 기준을 만족하면 RESTful 하다고하며 RESTful하게 작동하도록 만든 API를 RESTful API라고 함
    • 클라이언트와 서버의 분리
    • 무상태(Stateless)
    • 캐시 처리가 가능해야 함
    • 시스템이 계층화(Layered) 되어있어야 함
    • 일관성 있는 인터페이스
HTTP Method CRUD Entire Collection
(e.g. /customers)
Specific Item
(e.g. /customers/{id})
POST Create 201 (Created)
‘Location’ header with link to
/customers/{id} containing new ID.
404 (Not Found), 409 (Conflict)
if resource already exists.
GET Read 200 (OK)
list of customers.
Use pagination, sorting and
filtering to navigate big lists.
200 (OK)
single customer.

404 (Not Found)
if ID not found or invalid.
PUT Update/
Replace
405 (Method Not Allowed)
unless you want to update/replace
every resource in the entire collection.
200 (OK) or 204 (No Content).

404 (Not Found0
if ID not found or invalid.
PATCH Update/
Modify
405 (Method Not Allowed)
unless you want to modify the collection itself.
200 (OK) or 204 (No Content).

404 (Not Found)
if ID not found or invalid.
DELETE Delete 405 (Method Not Allowed)
unless you want to delete the whole collection not often desirable.
200 (OK).

404 (Not Found)
if ID not found or invalid.

 

 

이번 포스팅에서는 간단하게 개념에 대해서만 정리를 해보았습니다.

다음에는 HTTP Request, Response의 구조와 그 사용법들에 대해 공부를 해볼까 합니다.

 

* Reference

- https://cliearl.github.io/posts/android/android-http-library-review/

- https://wildeveloperetrain.tistory.com/37

- https://kotlinworld.com/75

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함