[Network] Fundamentals Of Network

먹보·2023년 2월 20일
0

MUK_BO's Network

목록 보기
1/8

웹 서비스를 배움에 있어 서버를 운영하다보면 맞닥들이게 되는 문제가 많은데 그 중에 하나가 바로 네트워크 관련 이슈이다. 세상은 네트워크를 통해 연결되어 있으며, 연결된 직후부터는 다양한 데이터들을 주고받게 되고 여기서 일어날 수 있는 문제가 너무나 방대하고 중요하기에 기본부터라도 차근 차근 알아보고자 이제부터 하나 하나 씩 정리해보려고 한다.

✍ Network란... ?

📝 정의

컴퓨터 기술에서 네트워크란 정보를 서로 공유 할 수 있게 연결된 디바이스 혹은 시스템을 뜻한다.

이를 서버를 배우는 입장에서 조금 더 용어를 감미하여 설명해보면,

네트워크란 노드와 링크가 서로 연결되어 있어 리소스를 공유하는 집합을 의미하며, 여기서 노드란 서버, 라우터, 스위치등으로 네트워크 장치를 뜻하며 링크는 유선 또는 무선을 의미한다.

말이 어렵지 그냥 어떤 두 곳이 서로 연결되어 정보를 공유한다고 생각하자.

📝 특징

  1. 연결성 - 디바이스와 시스템이 서로 연결되어 무엇이든 공유가 가능하다.

  2. 확장성 - 네트워크는 상황에 따라 유연하게 연결 설정이 가능하다.

  3. 신뢰성 & 보안성 - 네트워크는 유용한 정보를 옮김에 있어 해킹에 민감해야 하기 때문에 신뢰성을 가질 필요가 있다.

  4. 성능 - 네트워크는 어플리케이션 및 서비스를 실행함에 따라 그 성능을 준수 할 필요가 있다.

  5. 관리 - 네트워크는 관리가 용이하도록 설계되어야 한다.

  6. 접근성 - 사용자의 환경에 상관없이 접근하기 쉬워야 한다.

  7. 통합성 - 네트워크들은 기기 또는 시스템간의 호환성을 위해 기본 프로토콜을 지키며 설계되어야 한다.

✍ 네트워크 분류

네트워크는 규모를 기반으로 손쉽게 분류가 가능하며 크게 3가지로 나눠진다.

📝 WAN

광역 네트워크를 뜩하며 국가 또는 대륙 같은 가장 넓은 의미의 네트워크 입니다.

📝 Metropolitan Area Network (MAN)

대도시를 연결하는 네트워크이며 여러 LAN들과 다른 네트워크들로 구성되어 있습니다.

📝 Local Area Network (LAN)

근거리 통신망을 뜻하며 같은 건물이나 캠퍼스 같은 좁은 공간에서 운영된다. 전송속도가 빠른데 비해 물리적으로 공간이 한정적입니다.

📝 Personal Area Network (PAN)

한 개인의 특정 반경내에 모든 디바이스들을 연결하는 네트워크를 뜻합니다.

📝 Campus Area Network (CAN)

특정 범위내에 있는 LANs을 연결하는 네트워크를 뜻합니다.

📝 Storage Area Network (SAN)

중앙 저장 장치에 빠르게 접속 할 수 있는 환경을 조성해주는 네트워크를 뜻 합니다.

📝 Wireless Local Area Network (WLAN)

WI-FI와 같이 한정된 공간 내에 무선으로 다양한 기기들이 연결 될 수 있게끔 도와주는 네트워크 입니다.

✍ 처리량과 지연시간

📝 처리량 (Throughput)

링크를 통해 전달되는 단위 시간당 데이터양을 뜻하며, 단위로는 bps(bits per second)를 사용한다.

처리량에 영향을 주는 요소로는 트래픽, 대역폭, 네트워크 간 발생한 에러, 그리고 하드웨어의 스펙에 영향을 받는다. 그렇기 때문에 어떤 상황에서든 많은 처리량을 처리할 수 있는 것이 좋은 네트워크이다.

대역폭이란 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수이다.

윈도우 OS의 경우, netstat을 Powershell에 연결하면 현재 연결되어 있는 네트워크들을 볼 수 있다.

확실히 아는 만큼 보인다고, 예전에는 사진에 나와있는 숫자들의 의미가 무엇인지 정확히 몰랐는데 속도가 일초동안 처리 할 수 있는 초당 전송 비트 수라고 보면 되는 것 같다.

📝 지연시간 (Latency)

기존에 한 번 토이프로젝트에서 정보 처리에 Latency를 줄 때 그냥 단순한 용어인줄 알았는데..지금 보니 컴퓨터 용어였다.

지연시간 (Latency)란 어떤 데이터가 링크로 연결되어 있는 두 노드 사이를 왕복하는데 걸리는 시간이다.

이러한 Latency는 링크의 종류 즉 유/무선 이란 매체 타입, 패킷 크기, 그리고 라우터의 패킷 처리 시간에 영향을 받는다.

