본문 바로가기

혼자 공부하는 네트워크

[혼공네트] Ch1. 컴퓨터 네크워크 시작하기

01-1 컴퓨터 네트워크를 알아야 하는 이유

컴퓨터 네트워크: 여러 개의 장치가 서로 연결되어 정보를 주고받을 수 있는 통신망
인터넷: 여러 네트워크를 연결한 "네트워크의 네트워크"

 

개발자가 컴퓨터 네트워크를 알아야 하는 이유

필자는 개발자의 업무를 "프로그램을 만드는 업무", "만들어진 프로그램을 유지보수하는 업무"로 나눈다.

네트워크 지식은 이 두 가지 업무에 모두 도움을 줄 수 있다.

 

프로그램을 만드는 업무에서 네트워크 지식을 활용하는 경우

  • 웹 프레임워크, 라이브러리를 사용할 때 네트워크 배경 지식이 있어야만 활용할 수 있는 기능들이 있다.
  • 배포 시에도 DNS, HTTP/HTTPS, 포트 번호 등 다양한 네트워크 배경지식이 필요하다.
  • 프로그램의 안정성과 안전성을 높이고 싶을 때도 네트워크 지식이 활용된다. 

프로그램 유지 보수하는 업무에서 네트워크 지식을 활용하는 경우

  • 네트워크 지식은 인터넷 연결이 안되는 문제, 웹 서버가 동작하지 않는 문제와 같은 문제 발생 시 해결에 도움을 준다.
  • 프로그램을 유지 보수할 때 사용하는 도구나 명령어 중에 네트워크 지식이 있어야만 이해할 수 있는 것들이 많다.

 

01-2 네트워크 거시적으로 살펴보기

네트워크의 기본 구조

모든 네트워크는 '노드', 노드를 연결하는 '간선', 노드 간 주고받는 '메세지'로 구성된다.

노드는 정보를 주고받을 수 있는 장치, 간선은 정보를 주고받을 수 있는 유무선의 통신 매체라고 생각하면 된다. 

 

호스트

호스트는 네트워크의 가장자리에 위치한 노드이자, 네트워크를 통해 흐르는 정보를 최초로 생성 및 송신하고, 최종적으로 수신한다. 때로는 호스트가 네트워크 상에서 특정한 역할을 수행하기도 한다. 대표적으로 서버클라이언트가 있다.

  • 서버: 서비스를 제공하는 호스트
  • 클라이언트: 서버에게 서비스를 요청하고 서버의 응답을 제공받는 호스트

 

네트워크 장비

네트워크 가장자리에 위치하지 않는 노드, 즉 호스트 간 주고받을 정보가 중간에 거치는 노드가 있다.

대표적으로 이더넷 허브, 스위치, 라우터, 공유기 등이 있다. 이러한 중간 노드들은 네트워크 장비라 통칭할 수 있다.

네트워크 장비는 호스트 간 주고받는 정보가 원하는 수신지까지 안정적이고 안전하게 전송될 수 있도록 한다.

💡호스트(서버, 클라이언트), 네트워크 장비의 개념은 노드의 역할에 따라 구분한 기준이다. 
따라서 호스트 역할이자 네트워크 장비 역할인 노드가 있으며, 서버 역할이자, 클라이언트 역할인 노드가 있다.

 

통신매체

각 노드를 연결하는 간선이 통신매체이다.

통신 매체는 노드들을 유선으로 연결하는 유선 매체, 무선으로 연결하는 무선 매체가 있다.

 

메세지

메세지는 통신 매체로 연결된 모드가 주고받는 정보다. 

메세지는 웹 페이지가 , 파일, 메일 등 종류가 다양하다.

 

 

범위에 따른 네트워크 분류

네트워크의 구성 범위가 다양한 만큼, 네트워크를 범위에 따라 분류하는 기준이 존재한다.

범위에 따라 LAN, WAN으로 구분한다.

 

LAN

Local Area Nerwork의 약자로 이름 그대로 가정, 기업, 학교처럼 가까운 지역을 연결한 근거리 통신망이다. 

 

