본문 바로가기
Dev/Network

Network System

by Sovereign 2024. 8. 16.

Overview of Network Systems

Choosing a Network Topology

네트워크상의 노드 구성은 토폴로지(Topology)라고 한다. 네트워크의 토폴로지는 두 노드 간의 단일 연결처럼 단순하거나, 또는 노드가 데이터를 교환할 수 있는 노드의 레이아웃처럼 복잡할 수 있다. 네트워크 토폴로지의 유형은 점대점 연결형, 데이터 체인형, 버스형, 링형, 스타형과 그물형의 6가지 기본 범주로 나뉜다.

 

 

 

가장 단순한 형태의 네트워크인 점대점(Point-to-Point) 연결은 두 노드가 하나의 연결을 공유한다.

이러한 유형의 네트워크 연결은 드물지만, 두 노드 간에 직접 통신이 필요할 때 유용하다.

 

 

 

일렬의 점대점 연결을 데이터 체인(Data Chain)이라고 한다.

데이터 체인에서 트래픽은 출발지 노드와 목적지 노드 사이의 모든 노드를 통과해야 한다. 출발지 노드와 목적지 노드 사이의 중간 노드를 일반적으로 홉(Hop)이라고 한다. 모든 네트워크에서 이 토폴로지를 발견할 가능성은 거의 없다.

 

 

 

버스형(Bus) 토폴로지상의 노드들은 공통, 공유 네트워크 링크를 갖는다. 이 토폴로지는 유선 네트워크에서는 일반적으로 사용되지 않고, 무선 네트워크에서 사용된다. 유선 네트워크상의 노드는 모든 트래픽을 보고 자신에게 필요한 트래픽만을 선택하고 무시하거나 수신한다. 무선 네트워크상의 노드는 또한 서로의 트래픽을 볼 수는 있지만, 일반적으로 암호화되어 있다.

 

 

 

일부 광섬유 네트워크 배포에 사용된 링형(Ring) 토폴로지는 데이터가 단일 방향으로 이동하는 폐쇄 루프다.

예를 들어, 노드가 메시지를 제시간에 전송하지 못하면 전송된 메시지는 목적지에 도달하지 않는다. 이러한 설계로 인해 데이터의 속도는 단일 노드보다 느리다.

 

 

 

스타형(Star) 토폴로지에서 중앙 노드는 다른 모든 노드에 개별 점대점 연결을 한다. 유선 네트워크에서는 대부분 이 토폴로지의 형태를 보인다. 중앙 노드는 네트워크 스위치(network switch)이며, 이는 각 노드로부터 데이터를 수신하여 우편 서비스와 같이 목적지 노드로 데이터를 재전송하는 장치다. 장치를 추가하여 연결하는 것만으로 아주 간단하게 네트워크에 노드를 추가할 수 있다. 이 토폴로지에서 데이터는 단 하나의 홉만 이동한다.

 

 

 

그물형(Mesh) 네트워크의 모든 노드는 다른 모든 노드와 직접 연결된다. 이 토폴로지는 단일 노드의 장애가 다른 노드 간의 트래픽에 영향을 주지 않기 때문에 자주 사용된다. 노드 수가 증가할 때마다 비용과 복잡성이 증가하여 대규모 네트워크에 그물형 토폴로지를 사용하기에는 어려움이 존재한다. 이 토폴로지는 대규모 무선 네트워크에서만 볼 수 있는 토폴로지다.

 

 

 

둘 이상의 기본적인 토폴로지를 결합하여 하이브리드(Hybrid) 네트워크 토폴로지를 만들 수 있다. 현실 세계의 네트워크에서 하나의 네트워크 토폴로지로만 구성된 경우는 거의 없다. 대부분은 하이브리드 토폴로지의 형태를 나타낸다.

 

하이브리드 토폴로지의 두 가지 예시를 보여 준다.

스타-링(Star-Ring) 하이브리드 네트워크는 중앙 노드에 연결된 일련의 네트워크다. 

스타-버스(Star-Bus) 하이브리드 네트워크는 버스와 스타 네트워크 토폴로지의 조합으로 형성된 계층적 구조의 토폴로지다.

 

하이브리드 토폴로지는 각 토폴로지의 장점을 활용하고 단점을 개별 네트워크 세그먼트로 제한하여 안정성, 확장성 및 유연성을 향상하기 위해 사용한다.

 