당연하게도 많은 처리량을 짧은 Latency 내에 처리하는 것이 좋은 네트워크 일 것이다.

✍ 토폴로지와 병목 현상

📝 네트워크 토폴로지

네트워크를 설계할 때, 네트워크 토폴로지를 고려한다고 하는데...예전 대학교 수학시간 때 배운 위상수학과 같은 개념으로 이해하려다가 머리가 돌아가지 않아 찾아봤는데 생각보다 단순했다..

우선 일반적인 토폴로지의 개념이다.

쉽게 말해 체계적인 분류라고 생각하면 된다. 노드와 링크가 서로 어떤 형태로 분류 혹은 배치가 되어 있는 지를 나타내는 방식이다.

네트워크 토폴로지에는 다양한 종류가 있는데 하나 하나 간략하게 알아보자.

✏️ 트리 토폴로지 (Tree Topology)

마치 트리 구조의 알고리즘을 보는 것과 비슷한데 트리 토폴로지는 계층형 토폴로지라고도 불리운다.

트리 토폴로지의 실생활 예제

  1. 케이블 TV 네트워크 - 집과 상권에 시그널을 퍼트리기 위해서 트리 토폴로지를 사용 할 때가 있다.

  2. 기업 네트워크 - 많은 기업들이 트리 토폴리지 설계 방식을 준수하며 네트워크 설계를 한다.

  3. 전화기 네트워크 - 종합 정보 통신망(ISDN 기준)을 적용하는 전화 회사의 경우 트리 토폴로지를 사용한다.
    => 전화, 데이터, 화상 등 각종 미디어를 디지털 단일망으로 연결하는 종합적인 통신 서비스망.

장점

  1. 확장성 - 노드의 추가 및 삭제가 용이하다.

  2. 중앙 통제 및 관리 - 계층형 구조이기에 모니터와 문제 해결이 비교적 간단하다.

  3. 유연성 - 트리 토폴로지는 LAN 및 WAN에 모두 적용이 가능하기 때문에 유연하다.

단점

  1. 종속성 - 상위 노드가 만약 오류가 난다면, 그 밑에 하위 노드들은 전부 에러가 난다.

  2. 설계 한계 - 계층형 구조로 인해 설계가 단조롭다.

  3. 비용 - 하드웨어 및 케이블의 필요사항 증가에 따라 다른 네트워크 토폴로지에 비해 비용이 많이 든다.

  4. 난이도 높은 구축 - 네트워크가 커지면 커질 수록, 설계 및 계획 수립이 어려워진다.

✏️ 버스 토폴로지 (Bus Topology)

버스 토폴로지는 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 서로 공유하는 네트워크 구성을 뜻하며, 근거리 통신망(LAN)에서 주로 사용한다. 이 때 연결된 중앙 통신 회선을 버스라고 한다.

버스 토폴로지의 실생활 예제

  1. CCTV 시스템 - 중앙 관제탑에 여러대의 카메라를 연결하기 위해서 버스 토폴로지 방식을 고수한다.

  2. 자동화 시스템 - 온도, 센서, 컨트롤러 등을 관리하는 자동화 시스템의 경우에도 버스 토폴로지를 사용한다.

장점

  1. 쉬운 설치 - 중앙 케이블 하나면 연결이 가능하기 때문에 설치가 쉽다.

  2. 경제적 - 최소한의 케이블과 하드웨어를 요구하기에 경제적이다.

  3. 용이한 확장 - '버스'에 기기 또는 시스템 하나를 추가하는 것이기에 확장이 쉽다.

  4. 간편한 디자인 - 디자인이 심플하여 계획 및 설계 난이도가 낮다.

단점

  1. 제한적인 확장 - '버스'는 단일 케이블이기에 '버스'의 한계가 곧 확장의 한계이다.

  2. 종속성 - '트리'와 비슷하게 '버스'가 에러나면 네트워크 전체가 다운된다.

  3. 문제 처리의 어려움 - 위의 종속성과 같은 맥락인데 모든 디바이스가 같은 케이블에 연결되어 있기 때문에 문제를 격리하기가 어렵다.

  4. 제한된 대역폭 - 모든 기기들이 같은 채널들을 공유하고 있기 때문에 대역폭에 제한이 있다.

  5. 스푸핑(Spoofing)에 취약하다 - '버스' 토폴로지는 스푸핑 중 특히 MAC 스푸핑에 취약하다.

    스푸핑(Spoofing)이란 LAN 상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시켜 데이터가 해커의 네트워크로 우회화여 들어가게끔 조작하는 것이다. 스푸핑에는 IP, email, DNS, MAC 스푸핑이 존재한다.

✏️ 스타 토폴로지 (Star Topology)

스타 토폴로지는 네트워크 설계 시 가장 많이 쓰이는 방식 중 하나이며, 중앙에 있는 노드에 다른 노드들이 모두 연결된 네트워크 구성을 뜻 한다.

