ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [7일차] 클라이언트-서버 아키텍처
    교육/코드스테이츠 2022. 12. 6. 17:29

    출처: https://velog.io/@seul06/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%99%80-%EC%84%9C%EB%B2%84

     

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

    서버(server) : 서비스를 제공하는 컴퓨터

    클라이언트(client) : 서비스를 사용하는 컴퓨터

     

    • 2-Tier 아키텍처
      • 클라이언트(Apps 등)에서 정보를 보여 주려면 서버로부터 받아온다.
      • 서버(Server)는 말 그대로 제공(Serve)하는 주체이다.
      • 즉, 서버에 리소스가 존재하고, 클라이언트는 서버로부터 리소스를 받아서 보여준다.

     

    • 3-Tier 아키텍처
      • 일반적으로 리소스를 저장하는 공간을 "데이터 베이스"라 하며, 2-Tier 아키텍처에서 데이터 베이스를 추가해 서버는 데이터 베이스에서 가져온 리소스를 클라이언트에 전달한다.

     

    프로토콜

    • 컴퓨터 간의 데이터 전송을 위한 통신 규약이다.
    • 데이터를 전송하는 방법과 데이터를 받아들이는 방법, 통신 중에 발생할 수 있는 에러 처리 방법 등이 정의되어 있다. 
    • 대표적인 인터넷 프로토콜로는 HTTP, FTP, TCP/IP 등이 있다.

     

    프로토콜 HTTP

    • HTTP는 인터넷에서 데이터를 주고받을 수 있는 프로토콜 중 하나로, 웹 브라우저와 웹 서버 사이에서 데이터를 전송하고 웹 페이지를 표시하기 위해 사용된다.
    • 웹브라우저 주소창에 'http://~'라 입력하는 건, HTTP 프로토콜을 통해 HTML로 제작된 웹페이지에 연결하겠다는 의미다. 여기서 'http' 대신 다른 프로토콜(예, ftp)을 입력하면 다른 방식으로 해당 사이트에 접속하게 된다.
    • HTTP는 클라이언트와 서버 간에 요청(request)과 응답(response)을 주고 받는 방식으로 동작한다.

     

    API

    • 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 뜻한다.
    • 간단하게는 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 통신할 수 있게 한다.
    • 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있다.
    • 휴대폰의 날씨 앱은 API를 통해 이 시스템과 "대화"하고 휴대폰에 매일 최신 날씨 정보를 표시한다.

     

    URLURI

    • URL
      • Uniform Resource Locator의 줄임말로, 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다 URL은 scheme, hosts, url-path로 구분할 수 있습니다. 가장 먼저 작성하는 scheme은 통신 방식(프로토콜)을 결정한다
      • 일반적인 웹 브라우저에서는 http(s)를 사용한다.
      • hosts는 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타낸다.
      • url-path는 웹 서버에서 지정한 루트 디렉토리부터 시작하여 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다
      • 서버가 제공되는 환경에 존재하는 파일의 위치를 나타내며 흔히 웹 주소라고도 한다.
      • 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의 서브셋이다.

     

    • URI
      • 일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, bookmark를 포함한다.
      • query는 웹 서버에 보내는 추가적인 질문이다
      • 아래 그림의 http://www.google.com:80/search?q=JavaScript 를 입력하면, 구글에서 JavaScript를 검색한 결과가 나타난다
      • 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다.
      • 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스다.

     

    • 예시)
      • “Charles” 는 내 이름이며 식별자(Identifier)다. 이는 URI와 비슷하지만 내 위치나 연락처에 대한 정보가 없으므로 URL은 될 수 없다.
      • “경기도 성남시 분당구 정자동 불정로 6”는 주소다. 주소는 특정 위치를 가르킨다. URL 및 URI와 비슷하며 간접적으로 내가 있는 장소로 식별한다.

     

    출처: https://urclass.codestates.com/content/72f50716-c639-4ce7-831b-4ab3daa6438b?playlist=936

    부분 명칭 설명
    file://, http://, https:// scheme 통신 프로토콜
    127.0.0.1,
    www.google.com
    hosts 웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버, 도메인 또는 IP
    :80, :443, :3000 port 웹 서버에 접속하기 위한 통로
    /search,
    /Users/username/Desktop
    url-path 웹 서버의 루트 디렉토리로부터 웹 페이지, 이미지, 동영상 등의 파일이 위치까지의 경로
    q=JavaScript query 웹 서버에 전달하는 추가 질문

     

    IP

    • IP는 Internet Protocol의 줄임말로, 인터넷상에서 사용하는 주소체계를 의미한다
    • 인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분된다. 네 덩이의 숫자로 구분된 IP 주소체계 - IPv4
    • 터미널에서 nslookup을 이용해 IP 주소를 확인할 수 있다
    • IPv4는 각 덩어리마다 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 로 지정하면, 모든 기기에서 서버에 접근할 수 있다.
    • IPv4로 할당할 수 있는 PC가 한계를 넘어서면서 IPv6(IP version 6)가 생겼다.
    • IPv6는 표기법을 달리 책정하여 2^(128)개의 IP 주소를 표현한다

    포트(Port)

    우리가 특정 서버에 접속하려면 URL이나 IP 주소를 입력한다. 인터넷상에서 URL 또는 IP를 토대로 해당 서버가 있는 컴퓨터로 찾아간다. 그런데 대부분의 컴퓨터에서는 여러 개의 프로그램이 동시에 실행되고 있어서, 이 여러개의 프로그램 중 어느 프로그램이 내가 접속하려는 프로그램인지 컴퓨터에게 알려 주어야 한다. 여기서 포트 번호는 어떤 프로그램에 접속 할 것인지 컴퓨터에게 알려준다.

    • 컴퓨터 내부나 외부에서 특정 프로세스를 식별하기 위한 번호이다.
    • 이 숫자는 IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)을 의미합니다.
    • 이미 사용 중인 포트는 중복해서 사용할 수 없다.
    • 포트 번호는 0~ 65,535 까지 사용할 수 있습니다. 그 중에서 0 ~ 1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있습니다. 그중에서 반드시 알아야 할 잘 알려진 포트 번호는 다음과 같다.
      • 22 : SSH – Secure Shell(ssh, sfp) 같은 프로토콜 및 포트 포워딩
      • 80 : HTTP – hypertext transfer protocol – 웹 페이지 전송 프로토콜
      • 443: HTTPS - hypertext transfer protocol over secure sockets

     

    Domain name

    • 웹 브라우저를 통해 특정 사이트에 진입을 할 때, IP 주소를 대신하여 사용하는 주소이다.
    • 만약 IP 주소가 지번 또는 도로명 주소라면, 도메인 이름은 해당 주소에 위치한 상호로 볼 수 있다.

     

    DNS(Domain Name System) 

    • 웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용하며 DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환한다.
    • 네트워크 상에 존재하는 모든 PC는 IP 주소가 있으나 모든 IP 주소가 도메인 이름을 가지는 것은 아니다. 로컬 PC를 나타내는 127.0.0.1 은 localhost 로 사용할 수 있지만, 그 외의 모든 도메인 이름은 일정 기간 동안 대여하여 사용한다.
    • 브라우저의 검색창에 도메인 이름을 입력하여 해당 사이트로 이동하기 위해서는, 해당 도메인 이름과 매칭된 IP 주소를 확인하는 작업이 반드시 필요하다.

     

    도메인의 구조

    출처: https://urclass.codestates.com/content/bd1b02bd-84ff-40de-9725-c758b0556be9?playlist=936

     

    NAT이란?

    NAT(네트워크 주소 변환)는 로컬 네트워크의 장치가 단일 공용 IP 주소를 공유할 수 있도록 하는 기술이다. NAT는 로컬 네트워크에 있는 장치의 사설 IP 주소를 라우터의 공용 IP 주소에 매핑하여 작동다.

     

    public IPPrivate IP의 차이점을 설명하세요.

    • public IP
      • public IP 주소는 인터넷을 통해 직접 액세스할 수 있는 IP 주소이며 인터넷 서비스 공급자(ISP)가 네트워크 라우터에 할당한다.

     

    • Private IP
      • Private IP 주소는 네트워크 라우터가 장치에 할당하는 주소이며 동일한 네트워크 내의 각 장치에는 고유한 사설 IP 주소 (사설 네트워크 주소라고도 함)가 할당된다. 이는 동일한 내부 네트워크의 장치가 서로 통신하는 방식이다.

     

    • public IP 주소와 Private IP 주소의 주요 차이점은 도달 거리와 연결 대상이다.
      • public IP 주소는 검색 중인 모든 정보가 사용자를 찾을 수 있도록 더 넓은 인터넷에서 사용자를 식별하며 Private IP 주소는 사설 네트워크 내에서 동일한 네트워크 내의 다른 장치에 안전하게 연결하는 데 사용된다.

     

    차이점 요약

    • public IP
      • 인터넷을 통해 개인 네트워크 외부에서 통신하는 데 사용
      • 다른 장치에서 절대 재사용하지 않는 고유한 숫자 코드
      • 인터넷을 이용해 찾을 수 있다
      • 인터넷 서비스 제공업체에서 할당 및 제어
      • 유료 서비스

     

    • Private IP
      • 개인 네트워크 내에서 집이나 사무실의 다른 장치와 통신하는 데 사용된다.
      • 다른 개인 네트워크의 다른 장치에서 재사용할 수 있는 고유하지 않은 숫자 코드
      • 장치의 내부 설정을 통해 찾음
      • 개인 네트워크 내의 특정 장치에 할당됨
      • 무료

     

    출처 : https://www.avast.com/c-ip-address-public-vs-private#topic-2

     

    검색창에 http://google.com 을 검색하면, DNS에서 어떤 일이 일어나나요? 이에 대한 설명을 작성하세요.

    • 사용자가 웹 브라우저에 웹 사이트 주소를 입력하면 브라우저는 도메인 이름을 IP 주소로 확인하기 위해 DNS 쿼리를 DNS 서버로 보낸다.
    • IP 주소를 얻으면 브라우저는 IP 주소에서 서버와 TCP 연결을 설정하고 HTTP 요청을 보낸다.
    • 서버는 요청된 웹 페이지가 포함된 HTTP 응답으로 응답하고 브라우저는 웹 페이지를 렌더링한다.

    DNS 조회 정보는 쿼리 컴퓨터 내부에서 로컬로 또는 DNS 인프라에서 원격으로 캐시되는 경우가 많다. DNS 조회에는 일반적으로 8단계가 있지만, DNS 정보가 캐시되어 있으면 DNS 조회 프로세스에서 몇 단계를 건너 뛸 수 있으므로, 더 빨라집니다. 아래 예시는 캐시되지 않은 8단계를 모두 보여줍니다.

     

     

    =====================================================

    참고 자료

     

    https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

     

Designed by Tistory.