네트워크(Network)의 전반적인 이해

김진호·2023년 7월 18일
0

Study

목록 보기
2/4
들어가기 앞서...

0. 네트워트(Network) 란?

  • 네트워크는 Net + Work 의 합성어이다.
  • 말그대로 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 형태를 의미한다.
  • 즉, "두 대 이상의 컴퓨터들을 연결하고 서로 통신하는 것"
    • IEEE에서 정의한 Network : 상호 연결된 여러 장치나 시스템 간의 데이터 및 자원 공유를 위한 구조이며, 데이터를 교환하고 통신하기 위한 규칙, 프로토콜 및 기술을 포함한다.

1. URL(Uniform Resource Locator)

  • URL은 웹 주소이다
    ; 네트워크 상에서 자원(Resourse)의 위치를 알려주는 주소이다.
  • 우편 주소와 비슷하다고 생각하면 된다.

 scheme://<user>:<password>@<host>:<port>/<url-path>
  • 아래 URL의 예시를 보며 차근차근 알아보자.

1) 스키마

  • 브라우저가 리소스를 요청하는 데 사용해야 하는 프로토콜을 나타낸다.
  • 일반적으로 웹사이트의 경우 프로토콜은 HTTPS 또는 HTTP(보안되지 않은 버전)을 사용한다.

2) 권한

  • 권한(authority)이 뒤따르며 :// 에 의해 스키마와 구분된다.
  • 권한에는 콜론으로 구분된 도메인(예: www.example.com)과 포트(80)가 모두 포함된다.

  • 도메인 (Domain) 요청하는 웹 서버를 나타낸다.
  • 서버 이름에 도메인 이름이나 IP 주소를 입력할 수 있다.
    (IP 주소를 직접 사용하는 것은 매우 불편하기 때문에 보통 DNS을 통해 도메인 이름을 사용한다.)

  • 포트 (Port) 는 웹 서버의 리소스에 접근하는 데 사용되는 기술적인 "GATE"를 나타낸다.
  • HTTP 프로토콜의 표준 port(HTTP의 경우 80, HTTPS의 경우 443)를 사용하는 경우엔 일반적으로 생략한다.
    (그렇지 않은 경우 필수적으로 적어 주어야 한다.)

HTTP 프로토콜은 네트워크 통신을 작동하게 하는 기본 기술이다.
HTTPS(Hypertext Transfer Protocol Secure)는 HTTP의 확장 버전 혹은 더 안전한 버전이라고 보면 된다.
HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 암호화된 연결을 설정힌다.

3) 리소스(파일) 경로

  • 웹 페이지의 상세 주소에 해당한다.

4) 파라미터(매개변수)

  • 웹 서버에 제공되는 추가 매개변수입니다.
  • URL 주소와 쿼리스트링은 "?"로 구분되며 "?" 이후의 값이 파라미터이다.
  • 변수(key)와 값(value)의 쌍으로 구성되며 "key=value" 형태로 사용된다.
  • 만약 여러 쌍의 변수와 값을 전달할 경우, 각각의 쌍을 "&"로 구분해준다.
    이러한 파라미터는 & 기호로 구분된 키/값 쌍으로 표현된다.
  • 이는 추가로 서버에 보내는 동적 데이터에 해당한다.

5) 앵커

  • 웹 페이지의 특정 위치를 가리키는 링크이다. (일종의 "책갈피" 역할을 한다고 생각하면 편하다.)
  • 사용자가 앵커를 클릭하면 해당 위치로 스크롤되거나 해당 위치로 이동하여 내용을 확인할 수 있다.
  • 프래그먼트 식별자라고도 하는 # 뒤의 부분은 요청과 함께 서버로 전송되지 않는다는 점을 주의해야 한다.

