Computer Science/네트워크 (Network)

네트워크 아키텍처 | (2) LAN, WAN, 클라이언트-서버 구조

hyuga_ 2023. 11. 17. 23:28

네트워크 노드(= 호스트)와 링크가 무엇인지 한번 살펴봤고, 이제 이를 기반으로 대표적인 네트워크 아키텍처들을 조금 더 이해해보자👍


LAN & WAN (아키텍처 of 범위)

이름 설명
LAN (Local Area Network) 가까운 지역을 서로 연결한 지역 영역 네트워크.
한 건물이나 캠퍼스 등에서 주로 쓰고, 스타크래프트 게임 할 때 많이들 접했을 단어이다. 
WAN (Wide Area Network) 멀리있는 지역을 서로 연결한 광역 네트워크. 국가, 대륙 급의 넓은 범위를 커버한다.

 

LAN: 이더넷

이더넷은 한 개의 방, 하나의 층 등 매우 국소적으로 사용한다. 이더넷 세그먼트는 다음과 같이 구성되어 있다. 

허브들이 호스트들을 연결하고, 이들은 전선들로 연결된다.

만약 A ~ Z 호스트가 있다고 할 때, A가 Z 한테 무언가 데이터를 보내고 싶다고 하자. 

이때 데이터는 Frame 이라고 하는 형태로 보내진다. 

  • Frame에는 소스, 목적지, 헤더(size), 보낼 데이터가 포함되어 있다.

데이터 전송은 브로드 캐스팅 방식으로 이뤄지는데, 다음과 같은 절차를 따른다. 

  1. 그럼 A는 B ~ Z 에게 모두 Frame을 보낸다. 
  2. 목적지 호스트가 아닌 B ~ Y는 이를 읽어들이지 않는다. 
  3. 목적지 호스트인 Z만이 이를 읽는다. 

 

LAN: 브릿지형 이더넷

이더넷 세그먼트들을 Bridge라는 장치로 연결하면 하나의 회사 건물, 하나의 캠퍼스 규모로 네트워크를 키울 수 있다. 

Bridge간의 대역폭은 1Gb/s 정도로 이더넷 세그먼트의 전선(100 Mb/s)보다 더 빠르다. 

 

그러나 아직까지는 LAN, 즉 Local의 규모이다. 

 

WAN

왼쪽부터 ISP용, 기업용, 가정용(공유기)

 

이들을 다시 라우터(= L3 스위치)라는 네트워킹을 위한 하드웨어(컴퓨터)로 연결하면 비로소 MAN, 또는 WAN의 영역으로 간다. 

 

 

 

그리고 라우터로 연결된 WAN(MAN)과 또 다른 네트워크를 또 라우터로 연결하면 네트워크의 커버 범위는 기하급수로 넓어진다. 

이쯤 되면 작은 인터넷이라고 볼 수 있는 수준이 된다. 

 

근데, 여기서 발생하는 한가지 의문점이 있다. 

작은 LAN이 모여 조금 더 큰 LAN이 되고, 이들이 모여 더 큰 규모의 네트워크를 형성한다고 했는데, 

이 모든 부분 네트워크가 통일된 기술과 제품을 사용할까? 그러긴 현실적으로 쉽지 않을 것이다. 

 

때문에, 소스 호스트가 비호환적인 네트워크를 지나서 목적지 호스트로 데이터 비트를 전송할 수 있도록 하는 것이 중요한 의제이다. 

그리고 이를 가능하게 하는 것이, 제품과 기술이 달라도 서로 통신에 대한 규약을 정하면 된다. 

 

이것을 프로토콜(Protocol)이라고 부른다. 

프로토콜은 네트워크의 작동 방식과 관련된 개념이므로 주로 네트워크 모델 이론에서 다룬다. 

 

 


클라이언트-서버 구조 (아키텍처 of 역할 설계)

분류 특징 장점 단점
Client-Server
네트워크
중앙 서버가 리소스 및 서비스를 제공, 클라이언트는 서비스를 이용 자원 관리 및 보안이 용이, 대규모 네트워크 관리에 적합 중앙 서버에 대한 의존도가 높아 서버 장애 시 큰 영향
peer-to-peer
(P2P) 네트워크
모든 장치가 서버와 클라이언트 역할을 수행, 직접적인 데이터 교환 설치가 간편하고 비용이 낮음, 중앙 서버에 대한 의존도가 낮음 대규모 네트워크에서는 관리 및 보안이 어려움

 

현대의 대부분의 네트워크 애플리케이션은 클라이언트-서버 구조에 기초하고 있다. (LAN, WAN와는 다른 측면의 아키텍처임!)

 

클라이언트-서버 구조의 가장 기본적인 단위는 한 개의 서버(server) 프로세스한 개 이상의 클라이언트(client) 프로세스로 구성된다. 

클라이언트는 서비스를 요청하고 보여주는 역할이고, 서버는 리소스를 관리하고 조작하여 클라이언트가 원하는 응답을 해주는 역할이다. 

 

어떤 서비스를 위한 리소스를 관리하는지에 따라 서버는 웹 서버, FTP 서버(파일), 이메일 서버 등 다양하게 분화된다.

 

주의할 점은 클라이언트 or 서버 == 호스트는 아니라는 것이다.

이들은 단지 프로세스일 뿐이다. 

따라서 하나의 호스트가 다수의 클라이언트 프로세스를 실행하거나, 다수의 서버 프로세스를 실행하고 있을 수 있다. 

 

 

트랜잭션 (Transaction)

클라이언트-서버 구조에서의 근본적인 연산은 트랜잭션이라고 부른다.

 

트랜잭션 연산은 다음 4단계로 이루어진다.

  1. (트랜잭션 개시) 클라이언트가 서비스를 필요로 할 때, 서버에 1개의 요청(request)을 보낸다. 
    • ex) 웹 브라우저(클라이언트)가 파일을 필요로 할 때, 웹 서버에 요청을 보낸다.
  2. 서버는 요청을 받고, 해석하고, 리소스를 적절하게 조작한다.
    • ex) 웹 서버는 브라우저로부터 요청을 받고, 디스크 파일을 읽는다.
  3. 서버는 응답(response)을 클라이언트에 보내고, 다음 요청을 기다린다.
  4. 클라이언트는 응답을 받고, 이를 서비스에 맞게 처리한다.
    • ex) 웹 브라우저는 서버로부터 페이지를 한 개 받은 후, 이를 화면에 표시한다. 

 

인터넷 네트워크 모형 (서버-클라이언트)

다음은 서버-클라이언트 모델 위에서 작동하는 Internet 네트워크의 간단한 모형이다. 

 

클라이언트, 서버는 엄밀히 말하면 Host가 아니라 프로세스임에 유의하자. 이 모형에서는 클라이언트 프로세스를 실행 중인 호스트를 간단히 말하는 듯! 네트워크 기능을 활용하려는 프로세스는 Socket이라는 창구를 열어서(즉, Socket interface를 활용해서) 네트워크 관련 작업을 수행한다. 

 

모형상으로는 두 호스트가 서로 연결되어 있는 간단한 구조이지만, 만약 서버-클라이언트 구조임과 동시에 WAN 규모의 네트워크라면(인터넷이니까 당연히 그럴것이다), 실제로 저 두 프로세스는 서로 바다 건너에 있을 수도 있다.