WAN

Wide Area Network의 약자로 먼 지역을 연결하는 광역 통신망을 의미한다.

다른 LAN에 속하는 호스트와 메세지를 주고받을 때는 WAN이 필요하다.  '네트워크의 네트워크'라고 불리는 인터넷이 WAN으로 분류된다. 

 

인터넷을 사용하기 위해 접속하는 WAN은 ISP(internet service provider)라는 인터넷 서비스 업체가 구축하고 관리한다. ISP는 사용자에게 인터넷과 같은 WAN에 연결 가능한 회선을 임대하는 등 WAN과 관련된 다양한 서비스를 제공한다. 국내의 대표적인 ISP로는 KT, LG유플러스, SK브로드밴드가 있다. 

💡네트워크를 범위에 따라 LAN과 WAN 두종류로 나누어 설명했지만, 더 세밀하게 나누는 경우도 있다.
CAN(Campus Area Network): 학교 또는 회사의 여러 건물 단위로 연결되는 규모의 네트워크
MAN(Metropolitan Area Network): 도시나 대도시 단위로 연결되는 규모의 네트워크

 

 

메세지 교환 방식에 따른 네트워크 분류

네트워크로 메세지를 주고받는 방식은 대표적으로 회선 교환 방식과 패킷 교환 방식으로 나눌 수 있다.

각 방식을 사용하는 네트워크를 각각 회선 교환 네트워크, 패킷 교환 네트워크라고 한다.

 

회선 교환 방식

회선 교환 방식은 먼저 메세지 전송로인 회선을 설정하고 이를 통해 메세지를 주고받는 방식이다.

회선 교환 방식의 대표적인 사례가 전통적인 전화망이다. 누군가에게 전화를 걸면 수진자가 전화를 받기 전에 송신자와 수신자 사이에 연결이 설정되어야 하고, 한번 연결이 설정되는 연결된 전송로를 통해서만 통화가 가능하다. 

회선 교환 방식은 우선 두 호스트 사이에 연결을 확보한 후에 메세지를 주고받는 특성 덕분에 주어진 시간 동안 전송되는 정보의 양이 비교적 일정하다는 장점이 있다.

 

회선 교환 네트워크가 올바르게 동작하기 위해서는 호스트 간의 회선을 적절하게 설정해야 한다.

이 역할을 수행하는 회선 교환 네트워크 장비로는 회선 스위치가 있다. 회선 스위치는 호스트 사이에 일대일 전송로를 확보하는 네트워크 장비이다.

 

회선 교환 방식은 회선 이용 효율이 낮아질 수 있다는 단점이 있다. 

그림을 보면 호스트 A, B는 회선이 설정되어 있으므로 메세지를 주고받을 수 있다. 그러나 회선을 점유하여 연결된 상태에서 메세지를 주고받지 않는다면 이용 효율이 낮아진다. 또한, 호스트 C가 A에게, 호스트D가 B에게 메세지를 보내고 싶어도 보낼 수가 없다.

 

 

패킷 교환 방식

패킷 교환 방식은 회선 교환 방식의 문제점을 해결한 방식으로 메세지를 패킷이라는 작은 단위로 쪼개어 전송한다.

여기서 패킷은 패킷 교환 네트워크 상에서 송수신되는 메세지의 단위이다. 현재 인터넷은 패킷 교환 방식을 이용한다. 

패킷 교환 네트워크는 회선 교환 네트워크와는 달리 메세지를 송수신하는 두 호스트가 하나의 전송 경로를 점유하지 않기에 네트워크 이용 효율이 상대적으로 높다. 

 

회선 교환 방식과는 다르게 패킷 교환 방식은 정해진 경로로 메세지를 송수신하지 않는다. 이 과정에서 메세지는 다양한 중간 노드를 거칠 수 있는데 이때 중간 노드인 패킷 스위치는 패킷이 수신지까지 올바르게 도달할 수 있도록 최적의 경로를 결정하거나 패킷의 송수신지를 식별한다. 대표적인 패킷 스위치 네트워크 장비로는 라우터, 스위치가 있다.

 

