Development Study/CS(Computer Science)

[Computer Science] 네트워크 기초 익혀먹기

  • -
728x90

컴퓨터 사이언스, 우리가 흔히 CS라고 부르는 이 분야는 모든 관련분야의 시작이라고 불릴 정도로 매우 근본적이고도 매우 중요합니다.

저의 경우에는 이 CS 지식이 앞으로 개발자로 살아가는데 많은 도움을 줄 것이라고 생각합니다.

그럼 지금부터 네트워크 기초를 익혀먹어보도록 할까요?

 


 

물론 이 글에서 모든 기초를 담고있지는 않지만 중요한 개념에 대해 다루어 두었습니다.

도움이 되었으면 좋겠습니다.

무엇을 목표하나요?

네트워크 정보를 확인하는 방법을 이해해봅니다.

리눅스의 네트워크 관련 개념을 이해하고 중요 명령어를 익혀봅니다.

리눅스의 시스템 설정 명령어를 익혀봅니다.

 


 

시스템 구분

1. 노드 (Node)
인터넷에 연결된 시스템의 가장 일반적인 용어입니다. 

노드는 컴퓨터 또는 다른 장치로 구성된 인터넷에 연결된 시스템을 의미합니다. 

이 노드들은 데이터를 교환하고 통신하기 위해 네트워크를 통해 서로 연결됩니다. 

예를 들어, 개인 컴퓨터, 서버, 라우터, 스마트폰 등이 노드에 해당합니다.

 

2. 호스트 (Host)
컴퓨팅 기능이 있는 시스템으로, 노드의 한 종류입니다. 

호스트는 컴퓨팅 기능을 갖춘 시스템을 의미합니다. 

이 시스템은 데이터를 저장하고 처리할 수 있으며, 네트워크를 통해 다른 시스템과 통신할 수 있습니다.


3. 클라이언트 (Client)
서비스를 요청하는 시스템으로, 노드의 다른 종류입니다. 

클라이언트는 서비스를 요청하는 시스템을 의미합니다. 

예를 들어, 웹 브라우저는 웹 서버로부터 웹 페이지를 요청하는 클라이언트로 동작합니다. 

클라이언트는 보통 사용자가 직접 상호작용하는 인터페이스 역할을 하며, 요청을 보내고 응답을 받아 사용자에게 결과를 표시합니다.

 

4. 서버(Server)

서비스를 제공하는 시스템으로, 노드의 다른 종류입니다.

서버는 클라이언트의 요청에 응답하고 필요한 서비스나 데이터를 제공하는 시스템을 의미합니다.

웹 서버는 웹 페이지를 제공하고, 데이터베이스 서버는 데이터를 저장하고 조회하는 서비스를 제공하는 예시입니다.

서버는 클라이언트로부터의 요청을 처리하고 응답을 보내는 역할을 합니다.


네트워크 주소

1. IP 주소

IP 주소TCP/IP 프로토콜에서 사용되며, 네트워크에서 컴퓨터와 전산장비를 구별하기 위한 주소 체계입니다. 

IPv4 프로토콜에서는 32비트 크기의 주소 체계를 사용하고 있습니다. 

이는 232개의 주소를 나타낼 수 있으며, 총 4,294,967,296개의 주소가 가능합니다.
IPv6에서는 IP 주소를 비트 주소 체계로 확장하여 더 많은 주소를 표현할 수 있게 되었습니다.

IP 주소는 4개의 십진수로 표현되며, 각 십진수는 8비트로 구성되어 있습니다. 

이를 통해 주소를 더 쉽게 읽고 구별할 수 있습니다. 

예를 들어, "192.168.0.1"과 같은 형식으로 표현됩니다.

IP 주소는 인터넷에서 데이터를 전송하는데 사용되며, 패킷의 출발지와 목적지를 식별하기 위해 필요합니다.

각 기기는 고유한 IP 주소를 가지고 있으며, 이를 통해 데이터가 올바른 장치로 전송될 수 있습니다.

 

2. IP 주소 체계

인터넷 프로토콜 주소(IP 주소)는 인터넷에 연결된 모든 장치에 부여되는 고유한 주소입니다. 

이 주소는 데이터 패킷이 올바른 목적지로 전송되도록 도와줍니다.


IP 주소는 두 부분으로 구성되어 있습니다

  • 네트워크 ID
    • 이 부분은 특정 네트워크를 구분하고 식별하는 데 사용됩니다.
    • 이는 인터넷에서 그룹을 식별하기 위한 주소 영역입니다.
  • 호스트 ID
    • 이 부분은 해당 네트워크 내의 특정 컴퓨터 또는 장치를 식별합니다.
    • 이는 해당 네트워크에서 각각의 호스트를 식별하기 위한 주소 영역입니다.

클래스 C의 IP 주소는 8비트의 호스트 ID를 가지며, 이를 통해 하나의 네트워크 내에서 최대 256대의 컴퓨터를 식별할 수 있습니다.

 

잠시만요, 클래스 C라 하면 클래스 A와 B도 있겠네요?