2. 클라이언트-서버 구조

  • Client - Server Architecture 란 무엇일까?

    • 간단한 예시를 들어보자
    • 마치 배달을 위해 피자를 주문하는 것과 비슷하다.
    • 피자를 주문하기 위해 가게에 전화하면, 직원은 주문을 받은 후 배달한다.
    • 이 비유는 클라이언트-서버 아키텍처의 기본 원칙과 매우 흡사하다.
  • 서버 / 클라이언트 / 데이터베이스 개념

    클라이언트(Client) : 서비스를 요청(Request)하는 컴퓨터
    서버(Server) : 요청된 서비스를 제공(Response)하는 컴퓨터
    // 3-tier 아키텍쳐의 경우 데이터 베이스를 추가적으로 배치한다.
    데이터베이스 : 실제 리소스를 저장하는 공간 (일종의 서버라고 볼 수 있음)


3. 클라이언트-서버 구조의 작동 방식

  • 클라이언트-서버 아키텍처는 서비스를 제공하는 요소(Server)해당 서비스를 사용하는 요소(Client) 두 가지 요소로 구성되어 있다고 하였다.

  • 이러한 프로세스를 조금 더 이해하기 위해 브라우저가 서버와 상호 작용하는 방법을 알아보자.

  • 사용자는 도메인 이름을 사용하여 URL을 입력했다고 가정하자.
  • 브라우저가 DNS(도메인 이름 시스템) 서버에 요청을 보낸다.
  • DNS 서버가 응답한 후, 브라우저는 DNS 서버에서 제공한 웹 서버의 IP에 HTTP(혹은 HTTPS) 요청을 보낸다.
  • 요청에 따라 서버는 필요한 웹 사이트 resourse들을 전송한다.
  • 궁극적으로 웹 브라우저는 파일들을 받아 처리하고, 사용자에게 요청한 화면을 보여준다.

위 4단계의 과정은 결국 2가지 형태의 동작으로 귀결된다.

웹 브라우저가 서버에 필요한 자원을 달라고 달라고 하는 요청(request)
요청한 자원을 웹 브라우저에게 제공하는 응답(response)


4. 클라이언트-서버 구조의 유형

1) 2-Tier 아키텍처

: 클라이언트와 서버로 구성되며, 이 둘 사이의 직접적인 통신을 갖는다.

서버는 데이터 저장 및 처리를 모두 담당한다.
클라이언트는 직접 서버와 통신하여 필요 자원을 요청하고 응답을 받는다.
간단하고 직접적인 구조를 갖고 있으며, 주로 작은 규모의 응용 프로그램에 사용된다.

2) 3-Tier 아키텍처

: 클라이언트, 애플리케이션 서버, 데이터베이스 서버로 구성된다.

클라이언트는 애플리케이션 서버와 통신하여 필요한 데이터와 기능을 요청하고,
애플리케이션 서버는 해당 요청을 처리한 후 필요한 데이터를 데이터베이스 서버로부터 가져온다.
그리고 요청받은 자원을 클라이언트에게 반환해준다.

3-tier 아키텍처는 비즈니스 로직과 데이터 관리를 분리하여 시스템의 확장성과 유지보수성을 향상시킬 수 있다는 장점이 있어 보편적으로 사용되고 있다.

  • Local DataBase
    • 특정 기기 또는 로컬 환경에 설치되어 동작하는 데이터베이스 시스템을 말한다.
      이러한 데이터베이스는 주로 단일 장치에서 사용되며, 해당 장치 내에서 데이터를 저장/관리할 수 있다.
    • EX) 관계형 데이터베이스 관리 시스템(RDBMS)인 SQLite

    • 하지만, 이는 동기화가 어려우며 다른 장치간의 상호작용이 불가능하다는 단점이 있다.

사용자의 개인 설정, 환경, 기록 등의 user preference, cache 등 외에는
별도의 데이터 서버를 활용해줘야 한다.

5. 실제 HTTP 통신 과정

  • 자세한 통신 과정은 다음 게시물에서 따로 다루겠다.

참고한 사이트 :
https://intellipaat.com/blog/what-is-client-server-architecture/?US
https://developer.mozilla.org/ko/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL
https://velog.io/@jsj3282/%EC%9B%B9%EA%B3%BC-%EC%9B%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

profile
멋쟁이

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

정보가 많아서 도움이 많이 됐습니다.

답글 달기