HTTP/네트워크 - 기초(아키텍처)

moono·2023년 1월 30일
0

클라이언트 - 서버 아키텍처

  • 인터넷 연결 없이 앱이 작동하지 않는 이유
    ⇒ 정보를 인터넷 어딘가에 존재하는 서버에서 받아오기 때문

  • 만약 앱과 연결된 서버가 없다면?
    ⇒ 새로운 정보를 받기 위해 매번 앱 자체를 업데이트 해야 함
    ⇒ 결제가 필요한 앱의 경우 금전 정보를 주고받는 은행 서버와의 연결도 필요

  • 빈번한 데이터 업데이트가 필요한 경우 리소스 존재 위치리소스 사용하는 앱 을 분리하는 것이 유리하다
    ⇒ 2-Tier 아키텍처, 클라이언트-서버 아키텍처 라고 부름
    ⇒ 리소스를 사용하는 앱 클라이언트 , 리소스를 제공(serve)하는 곳 서버

  • 서버는 리소스를 전달해 주는 역할만 담당하고, 리소스는 별도의 데이터 베이스 라는 공간에 저장해둔다.
    ⇒ 기존 2-Tier 아키텍처에 데이터베이스가 추가된 형태를 3-Tier 아키텍처 라 부름

  • 웹 개발에서 클라이언트는 브라우저

  • 클라이언트는 서버로 요청 보내고 응답을 받고, 서버는 데이터베이스에 요청을 보내고 응답을 받는다.
    클라이언트 : 유저와의 전반적인 상호작용을 담당하고, 서버로 부터 받은 응답에 따라 화면을 표시
    서버 : 클라이언트의 요청에 따라 적절한 응답을 되돌려 줌


클라이언트 - 서버 통신과 API

클라이언트와 서버가 어떻게 통신하는지? API는 뭔지?

  • 클라이언트와 서버 간의 통신은 요청과 응답으로 구성되는데 요청이 있어야 응답이 온다
    ⇒ 서버 마음대로 클라이언트에 리소스 전달하지 않음

프로토콜(Protocal) : 통신 규약(약속)

  • 웹 애플리케이션 아키텍처에서는 클라이언트와 서버가 서로 HTTP 라는 프로토콜 이용해 대화를 나눔 ⇒ HTTP 메시지
    ⇒ ex) 커피 주문: 카운터 주문, 앱 주문, 키오스크 주문 ⇒ 다양한 방법의 프로토콜
  • OSI 7 Layers : ①물리 ②데이터링크 ③네트워크계층 ④전송계층 ⑤세션계층 ⑥표현계층 ⑦응용계층
OSI 7 Layers프로토콜 이름설명
7. 응용계층HTTP웹에서 HTML, JSON 등의 정보를 주고받는 프로토콜
7. 응용계층HTTPSHTTP 에서 보안 강화된 프로토콜
7. 응용계층FTP파일 전송 프로토콜
7. 응용계층SMTP메일 전송하기 위한 프로토콜
7. 응용계층SSHCLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜
7. 응용계층RDP윈도우즈 계열의 원격컴퓨터에 접속하기 위한 프로토콜
7. 응용계층WebSocket실시간 통신, Push 등 지원하는 프로토콜
4. 전송계층TCPHTTP,FTP 통신 등의 근간이 되는 인터넷 프로토콜 (양방향)
4. 전송계층UDP단순하고 빠르지만 신뢰성이 낮은 인터넷 프로토콜 (단방향)

API(Application Programming Interface)

  • 서버가 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공하는데 이걸 API 라고 함
    ⇒ 서버는 리소스 전달 위한 메뉴판, API 문서를 작성해야 클라이언트가 이를 활용
  • Interface의 사전적 의미는 의사소통 가능 하도록 만들어진 접점
  • 보통 인터넷에 있는 데이터 요청할 때 HTTP프로토콜 을 사용해 주소(URL, URI) 통해 접근
    ⇒ 파라미터 사용 위해 물음표?& 기호 사용하는 것 참조
아메리카노 한 잔 ⇒ /coffee/americano
콜드브루 두 잔 ⇒ /coffee/coldbrew?quantity=2
아메리카노 두 잔 전부 헤이즐럿 시럽 추가 ⇒ /coffee/coldbrew?quantity=2&syrub=hazelnet
  • HTTP API 디자인에는 Best Practice 존재
    ⇒ 사용자 관리 API, URL 단순하나 메서드 개념 등장
요청적절한 메소드
조회 (Read)GET
추가 (Create)POST
갱신 (Update)PUT 또는 PATCH
삭제 (Delete)DELETE

MDN HTTP 요청 메서드
레퍼사이트

0개의 댓글