네, 그렇습니다. 인터넷 프로토콜 (IP) 주소는 클래스 A, B, C, D, E로 나누어집니다. 

각 클래스는 서로 다른 비트 길이의 네트워크 ID와 호스트 ID를 가지며, 따라서 다른 수의 가능한 네트워크와 호스트를 지원합니다. 

 

간단하게 각 클래스를 설명하면 다음과 같습니다

  • 클래스 A
    • 이 클래스의 IP 주소는 0.0.0.0에서 127.255.255.255까지 범위를 가집니다.
    • 네트워크 ID는 처음 8비트에 위치하며, 나머지 24비트는 호스트 ID입니다.
    • 따라서 클래스 A는 큰 네트워크에 적합하며, 각 네트워크에는 수백만 개의 호스트가 있을 수 있습니다.
  • 클래스 B
    • 이 클래스의 IP 주소는 128.0.0.0에서 191.255.255.255까지 범위를 가집니다.
    • 네트워크 ID는 처음 16비트에 위치하며, 나머지 16비트는 호스트 ID입니다.
    • 클래스 B는 중간 크기의 네트워크에 적합하며, 각 네트워크에는 수만 개의 호스트가 있을 수 있습니다.
  • 클래스 C
    • 이 클래스의 IP 주소는 192.0.0.0에서 223.255.255.255까지 범위를 가집니다.
    • 네트워크 ID는 처음 24비트에 위치하며, 나머지 8비트는 호스트 ID입니다.
    • 클래스 C는 작은 네트워크에 적합하며, 각 네트워크에는 최대 256개의 호스트가 있을 수 있습니다.
  • 클래스 D와 E는 일반적인 네트워킹에서는 사용되지 않습니다. 
    • 클래스 D는 멀티캐스트를 위해 예약되어 있으며, 
    • 클래스 E는 실험 및 연구용으로 예약되어 있습니다.


간단히 말하면, IP 주소는 "도로명"과 "집 번호"처럼 작동합니다. 

"도로명"은 네트워크 ID에 해당하며, "집 번호"는 호스트 ID에 해당합니다. 

따라서 각각의 장치는 고유한 "집 번호"를 가지지만, 같은 "도로" (즉, 네트워크)에 있는 다른 장치와는 같은 "도로명"을 공유합니다.

 

3. 호스트 이름 시스템

DNS (Domain Name System)는 기본적으로 인터넷의 전화번호부로 생각할 수 있습니다. 

사람들은 텍스트 기반의 웹사이트 주소를 쉽게 기억할 수 있지만, 컴퓨터나 네트워크 장치는 숫자로 된 IP 주소를 사용하여 서로를 인식하고 통신합니다. 

DNS의 주요 역할은 사람이 읽을 수 있는 도메인 이름을 해당하는 IP 주소로 변환하는 것입니다.

다음과 같은 과정을 생각해볼 수 있습니다

[사용자] -- www.example.com 요청 --> [DNS 서버]
[DNS 서버] -- IP 주소 반환 --> [사용자]
[사용자] -- IP 주소 사용하여 접속 --> [www.example.com 서버]
  1. 사용자가 웹 브라우저에 "www.example.com"을 입력합니다.
  2. 이 요청이 DNS 서버로 전송됩니다.
  3. DNS 서버는 "www.example.com"에 해당하는 IP 주소를 찾습니다 (예: 192.0.2.44).
  4. DNS 서버는 IP 주소를 웹 브라우저에 반환합니다.
  5. 웹 브라우저는 반환된 IP 주소를 사용하여 "www.example.com" 서버에 연결하고 사용자에게 웹 페이지를 표시합니다.

 

4. 서브넷 마스크(Subnet Mask)

서브넷 마스크는 IP 주소와 같은 32비트 숫자이며, IP 주소의 네트워크 부분과 호스트 부분을 구분하는 데 사용됩니다. 

이 마스크는 '1' 비트들이 연속적으로 나열된 후에 '0' 비트들이 오는 형태로 이루어져 있습니다. 

'1'들은 네트워크 부분을, '0'들은 호스트 부분을 나타냅니다.

비트 AND 연산은 IP 주소와 서브넷 마스크 사이에서 수행되어 네트워크 주소를 결정합니다. 

이를 마스킹(Masking)이라고 합니다.

이를 시각적으로 표현하면?

IP 주소:     192.168.1.1     = 11000000.10101000.00000001.00000001
서브넷 마스크: 255.255.255.0 = 11111111.11111111.11111111.00000000

# 이 둘을 AND 연산하면

네트워크 주소:               = 11000000.10101000.00000001.00000000 = 192.168.1.0

따라서, 이 IP 주소의 네트워크 주소는 192.168.1.0입니다.

이렇게 서브넷 마스크는 IP 주소에서 네트워크 ID와 호스트 ID를 구분하며, 특정 네트워크의 크기를 결정하는데 중요한 역할을 합니다. 

서브넷 마스크를 변경함으로써, 한 네트워크에 속할 수 있는 호스트의 수를 조정할 수 있습니다.

 

5. 서브넷팅

서브넷팅은 IP 네트워크를 작은 부분, 즉 '서브넷'으로 분할하는 과정입니다. 