예를 들어, 스타-링 하이브리드 네트워크에서 중앙 노드가 장애가 생길 경우, 장애는 오직 링 간의 통신에만 영향을 미친다. 각각의 링 네트워크는 다른 링과 분리되어 개별적으로 동작한다.

 

 

 

Bandwidth vs. Latency

네트워크의 대역폭은 일정 시간 내에 네트워크를 통해 전송할 수 있는 데이터의 양이다. 예를 들어 광케이블이 인터넷 연결 다운로드 속도가 100Mbps라고 하면, 이론적으로 인터넷 연결이 인터넷 서비스 공급자(Internet Service Provider, ISP)에서 트래픽을 초당 최대 100메가비트로 전송할 수 있어야 한다.

 

일반적으로 ISP가 제공하는 대역폭의 한계 부분만을 제공하기 때문에 대역폭이 높아야 연결 속도도 빠르고 성능도 좋다고 생각하기 쉽다. 하지만 속도가 빠르다고 해서 반드시 성능이 항상 좋은 것은 아니다. 대역폭이 낮더라도 데이터가 적은 경우 대역폭이 높지만 레이턴시를 갖는 네트워크보다 성능이 더 좋을 수 있다.

 

네트워크 레이턴시는 네트워크 리소스 요청을 보내고 응답을 받는 사이에 측정된 시간이다. 레이턴시의 예로 웹사이트의 링크를 클릭한 후 결과 페이지가 화면상에 렌더링 될 때까지 소요되는 지연시간이 있다.

 

종종 소프트웨어 개발자들은 네트워크와 소프트웨어의 레이턴시를 적절 수준으로 관리하는 것이 얼마나 중요한지 잊어버리곤 한다. 대역폭이 크다고 네트워크 성능이 좋다고 결론짓지 않도록 주의하자.

 

웹사이트에서 레이턴시는 클라이언트와 서버 간의 네트워크 레이턴시, 데이터 저장소에서 데이터를 검색하는 데 걸리는 시간, 서버 측에서 동적인 콘텐츠를 검색하는 데 걸리는 시간, 웹 브라우저가 페이지를 렌더링 하는 데 걸리는 시간 등 다양한 요소에 의해 영향을 받는다. 사용자가 링크를 클릭했을 때 높은 레이턴시가 발생한다면 사용자는 네트워크 연결을 중단하게 된다.

 

 

 

Open Systems Interconnection Reference Model

1970년대에 들어 컴퓨터 네트워크가 점점 복잡해지면서 네트워킹을 표준화하기 위한 개방형 시스템 상호 연결(Open Systems Interconnection, OSI) 참조 모델이 만들어졌다. OSI 참조 모델은 프로토콜의 개발과 통신을 위한 프레임워크의 역할을 한다.

 

프로토콜은 네트워크를 통해 전송되는 데이터의 분할과 포맷 순서를 결정하는 규칙 또는 절차를 의미한다. 예를 들어, 전송 제어 프로토콜(Transmission Control Protocol, TCP)을 사용하는 통신에서는 메시지 수신자가 수신을 확인한 경우 확인 응답 메시지를 확인해야 한다. 그렇지 않으면 TCP는 메시지를 재전송할 수도 있다.

오늘날의 OSI 참조 모델은 예전만큼 사용되진 않지만, 하드웨어의 관점에서 로우 레벨의 네트워킹, 라우팅과 같은 일반적인 개념을 이해하는 데 여전히 중요하다.

 

 

 

Layered Structure of the OSI Reference Model

OSI 참조 모델은 네트워크 내의 모든 활동을 7개의 계층으로 구성해 구분한 것이다. OSI 참조 모델의 시각적 표현은 각기 다른 계층을 배열한다. 7개 계층은 맨 아래에서 위로 올라가며, 계층은 맨 아래에 있다.

 

이와 같이 계층을 나누는 것을 소프트웨어에서 말하는 추상화(abstraction)라고 생각하면 된다.

예를 들어, 네트워크 프로토콜을 개발할 때 사용할 수 있는 7계층의 라이브러리가 존재하는 것이 아니다. 작성한 프로그램이 7 계층에서 서비스를 구현하는 것이다. OSI 참조 모델의 7개의 계층은 다음과 같다.

 