패킷은 전송하고자 하는 데이터인 페이로드(payload)와 부가 정보인 헤더트레일러로 구성된다.

헤더에 담기는 대표적인 정보로는 송수진지를 특정하는 정보인 주소가 있다.

💡송수신지 유형에 따라 다양한 방식으로 메세지를 보낼 수 있다.
유니캐스트: 가장 일반적인 형태의 송수신 방식으로, 하나의 수신지에 메세지를 전송하는 방식이다. 송신지와 수신지가 일대일로 메세지를 주고받는 경우이다.
브로드캐스트: 자신을 제외한 네트워크 상의 모든 호스트에게 전송하는 방식이다. 브로드캐스트가 전송되는 범위는 브로드캐스트 도메인이라고 한다.
멀티케스트: 네트워크 내의 동일 그룹에 속한 호스트에게만 전송하는 방식
애니캐스트: 네트워크 내의 동일 그룹에 속한 호스트 중 가장 가까운 호스트에게 전송하는 방식

 

 

01-3 네트워크 미시적으로 살펴보기

프로토콜

프로토콜은 통신을 주고받는 노드 간에 합의된 규칙이나 방법을 의미한다.

서로 다른 통신 장치들이 정보를 주고받으려면 프로토콜이 통해야한다.

모든  프로토콜에는 저마다의 목적과 특징이 있다. 따라서 프로토콜마다 주고받는 패킷의 헤더 내용이 달라질 수 있다.

 

네트워크 참조 모델

네트워크를 통해 정보를 주고받을 때는 정형화된 여러 단계를 거친다. 이렇게 통신이 일어나는 각 과정을 계층으로 나눈 구조를 네트워크 참조 모델이라고 한다. 계층으로 표현한다는 점에서 네트워크 계층 모델이라 부르기도 한다.

통신 과정을 계층으로 나눈 이유는 크게 두 가지다. 

 

1. 네트워크 구성과 설계가 용이하다.

    각 계층이 수행해야할 역할이 정해져 있으므로 각 계층의 목적에 맞게 프로토콜이나 네트워크 장비를 구성할 수 있다.

2. 네트워크 문제 진단과 해결이 용이하다.

   통신 과정에서 문제가 발생하더라도 문제의 원인을 계층 별로 진단하기 수월하다.

 

OSI 모델

OSI  모델은 국제 표준화 기구에서 만든 네트워크 참조 모델이다. 통신 단계를 7개 계층으로 나누는데 최하위 계층에서 최상위 계층 순으로 각각 물리계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 응용 계층이다.

  1. 물리 계층: OSI 모델의 최하단에 있는 계층으로, 1과 0으로 표현되는 비트 신호를 주고 받는다. 통신 매체에 맞는 신호로 운반되도록 비트 데이터의 변환이 이루어지고 통신 매체를 통한 송수신이 이루어지는 계층이다.
  2. 데이터 링크 계층: 네트워크 내 주변 장치 간의 정보를 올바르게 주고받기 위한 계층이다. 물리 계층을 통해 주고받는 정보에 오류가 없는지 확인하고, MAC 주소 체계를 통해 네트워크 내 송수신 장치를 특정할 수 있다.  때로는 전송 과정에서 발생할 수 있는 충돌 문제를 해결하는 계층이다.
  3. 네트워크 계층: 메세지를 다른 네트워크에 속한 수신지까지 전달하는 계층이다. 네트워크 계층에서는 IP 주소 체계를 통해 통신하고자 하는 수신지 호스트와 네트워크를 식별하고 원하는 수신지에 도달하기 위한 최적의 경로를 결정한다.
  4. 전송 계층: 신뢰성 있고 안정성 있는 전송을 해야할 때 필요한 계층이다. 패킷이 정상적으로 보내졌는지, 중간에 유실된 정보는 없는지, 순서가 뒤바뀐 것은 없는지 등을 확인한다. 이 외에도 포트 정보를 통해 실행 중인 응용 프로그램의 식별이 이루어지기도 한다.
  5. 세션 계층: 세션을 관리하기 위한 계층이다. 세션은 일반적으로 통신을 주고받는 호스트의 응용 프로그램 간 연결 상태를 의미한다. 세션 계층에서는 이러한 연결 상태를 생성하거나 유지하고, 종료되었을 때 끊어주는 역할을 한다.
  6. 표현 계층: 사람이 이해할 수 있는 언어인 문자를 컴퓨터가 이해할 수 있는 코드로 변환하거나, 압축, 암호화와 같은 작업이 이루어진다.
  7. 응용 계층: OSI 참조 모델 최상단에 있는 계층으로 사용자 및 사용자가 이용하는 응용 프로그램과 가장 밀접하게 맞닿아 있는 계층이다.또한 사용자가 이용할 응용 프로그램에 다양한 네트워크 서비스를 제공한다.