서브넷팅의 주요 목적은 IP 주소 공간을 효율적으로 사용하고 네트워크 관리를 향상시키는 것입니다.

간단한 예시
우리가 C 클래스 IP 주소인 192.168.1.0/24를 가지고 있다고 가정해봅시다.

'/24'는 서브넷 마스크가 255.255.255.0임을 나타내는 CIDR 표기법입니다.

이 네트워크는 최대 254개의 호스트 (2^(32-24) - 2 = 254)를 지원할 수 있습니다.

만약 우리가 이 네트워크를 두 개의 동등한 작은 네트워크로 분할하고자 한다면,

서브넷 마스크에 1비트를 추가하여 '/25' 또는 255.255.255.128을 만들 수 있습니다.

이렇게 하면, 두 개의 서브넷이 생성되며 각각은 최대 126개의 호스트를 지원할 수 있습니다 (2^(32-25) - 2 = 126).

이것도 시각적으로 표현해본다면?

192.168.1.0/24 (255.255.255.0)
|
|--- 서브넷팅 ---
|
|--- 192.168.1.0/25 (255.255.255.128) - 호스트 범위: 192.168.1.1 - 192.168.1.126
|
|--- 192.168.1.128/25 (255.255.255.128) - 호스트 범위: 192.168.1.129 - 192.168.1.254

 

서브넷팅은 네트워크를 더 작은 부분으로 분할하여 IP 주소 공간을 효율적으로 사용하고, 네트워크 관리를 향상시키는데 도움이 됩니다.

이는 큰 네트워크를 여러 개의 작은 네트워크로 분할하여 각 네트워크의 트래픽을 격리시키고, 각각의 네트워크를 개별적으로 관리할 수 있게 합니다.

따라서, 이 IP 주소의 네트워크 주소는 192.168.1.0입니다.

이렇게 서브넷 마스크는 IP 주소에서 네트워크 ID와 호스트 ID를 구분하며, 특정 네트워크의 크기를 결정하는데 중요한 역할을 합니다. 

서브넷 마스크를 변경함으로써, 한 네트워크에 속할 수 있는 호스트의 수를 조정할 수 있습니다.


네트워크 관련 설정과 명령어

1. TCP/IP

인터넷에서 데이터를 전송하는 데 사용되는 프로토콜 세트입니다.

 

2. 호스트 이름과 도메인 이름

호스트 이름은 네트워크에서 컴퓨터를 식별하는 이름이며, 

도메인 이름은 컴퓨터가 속한 네트워크의 구조를 나타내는 이름입니다.

 

3. IP 주소

컴퓨터의 고유한 주소입니다.

 

4. 네트워크 주소

네트워크 주소는 해당 네트워크를 식별하는 주소입니다.

IP 주소의 네트워크 부분이 이에 해당합니다.

 

5. 브로드캐스트 주소

네트워크의 모든 컴퓨터에 메시지를 보내는 데 사용되는 주소입니다.

 

6. 게이트웨이

게이트웨이는 라우터 또는 네트워킹 장치를 말합니다.

이 장치는 서로 다른 네트워크 간에 트래픽을 전달하는 역할을 합니다.

 

7. 넷마스크와 클래스

넷마스크는 IP 주소에서 네트워크 부분과 호스트 부분을 구분하는 데 사용됩니다. 

IP 클래스는 IP 주소 할당 방식을 나타내며, 현재는 클래스 없는 주소 지정 방식(CIDR)이 널리 사용됩니다.

 

8. DNS 서버 주소

도메인 이름을 IP 주소로 변환하는 데 사용되는 서버입니다.

 

9. 리눅스에서의 네트워크 장치 이름

리눅스에서 네트워크 장치를 식별하는 데 사용되는 이름입니다.

 

10. nm-connection-deitor

리눅스에서 네트워크 연결을 관리하는 데 사용되는 도구입니다.

 

11. systemctl start/stop/restart/status networking

리눅스에서 네트워크 서비스를 시작/중지/재시작/상태 확인하는 데 사용되는 명령어입니다.

 

12. ifconfig 장치명

'ifconfig'은 리눅스에서 네트워크 인터페이스의 설정을 확인하고 수정하는 데 사용되는 명령어입니다. 

하지만 최신의 리눅스 배포판에서는 'ip' 명령어가 'ifconfig'을 대체하고 있습니다.

 

13. nslookup

'nslookup'은 DNS 쿼리를 수행하여 도메인 이름을 IP 주소로 변환하거나 IP 주소를 도메인 이름으로 변환하는 도구입니다.

 

14. ping IP 주소 또는 URL

IP 주소 또는 URL에 연결을 테스트하는 데 사용되는 명령어입니다.

 

15. 네트워크 기본 정보가 설정된 파일

'/etc/resolv.conf'는 시스템이 DNS 서버를 찾기 위한 정보를 담고 있는 파일입니다. 

DNS 서버의 IP 주소 등이 설정되어 있습니다.

 

16. /etc/hosts

컴퓨터의 IP 주소와 호스트 이름을 매핑하는 파일입니다.

 


End

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.