스타 토폴로지의 실생활 예제

  1. 공항 - 공항의 네트워크 관리 시스템은 중앙 관리 시스템에서 각 각의 보딩 게이트, 세큐리티 시스템, 물류 시스템등으로 나눠져 있다.

  2. 텔레커뮤니케이션 네트워크 - 전화국, 인터넷 서비스 업체를 포함한 많은 텔레커뮤니케이션 네트워크 회사들이 주로 스타 토폴로지를 사용한다.

장점

  1. 용이한 확정성 - 위에서 언급한 토폴로지와 비슷한게 네트워크를 확장하는데 있어 노드 추가가 용이하다.

  2. 원활한 에러 해결 - 중앙 노드가 아닌 다른 곳에서 발생한 에러의 경우, 식별과 격리가 쉬워 편리하다.

  3. 높은 성능 - 패킷의 충돌 발생 가능성을 줄여 효율적인 데이터 송수신을 가능케하여 높은 성능을 자랑한다.

  4. 독립성 - 중앙 노드 외 다른 노드들은 서로 간섭을 하지 않기 때문에 하나의 노드에서 발생한 문제가 다른 노드에 영향을 주지 않는다.

단점

  1. 종속성 - 스타 토폴로지 역시, 중앙 노드를 관리하지 못할 경우 전체적인 네트워크의 장애를 일으킨다.

  2. 비용 - 중앙 노드 또는 허브를 필요로 하고 각각의 노드에 연결해야 하는 케이블 설계를 위한 자금 마련이 필요하다.

  3. 거리의 한계 - 모든 노드들이 중앙허브에 종속되어 있기 때문에, 거리면으로는 자유롭지 못하다.

✏️ 링형 토폴로지 (Ring Topology)

링 토폴로지는 그림에서 알 수 있듯이 노드들이 서로 원형을 이룬채로 이어져 있으며, 하나의 연속된 길을 통해 데이터가 노드에서 노드로 공유된다.

장점

  1. 효율성 - 데이터가 링을 통해 단 방향으로 흐르기 때문에, 매우 효율적이며, 충돌을 줄여주고 대용량 트래픽에 대응이 쉽다.

  2. 쉬운 설계 - 기준점이 되는 노드에서 가장 가까운 노드에만 연결하면 되는 것이다 보니 설치가 쉽기에 중소 네트워크에서 많이 애용한다.

단점

  1. 종속성 - 하나의 회선으로 구성되어 있기 때문에 장애가 발생하면 전체 네트워크에 문제가 발생한다.

  2. 불리한 확장성 - Scale Up을 위해서는 노드 간에 연결을 잠시 끊어야 할 필요도 있기 때문에 쉽지 않다.

  3. 오랜 지연시간 - 데이터를 전송하는데 있어 효율적이라고 하긴 했지만 특정 케이스에서는 데이터 송수신에 있어 Latency가 오래 걸리 수 있다.

✏️ 메시 토폴로지 (Mesh Topology)

메시 토폴로지의 실생활 예제

  1. 사물형 인터넷(IoT)

  2. 군용 통신망

장점

  1. 신뢰성 - 메시 토폴로지는 노드간의 연결 고리가 다양하기 때문에 하나의 경로가 닫혀도 다른 경로로 데이터 송수신이 가능해 네트워크의 작동 신뢰를 높여준다.

  2. 학장성 - 메시 토폴로지는 전체 구조 및 성능에 영향없이 네트워크의 성능을 확장하기가 쉬어 주로 큰 규모의 네트워크에서 사용하는 편이다.

  3. 보안성 - 모든 노드에서 데이터가 암호화 및 인증 절차를 거치기 때문에 높은 보안성을 가지고 있다.

단점

  1. 비용 - 메시 토폴로지는 설계 및 유지에 있어 많은 비용이 든다.

  2. 복잡성 - 메시 토폴로지는 노드간에 경로가 다양하기 때문에 문제 식별 및 해결이 쉽지 않다.

📝 병목 현상 (Bottleneck)

병목현상이란 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제안을 받는 형상을 뜻한다.

✏️ 병목 현상의 주요 원인

  1. 과도한 트래픽을 인한 네트워크 체증

  2. 네트워크에 사용되는 하드웨어 성능 부족

  3. 네트워크에 있는 소프트웨어의 한계

  4. 네트워크 토폴로지 설계에서 오는 한계

  5. 오래된 보안 방침으로 인한 병목현상

  6. 네트워크에 연결되어 있는 디바이스들 간의 너무 먼 거리

위에서 보았듯이, 병목현상에는 다양한 원인이 존재하지만 네트워크 설계 방식 또한 주요 원인 중 하나이기에 네트워크 설계에 앞서 본인이 운영할 서비스의 구성을 미리 들여다보고 올바른 토폴로지를 적용하는 것이 핵심이다. 만약 적용을 하였더라도 토폴로지 구성을 제대로 알고 있어야 추후에 확장 및 에러 해결이 쉬워진다.

profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글