계층 계층 설명 예시
7계층 애플리케이션 계층 애플리케이션과 라이브러리는 대부분 애플리케이션 계층과 상호 작용한다. 이 계층은 호스트를 식별하고 리소스를 검색하는 역할을 담당한다. 예: 웹 브라우저
6계층 프레젠테이션 계층 데이터를 표현하는 방법을 정의한다. 예: 암호화, 압축
5계층 세션 계층 노드 간 연결 수립을 관리한다. 예: 세션 종료
4계층 전송 계층 데이터 전송의 신뢰성과 흐름 제어를 담당한다. 예: TCP,
데이터 청크화
3계층 네트워크 계층 네트워크 간 데이터 전송 및 라우팅을 관리한다. 예: IP 주소
2계층 데이터 링크 계층 물리적으로 연결된 노드 간 데이터 전송 및 오류 감지한다. 예: MAC 주소
1계층
물리 계층 실제 데이터 전송을 위한 물리적 매체의 관리한다. 예: 케이블, 비트 전송 속도

 

흔히 네트워크 전송 속도를 이야기할 때 초당 비트(bps 혹은 Bips) 대신 초당 바이트(Bps)를 사용한다고 착각한다. 네트워크 전송 속도를 계산할 때에는 1초당 전송할 수 있는 0과 1, 즉 비트(bit)의 수를 셉니다. 따라서 네트워크 전송 속도는 초당 비트 단위로 측정된다. 전송되는 데이터의 양을 논할 때 초당 바이트를 사용한다.

 

ISP가 다운로드 속도를 100Mbps라고 홍보한다고 해서 100MB 파일을 1초 만에 다운로드할 수 있다는 의미가 아니다. 100Mbps의 다운로드 속도는 초당 최대 12.5MB를 전송할 수 있다고 말하는 것이 정확합니다.

 

 

 

Traffic Transmission Using Data Encapsulation

캡슐화(Encapsulation)는 구현의 세부 정보를 숨기고 기타 세부 정보만 사용할 수 있도록 하는 방법이다. 우체국이 소포를 보내는 것을 생각해 보면, 봉투나 내용물을 캡슐화한다. 이로써 소포가 목적지 우편 주소와 수신자, 소포가 목적지까지 가기 위해 거쳐 가야 하는 정보 등의 일부 중요한 세부 사항을 포함해야 하는데, 그 내용을 봉투가 전송하는 것과는 무관하게 만드는 것이 중요하다.

 

네트워크에서 중요한 것은 소포와 세부 정보뿐이다.

 

일반적으로 스택을 따라 이동하는 데이터에는 페이로드(payload)라고 하며, 메시지 본문(message body)이라고도 한다. 페이로드가 스택을 따라 이동할 때 각 레이어는 이전 계층에 의해 캡슐화됩니다.

 

단일 OSI 계층에서 동작하는 프로토콜도 데이터 캡슐화를 사용한다. 클라이언트와 서버가 모두 웹 콘텐츠를 포함하는 데 사용하는 7계층 프로토콜인 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol, HTTP)의 예를 들 수 있다.

HTTP는 클라이언트의 7계층에서 서버의 7 계층으로 전송하는 헤더 정보를 포함한 메시지를 정의한다. 네트워크 스택은 클라이언트의 요청을 HTTP 서버 애플리케이션에 전달한다. HTTP 서버 애플리케이션은 네트워크 스택에 대한 응답을 시작하여 7 계층 페이로드를 생성하여 클라이언트의 7 계층 애플리케이션으로 다시 전송한다.

 

 

 

동일 계층 내의 클라이언트와 서버 간의 통신은 수평 통신(horizontal communication)이라고 한다. 용어만 듣고는 통신 계층 내에서 각 데이터가 전송하는 것처럼 들리지만, 수평 통신이라고 해도 이동한 데이터는 클라이언트의 네트워크 스택을 따라 하위 계층으로 이동한 후에 서버의 네트워크 스택을 따라 상위 계층으로 이동해야만 한다.

 

첫 전송 프로토콜인 TCP에 대해 알아보자.

TCP는 4계층의 프로토콜로, TCP에서의 페이로드는 세그먼트(segment) 혹은 데이터그램(datagram)이라고 한다. TCP는 5 계층의 페이로드를 받아서 헤더를 추가한 후, 세그먼트를 3 계층으로 전송한다.

 

3 계층의 인터넷 프로토콜(Internet Protocol, IP)은 TCP 세그먼트를 수신하고 이를 헤더와 캡슐화하여 3 계층의 페이로드를 생성하며, 이 페이로드를 패킷(packet)이라고 한다.

 

