Flutter Study Day 12 Dart Network Communication

정정원·2023년 12월 14일
0

Flutter Study

목록 보기
14/17

JSON 개념

  • 서버-클라이언트 통신에서 표준처럼 사용되는 데이터 교환 형식이다.
  • 가볍고 사람이 읽기 쉽다.
  • Map 과 같은 간단한 구조.
  • 직렬화 하여 문자열로 나타내기 쉽다.
  • 대부분의 언어가 이를 파싱할 수 있기 때문에 상호 운용성은 걱정할 것이 없다.
  • 파싱

HTTP 개념

  • HyperText Transfer Protocol
  • 원래 문서 전송용으로 설계된 상태 비저장용 프로토콜
  • 브라우저가 GET 요청으로 웹 서버의 문서를 읽어오는 용도였음
  • 지금은 서버와 클라이언트가 텍스트, 이미지, 동영상 등의 데이터* 를 주고 받을 때 사용하는 프로토콜로 확장됨
  • 웹 상에서 보는 이미지, 영상, 파일과 같은 바이너리 데이터도 HTTP 멀티파트나 Base64 인코딩하여 사용
  • 모든 HTTP 메시지는 요청과 응답이 일대일로 대응되어야 한다.

OSI-7 계층

무상태성

  • HTTP 는 상태 비저장 프로토콜
  • HTTP는 요청 메시지를 보내기 직전까지 대상 컴퓨터가 응답 가능한지 알 방법이 없음
  • Stateless 프로토콜, 즉 상태가 없는 프로토콜이라고 함
  • Stateful 프로토콜로는 TCP (Transmission Control Protocol)가 있음

통신 프로토콜

  • TCP : 신뢰성 있는 연결지향성 앱에서 사용 (이메일, 파일 전송, 웹브라우저)

    • Stateful 프로토콜
    • 연결되면 연결을 끊기 전까지 계속 메시지를 주고 받는 프로토콜
    • 한쪽에 문제가 생기면 다른쪽에서 감지 가능
    • 텍스트가 아닌 바이너리 데이터를 전송
    • 패킷 크기가 HTTP에 비해 작음 → 속도 빠름
    • 각 요청이 소켓 1개를 공유 (HTTP는 각 요청이 소켓 1개씩 사용)
    • 따라서 요청을 식별할 식별자가 필요
    • 응답을 알 수 있는 방법이 없기 때문에 타임아웃에 대해 직접 구현해야 함
    • TCP는 HTTP보다 빠르지만 개발자가 할 일이 많다
    • HTTP는 로직이 간단하지만 TCP보다는 느리다
  • TCP/IP

    • Socket 을 사용하여 TCP/IP 통신을 할 수 있음
    • 접속하기 위해 IP 주소와 포트 번호가 필요
    • 프로토콜(통신시 사용되는 데이터 형식이나 순서 등)은 RFC 문서에 정해둔 것을 따른다.
  • UDP : 신속한 데이터 전송이나 손실 가능성이 있는 상황에 주로 사용

    • 비연결형 프로토콜
    • 데이터 전달 보장이 안되어 신뢰성이 낮음
    • 흐름 제어 없음
    • 단순성
    • 멀티캐스팅 및 브로트캐스팅

요청 메서드

원래 GET만 있었으나 계속 확장됨

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • COPY
  • HEAD
  • OPTIONS
  • LINK
  • UNLINK
  • PURGE
  • LOCK
  • UNLOCK
  • PRORFIND
  • VIEW

요청의 형태를 정의하는 키워드
상황에 맞게 사용하는 것이 관례

  • GET : 데이터 요청
  • POST : 데이터가 포함된 요청
  • DELETE : 삭제
  • PUT : 업데이트

GET

POST

  • 클라이언트에서 서버로 데이터가 포함된 요청을 보낼 때 사용
  • 로그인, 주문 요청 등

POST

  • DELETE : 삭제
  • PUT : 업데이트

HTTP 요청 헤더

  • 요청 정보를 파악하는 데 도움이 되는 다른 여러 정보를 포함할 수 있음
  • 주로 인증, 캐싱, 클라이언트 힌트, 조건, 연결 관리, 쿠키, CORS 등에 활용
  • JSON 파일을 주고 받을 때 Content-Type 에 application/json 으로 명시
  • https://developer.mozilla.org/ko/docs/Web/HTTP/Headers

상태코드

세션과 쿠키

  • HTTP는 상태라는 개념이 존재하지 않기 때문에 세션과 쿠키를 사용해 구분
  • 주로 웹에서 서버는 세션, 클라이언트는 쿠키를 통해 상태 저장

RESTful API

  • 서버와 클라이언트가 메시지를 주고받을 때 가장 많이 사용하는 통신 규격 (암묵적인 룰)
  • REST (representational state transfer)
  • REST: 분산 시스템을 위한 소프트웨어 아키텍처의 한 형태
  • RESTful 이란 REST 조건을 만족한다는 뜻
  • 요청 주소(URL)과 메서드(GET, POST 등), JSON 규격을 이용하여 API를 정의
  • 오늘날 가장 범용적으로 사용
  • https://aws.amazon.com/ko/what-is/restful-api/

0개의 댓글