개발자와 네트워크에 대한 이야기를 조금 해보겠다.
개발자가 네트워크를 이해하면 구체적으로 어떤 점에서 유리할까?
개발자의 업무는 크게 두 종류로 나뉜다.
하나는 프로그램을 만드는 업무, 다른 하나는 만들어진 프로그램을 유지 보수하는 업무이다.
네트워크 지식은 두 가지 업무에 모두 도움을 줄 수 있다.
따라서 채용 시 네트워크에 대한 지식을 강조하거나
검증하는 기업이 존재한다.
프로그램을 만드는 업무에서 네트워크 지식을 활용하는 경우
먼저 프로그램을 만드는 업무에서 어떤 경우에 네트워크 지식이 활용될까?
프로그래밍 언어나 웹 프레임워크 혹은 라이브러리를 사용할 때 네트워크에 대한
배경지식이 있어야만 활용할 수 있는 기능들이 있다.
예를 들어 TCP/UDP와 같은 네트워크에 대한 지식이 없다면
스프링 프레임워크의 기능을 제대로 이해하고 활용하기 어렵다.
열심히 개발한 웹사이트를 사용자에게 선보이기 위해
포트 번호 등 다양한 네트워크 배경지식들이 필요하다.
또 프로그램의 안전성과 안정성을 높이고 싶을 때도 네트워크 지식은 유용하게 활용된다.
프로그램을 유지 보수하는 업무에서 네트워크 지식을 활용하는 경우
프로그램을 유지 보수하는 업무에서도 마찬가지이다.
사소하게는 갑자기 인터넷 연결이 안 되는 문제부터,
웹 서버가 동작하지 않는 문제까지,
네트워크 지식은 문제 방생 시 해결의 큰 실마리가 된다.
네트워크 거시적으로 살펴보기
네트워크를 본격저긍로 학습하기 전에 알아야 할 배경지식은 크게
거시석인 관점과 미시적인 관점으로 나눌 수 있다.
네트워크는 통신망으로 그래프의 형태를 띄우고 있다.
노드와 노드를 연결하는 간선으로 이루어진 자료구조 처럼
네트워크의 기본 구조는
모든 네트워크는 '노드', 노드를 연결하는 '간선',
노드 간 주고받는 '메시지'로 구성된다.
노드는 정보를 주고받을 수 있는 장치,
간선은 정보를 주고받을 수 있는 유무선의 통신 메체라고 이해하면 쉽다.
호스트
네트워크의 가장자리에 위치한 노드는
네트워크를 통해 흐르는 정보를 최초로 생성 및 송신하고, 최종적으로 수신한다.
이는 서버 컴퓨터가 될 수 있고, 개임 데스크톱, 노트북, 스마트폰이 될 수도 있다.
요즘은 종류가 더 다양해져 시계, 자동차, 냉장고, TV 등이 될 수 있다.
우리가 일상에서 사용하는 네트워크 기기 대부분이 여기에 속한다고 봐도 무방하다.
이러한 가장자리 노드를 네트워크에선 호스트라고 한다.
(호스트는 네트워크의 가장자리에 잡고있다는 점에서 종단 시스템이라고도 한다.)
때로는 호스트가 네트워크상에서 특정한 역할을 수행하기도 하는데,
대표적인 역할로는 서버와 클라이언트가 있다.
서버는 '서비스를 제공하는 호스트'이다.
여기서의 (어떠한) 서비스는 파일이 될 수도, 웹 페이지, 메일이 될 수도 있다.
파일을 쓸 땐 파일 서버, 웹페이지는 웹 서버, 메일이 되면 메일 서버가 되는 것이다.
(serve : 제공하다 라는 의미를 담고있다.)
반면
클라이언트란 '서버의 응답을 제공받는 호스트'이다.
네트워크 장비
네트워크 노드가 호스트만 있는 것은 아니다.
네트워크 가장자리에 위치하지 않은 노드,
즉 호스트간 주고받을 정보가 중간에 거치는 노드도 있다.
이를 중간 노드라고 한다.
이러한 중간 노드를 네트워크 장비라 통칭하겠다.
++ PLUS ++
호스트 역할을 수행할 수 있는 노드, 네트워크 장비 역할을 수행할 수 있는 노드가 있다.
서버 역할을 수행할 수 있는 노드, 클아이언트 역할을 수행할 수 있는 노드가 있다.
호스트와 네트워크 장비, 서버와 클라이언트는 베타적인 개념이 아니다.
++++++++
통신 매체
각 노드를 연결하는 간선이 통신 메체이다.
이 통신 메체에는
노드를 유선으로 연결하는 유선 매체,
노드를 무선으로 연결하는 무선 메체가 있다.
메시지
통신 매체로 연결되 ㄴ노드가 주고받는 정보를 메시지라고 한다.
메시지는 웹 페이지가 될 수도, 파일이 될 수도, 메일이 될 수도 있다.
요컨대, 네트워크는 가장자리 노드인 호스트, 중간 노드인 네트워크 장비,
노드들을 연결하는 간선인 통신 매체, 노드들이 주고받는 정보인 메시지로 구성된다.
범위에 따른 네트워크 분류
위 요소들이 모이고 모여 네트워크를 형생했다고 가정해보자.
이때, 호스트가 메시지를 주고받는 범위는 일반 가정이 될 수도 있고,
기업이 될 수도 있으며,
때로는 도시나 국가가 될 수도 있다.
즉, 네트워크 구성 범위는 다양하다.
네트워크의 구성 범위가 다양한 만큼,
네트웤크를 범위에 따라 분류하는 기준도 존재한다.
네트워크는 범위에 따라 LAN과 WAN으로 구분한다.
LAN
LAN은 Local Area Network의 약자이다.
이름 그대로 가까운 지역을 연결한 근거리 통신망을 의미한다.
WAN
WAN은 Wide Area Network의 약자로 이름 그대로 먼 지역을 연결하는 광역 통신망을 의미한다.
멀리 떨어진 LAN을 연결할 수 있는 (넓은 범위의)네트워크가 바로 WAN이다.
앞서 인터넷은 네트워크의 네트워크라 하였다.
인터넷이 WAN으로 분류된다.
같은 LAN에 속한 호스트와 메시지를 주고받아야 할 때는 WAN이 필요하다.
인터넷을 사용하기 위해서 접속하는 WAN은 ISP(internet service provider)라는
인터넷 서비스 업체가 구축하고 관리한다.
ISP는 사용자에게 인터넷과 같은 WAN에 연결 가능한 회선을 임대하는 등
WAN과 관련한 다양한 서비스를 제공한다.
인터넷을 사용하기 위해 ISP와 계약하여 인터넷 사용 요금을 내는 것이 이러한 이유 때문이다.
메시지 교환 방식에 따른 네트워크 분류
호스트들은 네트워크를 통해 어떤 방식으로 주고 받을까?
네트워크로 메시지를 주고받는 방식은
대표적으로 회선 교환 방식과 패킷 교환 방식으로 나눌 수 있다.
각 방식을 사용하는 네트워크를 각각
회선 교환 네트워크, 패킷 교환 네트워크라고 한다.
회선 교환 방식
회선 교환 방식은 먼저 메시지 전송로인 회선(circuit)을 설정하고
이를 통해 메시지를 주고받는 방식이다.
'회선을 설정한다'라는 말은 '두 호스트가 연결되었다', '전송로를 확보하였다'라는 말과 같다.
회선 교환 네트워크에서는 호스트들이 메시지를 주고받기 전에 두 호스트를 연결한 후,
연결된 통로로 메시지를 주고 받는다.
예를 들어 다음 그림과 같은 회선 교환 네트워크에서 A와 B가 통신하려고 한다면,
메시지를 주고받기 전에 A와 B 사이를 연결하는 회선(붉은 선)을 설정해야
이 경로를 통해 메시지를 주고받을 수 있기 때문이다.
A와 D가 통신하려고 한다면 어떨까?
마찬가지로 메시지를 주고받기 전에 A와 D사이의 회선(붉은 선)을
설정해야만 해당 경로로 메시지를 주고받을 수 있다.
회선 교환 바식은 우선 두 호스트 사이에 연결을 확보한 후에 메시지를 주고받는 특성 덕분에
주어진 시간 동안 전송되는 정보의 양이 비교적 일정하다는 장점이 있다.
회선 교환 네트워크가 올바르게 작동하기 위해서는
호스트 간의 회선을 적절하게 설정해야 한다.
이 역할을 수행하는 회선 교환 네트워크 장비로는 회선 스위치가 있다.
즉, 회선 스위치는 호스트 사이에 일대일 전송로를 확보하는 네트워크 장비이다.
회선 교환 방식의 대표적인 사례가 바로 전통적인 전화망이다.
송신자와 수신자 사이에 연결이 설정되어야 하고,
한 번 연결이 설정되면 연결된 전송로를 통해서면 통화가 가능한 것 처럼 말이다.
회선 교환 방식의 단점
회선의 이용 효율이 낮아질 수 있다는 것이다.
가능한 모든 회선에 끊임없이 메시지가 흐르고 있어야만
회선의 이용 효율이 높아진다.
이를 반대로 이야기하면 메시지를 주고받지 않으면서 회선을 점유하는 것은 낭비이다.
패킷 교환 방식
패킷 교환 방식은 회선 교환 방식의 문제점을 해결한 방식으로,
메시지를 패킷이라는 작은 단위로 쪼개어 전송한다.
여기서 패킷은 패킷 교환 네트워크상에서 송수신되는 메시지의 단위이다.
현대 인터넷은 대부분 패킷 교환 방식을 이용한다.
예를 들어서 패킷 교환 방식으로 2GB 크기의 파일을 다운로드 한다면,
패킷의 크기만큼 분할되어 전송된다.
그리고 이렇게 쪼개진 패킷들은 수신지인 컴퓨터에 도달한 뒤 재조립된다.
패킷 교환 네트워크는 회선 교환 네트워크와는 달리 메시지를 송수신하는 두 호스트가
하나의 전송 경로를 점유하지 않기에 네트워크 이용 효율이 상대적으로 높다.
만약 패킷이 패킷 교환 네트워크를 통해 지구 반대편에 있는 먼 곳까지 이동한다면 어떨까?
사전에 설정된 경로만으로 통신하는 회선 교환 방식과는 달리,
패킷 교환 방식은 정해진 경로만으로 메시지를 송수신하지 않는다.
이 과정에서 메시지는 다양한 중간 노드를 거칠 수 있는데,
이때 중간 노드인 패킷 스위치는 패킷이 수신지까지 올바르게 도달할 수 있도록
최적의 경로를 결정하거나 패킷의 송수신지를 식별한다.
대표적인 패킷 스위치 네트워크 장비로는 라우터와 스위치가 있다.
패킷 교환 방식에서 주고받는 패킷은 본래는 소포, 꾸러미라는 뜻이다.
네트워크 패킷을 통해 전송하고자 하는 데이터를 페이로드라고 한다.
택배 상자에 넣을 물품이라고 생각해도 좋다.
또한 택배를 보낼 때 상자에 물품만 담아 보내지 않는 것처럼,
패킷 또한 페이로드로만 구성되지 않는다.
페이로드와 더불에 헤더라는 정보도 패킷 앞에 포함된다.
때로는 패킷 뒤에 트레일러라는 정보가 포함되기도 한다.
헤더 & 트레일러 - 패킷에 붙는 일종의 부가 정보, 제어 정보 (= 택배 상자 송장)
페이로드 - 전송될 정보 (=택베 안에 담을 물품)
패킷은 페이로드와 헤더로 구성되고 때로는 트레일러도 포함된다.
주소는 송수신지를 특정하는 정보를 의미한다.
택배 송장에 송수신지를 명시하는 것처럼,
네트워크에 흐르는 수많은 패킷에는 모두 송수신지가 담겨있다.
유니캐스트는 가장 일반적인 형태의 송수신 방식으로,
하나의 수신지에 메시지를 전송하는 방식이다.
송신지와 수신지가 일대일로 메시지를 주고받는 경우이다.
브로드캐스트는 자신을 제외한 네트워크상의 모든 호스트에게 전송하는 방식이다.
브로드캐스트 도메인은 브로드캐스트가 전송되는 범위이다.
즉, 브로드캐스트의 수신지는 브로드캐스트 도메인이며
이는 자신을 제외한 네트워크상의 모든 호스트이다.
6가지 키워드로 정리하는 핵심 포인트
- 네트워크 구조는 호스트, 네트워크 장비, 통신 매체, 메시지로 이루어진다.
호스트는 역할에 따라 서버와 클라이언트로 구분되며,
각각의 요청과 응답을 주고받을 수 있다. - LAN은 가정, 기업처럼 비교적 근거리를 연결하는 한정된 공간에서의 네트워크를 의미한다.
- WAN은 LAN을 연결할 수 있는 넓은 범위의 네트워크를 의미한다.
- 회선 교환 네트워크에서 호스트 간 메시지를 주고받기 전,
두 호스트 사이에 메시지 전송로인 회선을 설정한 뒤 해당 전송로를 통해 메시지를 주고받는다. - 패킷 교환 네트워크에서는 메시지를 패킷 단위로 쪼개어 송수신합니다.
패킷은 페이로드와 헤더로 구성되고, 때로는 트레일러까지 포함한다. - 주소는 송수신지를 특정할 수 있는 정보로,
이를 토대로 유니태스트 또는 브로드캐스트 방식등으로 전송할 수 있다.
'컴퓨터 프로그래밍 공부 > 네트워크 서버' 카테고리의 다른 글
스위치와 VLAN (3) | 2024.11.14 |
---|---|
허브 (0) | 2024.11.08 |
물리 계층과 데이터 링크 계층 - 이더넷 (0) | 2024.10.30 |
네트워크 미시적으로 살펴보기 (1) | 2024.10.27 |
게임 서버 프로그래밍 입문 - (1) (0) | 2024.05.10 |