2계층에는 3 계층으로부터 패킷을 수신하고 헤더와 푸터를 추가하여 페이로드를 만드는데, 이 페이로드는 프레임(frame)이라고 한다. 2계층의 프레임은 비트로 변환되어 각 레이어의 주소를 노드의 네트워크 인터페이스에 할당된 고유 식별자인 미디어 접근 제어(Media Access Control, MAC) 주소로 변환할 수 있다. 푸터에는 에러를 파악하는 데 도움이 되는 체크섬인 프레임 검사 시퀀스(Frame Check Sequence, FCS)가 포함되어 있다.

 

1계층은 2 계층의 페이로드를 비트 형태로 받고, 비트를 서버로 전송한다.

 

서버의 1계층은 비트를 수신하여 프레임으로 변환한 후에 프레임을 2 계층으로 보낸다. 2 계층은 프레임에서 헤더와 푸터를 제거하고 페이로드를 3 계층으로 전달한다. 페이로드가 7 계층에 도달할 때까지 송신자와의 레이어에서 진행한 캡슐화를 역순으로 진행한다. 마지막으로, HTTP 서버는 네트워크 스택에서 클라이언트의 요청을 수신한다.

 

 

 

TCP/IP Model

 

마이크로소프트가 1990년대 초 Windows의 TCP/IP를 구현한 이래로, 오늘날의 모든 시스템이 컴퓨터 네트워킹을 위하여 TCP/IP를 사용한다.

 

전송 제어 프로토콜과 인터넷 프로토콜의 이름을 딴 TCP/IP는 종단 간의 연결을 원칙(end-to-end principle)으로 하는 네트워크다. 각 네트워크의 세그먼트는 비트를 점검하여 전송하고 라우팅하며 필요한 기능을 포함합니다. 그 외의 모든 기능은 종단 포인트 또는 송신자와 수신자의 네트워크 스택에 속한다.

 

OSI 참조 모델과 마찬가지로 TCP/IP는 추상적인 기능을 위해 계층 캡슐화에 의존한다. TCP/IP에서의 계층은 애플리케이션 계층, 전송 계층, 인터넷 계층과 링크 계층이라는 총 네 개의 계층으로 구성된다. TCP/IP의 애플리케이션 계층과 링크 계층은 OSI 참조 모델에 있는 일부 계층들을 단순화한다.

 

TCP/IP의 프로토콜이 OSI 참조 모델의 5계층, 6 계층, 7 계층 사이의 경계를 자주 넘나들기 때문에 OSI 참조 모델의 애플리케이션 계층, 프레젠테이션 계층, 세션 계층을 TCP/IP의 애플리케이션 계층으로 단순화한다. 마찬가지로, OSI 참조 모델의 데이터 링크 계층과 물리 계층을 TCP/IP의 링크 계층으로 단순화한다. TCP/IP와 OSI 참조 모델의 전송 계층과 네트워크 계층은 일대일로 매핑된다.

 

 

 

Application Layer

OSI의 애플리케이션 계층과 마찬가지로 TCP/IP 모델에서의 애플리케이션 계층(application layer)은 소프트웨어 애플리케이션과 직접 상호 작용한다. 우리가 작성하는 대부분의 소프트웨어는 이 계층의 프로토콜을 사용하며, 웹 브라우저가 웹 페이지를 검색할 때에도 네트워크 스택의 이 계층으로부터 데이터를 읽는다.

 

TCP/IP가 특정한 프레젠테이션 기능이나 세션 기능을 정의하지 않기 때문에 일반적으로 TCP/IP 애플리케이션 계층은 세 개의 OSI 계층을 포함한다. 그래서 어떤 애플리케이션에서 프로토콜을 구현할 때에는 OSI 모델의 프레젠테이션 계층, 세션 계층에서 필요로 하는 세부 정보가 중요한데, TCP/IP의 애플리케이션 계층에는 둘 이상의 OSI 계층에 걸쳐 있는 기능을 포함하고 있기 때문에 TCP/IP의 애플리케이션 계층을 OSI 모델의 하나의 계층과 정확하게 맞추기 어렵다.

 

일반적인 TCP/IP 애플리케이션 계층 프로토콜에는 HTTP, 노드 간의 파일 전송을 위한 FTP(File Transfer Protocol) 및 메일을 전자 메일 클라이언트로 보내기 위한 SMTP(Simple Mail Transfer Protocol) 등이 있다. DHCP(Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜)DNS(Domain Name System, 도메인 네임 시스템)도 애플리케이션 계층에서 동작한다. DHCP와 DNS에서는 주소 지정 기능과 이름 확인 서비스를 제공한다. 이들 외에도 다른 애플리케이션 계층의 프로토콜들도 동작할 수 있다. HTTP, FTP 및 SMTP는 TCP/IP의 애플리케이션 계층에서 프레젠테이션 또는 세션 기능을 제공하는 프로토콜을 구현한 예다.

 

 

 

