HTTP/네트워크

jeong dain·2022년 9월 5일
0

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


쇼핑몰 앱은 상품 정보를 인터넷 어딘가에 존재하는 서버(server)로부터 받아와야 하기 때문에 인터넷 연결 없이 작동 하지 않는다. 만약, 인터넷 연결없이 사용하기 위해 상품 정보를 쇼핑몰 앱에 담아놓는다면 상품을 업데이트 할때마다 앱도 함께 끊임없이 업데이트 해줘야하는 문제가 생기고 새로운 상품 정보를 실시간으로 전달하기가 어려워진다. 또한 결제를 하기 위해서도 금전정보를 주고받는 은행 서버와 연결이 필요하므로 결제 행위가 불가능해진다.

💡 이와 같이 상품 정보같은 리소스가 존재하는 곳(server)과, 리소스를 사용하는 앱(client)을 분리시킨 것을 2티어 아키텍처 또는 클라이언트-서버 아키텍처라고 한다

  • 클라이언트와 서버는 요청과 응답을 주고받는다. 이때 요청하지않았는데 응답이 오는 경우는 없다.
  • 일반적으로 서버는 리소스를 전달해주는 역할만 담당한다. 리소스를 저장하는 공간을 별도로 마련해 두는데, 이 공간을 "데이터베이스"라고 부른다. 데이터베이스는 창고와 같은 역할을 한다.
    이처럼 기존 2티어 아키텍처에 데이터베이스가 추가된 형태를 3티어 아키텍처라고 부른다.

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


프로토콜

  • 통신규약 - 데이터 요청시 지켜야하는 약속들
  • 웹 애플리케이션 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 대화를 나눈다
    • HTTP 메세지 ⇒ URL, URI 아메리카노 두 잔 전부 헤이즐럿 시럽을 넣어주세요
      → /coffee/americano?quantity=2&syrup=hazelnet
    • 조회(Read) → GET
      추가(Create) → POST
      갱신(Update) → PUT / PATCH
      삭제(Delete) → DELETE

API(Application Programming Ineterface)

  • 클라이언트가 리소스를 잘 활용할 수 있도록 서버가 인터페이스(interface)를 제공하는 것

브라우저의 작동원리(보이지 않는 곳)

URL과 URI


  • 브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다.
  • CLI 환경에서 폴더와 파일의 위치를 찾아 이동하듯이, 슬래시(/)를 이용해 서버의 폴더에 진입하거나 파일을 요청할 수 있지만
  • 기본적인 보안의 일환으로 외부에서 직접 접근이 대부분 불가능하다.

URL(Uniform Resource Locator)

네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다

  • scheme : 통신 방식(프로토콜)을 결정 ⇒ 일반적인 웹 브라우저에서는 http(s)를 사용
  • hosts : 웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버, 도메인 또는 IP
  • url-path : 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명
  • port : 웹 서버에 접속하기 위한 통로

URI(Uniform Resource Identifier)

일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, bookmark를 포함한다

  • query : 웹 서버에 보내는 추가적인 질문

💡 URI는 URL을 포함하는 상위개념이다.
⇒ URL은 URI다.' 는 참이고, 'URI는 URL이다.' 는 거짓

IP와 포트


IP address(Internet Protocol address, IP 주소)

  • 네트워크에 연결된 특정 PC의 주소를 나타내는 체계 (인터넷에서 사용하는 주소체계)

공유기를 설치하고 비밀번호를 설정하려면, 공유기 관리 페이지에 접속해야 한다. 웹 브라우저에 닷(.)으로 구분된 네 덩이의 숫자를 입력하면, 공유기의 관리 페이지로 접속할 수 있다. 이때 사용되는 네 덩이의 숫자를 IP 주소라고 한다

IPv4

  • 네 덩이의 숫자로 구분된 인터넷에 연결된 모든 PC가 사용하는 주소 체계
    • 각 덩어리마다 0부터 255까지 나타낼수 있다
    • 이 시스템을 따르면, 2^(32)인 약 43억 개의 IP 주소를 표현할 수 있다
    • localhost, 127.0.0.1 : 현재 사용 중인 로컬 PC를 지칭
    • 0.0.0.0, 255.255.255.255 : broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소 ⇒ 서버에서 접근 가능 IP 주소를 broadcast address 로 지정하면, 모든 기기에서 서버에 접근할 수 있
  • Internet Protocol version 4의 줄임말로, IP 주소체계의 네 번째 버전을 뜻한다
💡 인터넷 보급률이 낮았던 초기와 달리 개인PC의 보급으로 전 세계의 많은 사람들이 PC를 통해 인터넷에 접속하고 각종 서비스를 위해 서버를 생산해내면서 `IPv4`로 할당할 수 있는 PC가 한계를 넘어서게 되었고, **2^(128)개의 IP 주소를 표현**할 수 있는 `IPv6`가 나오게 되었다

PORT

  • IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)
  • 이미 사용 중인 포트는 중복해서 사용할 수 없다
profile
Web Frontend Developer #TypeScript #React #NextJS🤸‍♀️

0개의 댓글