TCP/IP 모델

OSI 모델은 주로 네트워크를 이론적으로 기술하고 이해할 때 사용하는 반면, TCP/IP 모델은 이론보다는 구현에 중점을 둔 네트워크 참조 모델이다. TCP/IP 모델은 최하위 계층에서 최상위 계층 순으로 각각 네트워크 액세스 계층, 인터넷 계층, 전송 계층, 응용 계층으로 이루어진다.

  1. 네트워크 액세스 계층: 링크 계층이라고 불리며 OSI 모델의 데이터 링크 계층과 유사하다. 
  2. 인터넷 계층: OSI 모델의 네트워크 계층과 유사하다.
  3. 전송 계층: OSI 모델의 전송 계층과 유사하다.
  4. 응용 계층: OSI 모델의 세션 계층, 표현 계층, 응용 계층을 합친 것과 유사하다.
💡네트워크 참조 모델은 말그대로네트워크 구조에 대한 개념 참조를 위해 사용하는 것이다.
따라서 모든 프로토콜이 모든 모델의 특정 계층에 완벽히 대응되지는 않는다. 

 

OSI 모델 vs TCP/IP 모델

OSI 모델 TCP/IP 모델
이론적, 포괄적 실용적, 효율적
7계층 4계층 (응용 - 표현 - 세션 간소화)

 

 

캡슐화와 역캡슐화

패킷은 송신 과정에서 캡슐화가 이루어지고, 수신 과정에서 역캡슐화가 이루어진다. 

 

캡슐화

어떤 정보를 송신할 때 각 계층에서는 상위 계층으로부터 내려받은 패킷을 페이로드 삼아 프로토콜에 맞는 헤더를 덧붙인 후 하위 계층으로 전달한다. 즉 한 단계 아래 계층은 위의 계층으로부터 받은 패킷에 헤더 및 트레일러를 추가헤 나간다. 

이렇게 송신 과정에서 헤더 및 트레일러를 추가해나가는 과정을 캡슐화라고 한다.

 

역캡슐화

메세지를 수신할 때는 캡슐화 과정에서 붙였던 헤더를 각 계층에서 확인한 뒤 제거한다. 이를 역캡슐화라고 한다.

 

 

PDU

각 계층에서 송수신되는 메세지의 단위를 PDU라고 한다. 즉, 상위 계층에서 전달받은 데이터에 현재 계층의 프로토콜 헤더를 추가하면 현재 계층의 PDU가 된다. 

PDU는 전송 계층 이하의 메세지를 구분하기 위해 사용된다. 따라서 전송 계층보다 높은 계층에서는 일반적으로 데이터, 메세지로만 지칭한다. 전송 계층의 경우 TCP 프로토콜이 사용된 경우 세그먼트, UDP 프로토콜이 사용된 경우 데이터그램이 된다. 

 

💡네트워크 성능을 평가할 수 있는 세가지 지표가 있다.
처리율: 단위 시간당 네트워크를 통해 실제로 전송되는 정보량. 실시간성이 강조된 지표
대역폭: 단위 시간 동안 통신매체를 통해 송수신할 수 있는 최대 정보량
패킷 손실: 전체 패킷 중 유실된 패킷을 백분위로 표현한 값