Transport Layer

전송 계층(Transport layer)의 프로토콜은 OSI 모델에서 4계층처럼 두 노드 간의 데이터 전송을 처리한다. 전송 계층의 프로토콜은 출발지에서 전송된 모든 데이터가 목적지로 데이터 무결성(data integrity)을 보장하며 안전하고도 올바르게 전송되도록 한다. 데이터 무결성이라는 게 전송 계층을 통해 송신되는 모든 데이터를 목적지에서 모두 수신할 수 있다는 의미가 아니다.

 

많은 네트워크에서 기본적으로 사용하는 전송 계층의 프로토콜은 TCPUDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)다. 전송 계층에서는 세그먼트 또는 데이터그램의 형태로 데이터를 전송한다.

 

대부분의 네트워크 애플리케이션은 세그먼트의 에러 수정, 흐름 제어, 재전송 및 전송 확인 등의 기능을 전송 계층 프로토콜에 의존하여 처리한다. 그러나 TCP/IP 모델의 전송 계층은 모든 프로토콜에서 이러한 세부 기능을 전부 구현하는 것은 아니다. UDP가 그중 하나다.

 

더 빠른 처리량을 위해 애플리케이션에서 UDP를 사용해야 하는 경우, UDP를 사용하는 애플리케이션에서는 에러 검사 기능이나 세션 관리 등의 기능을 애플리케이션에서 직접 구현해야 한다.

 

 

 

Internet Layer

인터넷 계층(internet layer)은 출발지 노드와 목적지 노드 사이의 상위 계층에서 데이터 패킷을 라우팅 하며, 중층 이기종 물리적 매체를 사용하는 여러 네트워크를 통해 라우팅 한다. OSI의 3 계층인 네트워크 계층과 동일한 기능을 가지고 있다.

 

TCP/IP 계층의 호스트 식별 및 라우팅을 제공하는 프로토콜에는 인터넷 프로토콜 버전 4(IPv4), 인터넷 프로토콜 버전 6(IPv6), 경계 경로 프로토콜(Border Gateway Protocol, BGP), 인터넷 제어 메시지 프로토콜(ICMP), 인터넷 그룹 관리 프로토콜(IGMP), 인터넷 프로토콜 보안(IPsec)이 있다. 데이터가 목적지에 도달하도록 보장하는 데 필수적인 역할을 한다.

 

 

 

Link Layer

OSI 참조 모델의 1 계층과 2 계층에 해당하는 링크 계층(link layer)은 TCP/IP 프로토콜의 핵심적인 부분과 물리적인 매체 사이의 인터페이스다.

 

링크 계층의 ARP(Address Resolution Protocol, 주소 결정 프로토콜)는 노드의 IP 주소를 네트워크 인터페이스의 MAC 주소로 변환한다. 링크 계층은 프레임을 물리적 네트워크에 전달하기 전에 각 프레임의 헤더에 MAC 주소를 포함한다.


출처

https://www.yes24.com/Product/Goods/105913266

 

Go 언어를 활용한 네트워크 프로그래밍 - 예스24

간결하며 신뢰할 수 있는 네트워크 소프트웨어!『Go 언어를 활용한 네트워크 프로그래밍』은 Go 언어를 사용하여 보안에 강하며, 신뢰할 수 있고, 가독성이 좋은, 그리고 실제 서비스에 사용할

www.yes24.com

Network Topology Diagrams and Selection Best Practices for 2022 (spiceworks.com)

 

Network Topology Diagrams and Selection Best Practices for 2022

Network topology is the physical arrangement of the endpoints and links in an enterprise network. Click here for a detailed explanation.

www.spiceworks.com

Data Encapsulation and the TCP/IP Protocol Stack (System Administration Guide: IP Services) (oracle.com)

 

Data Encapsulation and the TCP/IP Protocol Stack (System Administration Guide: IP Services)

Data Encapsulation and the TCP/IP Protocol Stack The packet is the basic unit of information that is transferred across a network. The basic packet consists of a header with the sending and receiving systems' addresses, and a body, or payload, with the dat

docs.oracle.com

TCP/IP 모델 - GeeksforGeeks

 

TCP/IP Model - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org