본문 바로가기
💻 네트워크 𝗡𝗲𝘁𝘄𝗼𝗿𝗸

[네트워크] IP 주소, 멀리 떨어진 컴퓨터들의 통신 방법

by 비타민찌 2021. 7. 21.
728x90

IP 주소, 멀리 떨어진 컴퓨터들의 통신 방법

 

 

 

세상에 존재하는 수많은 네트워크 장비들은
어떻게 서로 통신하는 걸까?

 

전 세계 멀리있는 떨어져 있는 이 기기들은 어떻게 서로 통신을 할 수 있는 걸까? 에 대한 답,

우리가 살면서 한번 쯤 들어 본 단어 'IP주소'에 대해 알아보자.

 


1. MAC ADDRESS, IP ADDRESS

2. 3계층, 3계층의 기능
3. IP, Internet Protocol
4. IPv4의 구조
5. 일반적인 IP 주소, IPv4의 클래스
6. 낭비되는 IP 주소..
7. 서브넷 마스크(Subnet mask)의 도입
8. 사설IP, 공인IP
9. 특수한 IP 주소

 

1. MAC ADDRESS, IP ADDRESS

MAC ADDRESS와 IP ADDRESS의 차이가 뭘까?

이 글을 보는 당신이 IP주소에 대해 한번 쯤 들어 봤다면, IP 주소와 자주 비교되는 또 다른 친구 MAC주소 또한 분명 들어봤을 것이라 생각한다.

MAC ADDRESS와 IP ADDRESS의 차이가 뭘까?

예시를 하나 들어서,

토찌 라는 친구에게 큰 돈을 빌려줬는데 돈을 갚지 않는 상황이라 해보자.

토찌에게 연락을 하기 위해, 혹은 토찌를 찾으러 가기 위해서는 여러가지 정보가 필요하다.

 

우선 당연히 토찌 라는 이름을 알고 있어야 하고,

토찌 라는 존재를 증명하기 위한 주민 번호 등은 당연히 있어야 한다. (MAC 주소)

 

그리고 본격적으로 토찌를 '찾아 가기' 위해서는

토찌가 지금 위치해 있는 곳, 토찌의 거주지 (IP 주소)를 알아야 할 것이다.

 

MAC ADDRESS : 내 지문, 또는 내 주민등록 번호.
             컴퓨터간 서로 통신을 하기 위해서 필요한 기본 주소.
             내 PC와 똑같은 MAC 주소을 가진 PC은 없다.
             
IP ADDRESS : 집 주소.
             상대방 컴퓨터가 내 PC을 '찾기 위해' 필요한 주소로 라우팅 시 필요하다.
             즉, 내 PC을 찾기 위해서 필요한 주소.

이 IP 주소는 osi 7 layer 3계층에 해당하는 프로토콜이다.

 

 

2. OSI 7 layer 3계층의 기능

발신에서 착신까지의 패킷 경로를 제어한다.

 

 

3계층은 다른 네트워크 대역,

멀리 떨어진 곳에 존재하는 네트워크까지 어떻게 데이터를 전달할지 제어하는 일을 담당한다.

 

서로 다른 네트워크 대역을 연결시켜주는,

서로 다른 LAN과 LAN 을 연결시켜주는(WAN에서 통신) 일을 하며, 라우터와 같은 3계층 장비가 필요하다.

 

2계층 장비 스위치만으로는 서로 다른 네트워크 대역으로 만들 수 없다. (안될건 없지만 서로 통신을 하려면 결국 3계층 장비가 필요함.)

 

즉, 멀리있는 곳으로 가기 위해선

3계층, IP 주소가 필요하다.

 

WAN 에서 통신할 때 사용하는 IP 주소

 

IP 주소와 함께 서브넷 마스크, 게이트웨이도 필요!

 

 

3. IP, Internet Protocol

IP 주소라는 단어는 꽤 익숙한 단어이다.

우리가 익숙히 접할 수 있는 192.168.0.1과 같은 형태인 IP는,

일반적인 환경에서 우리가 인터넷에 접속할 때

이 IP 주소 우리 집 주소의 역할을 한다고 생각하면 되겠다.

그리고 마찬가지로 우리 집에서 네이버, 구글도 각자의 IP가 있으며

거기까지 가는 길목에 있는 지점들도 모두 IP 주소를 가지고 있다.

 

4. IPv4 구조

일반적으로 우리가 접할 수 있는 IP 주소, 192.168.0.1과 같은 형태는 IPv4(버전) 인데

IPv4는 8비트로 구성된 4개의 필드로 구성되고, 이 하나하나의 필드를 옥탯(Octet)이라고 부른다.

192.168.0.1은 이진법으로 전환하면 다음과 같이 나타낼 수 있다.

10진법: 192.168.0.1 2진법: 11000000.10101000.00000000.00000001

 

한 옥탯에 8비트밖에 가지지 못하기 때문에 옥탯은 00000000 ~ 11111111, 즉 십진법으로는 0~255의 수를 가지게 되는 것이다. 그렇기 때문에 IPv4로 생성할 수 있는 주소의 수는..

$\combi{2}^{32}=4,294,267,296$232=4,294,267,296​

약 43억 개! 꽤 큰 숫자 같아 보인다.

적어도 처음 이 주소 체계를 만들 때만 해도 이런 생각을 했던 것 같다.

 

 

 

 

5. 일반적인 IP 주소, IPv4의 클래스

낭비가 심한 'Classful IP 주소'

 

처음 IP 라는 주소를 만들었을 때,

Classful하게, '클래스 별로 IP를 나누어' 사용했다.

 

IPv4의 클래스

IP 주소는 무제한으로 막 퍼줄 수 있는 자원이 아니라 유한한 자원이었다. 그래서 특정 대역마다 사용처를 나누어서 관리했는데, 이때 나누어진 대역을 클래스라고 부르며, A~E의 총 5개의 클래스로 나누어 관리했다. 각 클래스는 이진법으로 표현한 IPv4인 00000000.00000000.00000000.00000000 중 첫번째 필드에 있는 8비트에 제한을 만들어서 표기하기 때문에 첫번째 필드의 숫자만 보면 해당 IPv4 주소가 어느 클래스에 속해있는 지 알 수 있다.

이 제한은 바로 첫번째 필드의 최상위 비트를 강제하는 방식이다. 예를 들어 A 클래스는 무조건 비트가 0으로 시작해야하기 때문에 00000000(0)에서 01111111(127)사이의 첫번째 필드를 사용할 수 있고 C 클래스는 무조건 비트가 110로 시작해야하기 때문에 11000000(192)부터 11011111(223)까지의 첫번째 필드를 사용할 수 있는 식.

클래스 네트워크 구분 시작주소 주소범위
A 0xxxxxxx , 첫번째필드 0.0.0.0 0.0.0.0 ~ 127.255.255.255
B 10xxxxxx , 두번째필드 128.0.0.0 128.0.0.0 ~ 191.255.255.255
C 110xxxxx , 세번째필드 192.0.0.0 192.0.0.0 ~ 223.255.255.255
D
:멀티캐스트
1110xxxx 224.0.0.0 224.0.0.0 ~ 239.255.255.255
E
:예약
1111xxxx 224.0.0.0 240.0.0.0 ~ 255.255.255.255

 

이렇게 나누어진 클래스들에 대해 조금 더 살펴보자.

이렇게 클래스로 나누었던 이유는 관리를 위해 구분하기 위해서 였다.

첫번째 필드는 네트워크 대역을 '구분'하는데 쓰고,

나머지 두번째 세번째 필드는 그 하나의 네트워크 대역 안에 속해있는 각각의 PC들을 '구분'하고..

 

우선 A 클래스의 첫번째 필드를 보자.

A클래스에서도 여러개의 네트워크 대역 A1, A-2 등이 존재할 수 있을텐데

가장 처음 필드, 첫번째 필드에서만 네트워크 대역을 구분하니까, 이 두 구역을 구분하려면

앞의 숫자 0과 127 0.0.0.0 ~ 127.255.255.255) 로 구분했다.

즉, A 클래스의 네트워크 대역은 전세계에 총 128개 뿐 인 것이다..!

 

확실히 A클래스는 네트워크 대역을 구분하기 위해서는 별로인 것 같다.

하지만 이 네트워크 대역 안에 속해있는 PC들의 수를 생각해 보자.

0.0.0.0 ~ 127.255.255.255

2의 24승 = 16777216 개의 PC를 구분할 수 있는 셈이다.

 

그런데..

하나의 네트워크 대역안에 있는 PC의 수가 16777216개라니.

이런 네트워크 대역이 있을까?

아마 가디역에 있는 컴퓨터를 다 모아도 이 만큼은 안될 것 같다.

이 어마어마하게 큰 A 클래스는 큰~~ 기관에서나 쓰는 주소였다.

 

B클래스를 살펴보자.

마찬가지로 네트워크 대역과 그 대역대 안에 속해있는 PC의 수를 생각해 보면

확실히 A 클래스 보다는 네트워크 대역을 구분할 수 있는 숫자가 많아졌고,

그 대역에 안에 속해있는 PC들의 수는 많이 줄었다. 2의 16승 개=65536 대 정도? 그래도 뭐.. 이것도 많다.

 

C클래스는 여기서 쪼금 더 줄었다.

이제 하나의 대역에 안에서 쓸 수 있는 PC의 수가 한 눈에 보인다. 256개!

그리고 많은 네트워크 대역들을 구분할 수 있게 됐다.(192.0.0~233.255.255)

그래서 일반적으로 많이 쓰던 것이 이 C클래스 였다.

이 A,B,C 클래스는 일반 PC들 용으로 사용하였고..

 

D클래스는 멀티캐스트용을 위해 남겨둔 주소,

E클래스는 IP주소 관련 연구, 실험용으로 남겨둔 주소로 구분하여 사용했었다.

그런데,

이렇게 잘 나누어 사용하던 IP 주소에 문제가 생겼다.

 

6. 낭비되는 IP 주소 ....

만약 한 회사에 컴퓨터가 31대가 있고,

회사에 30명이 있다고 가정해 보자.

우린 A클래스 네트워크 대역을 사용했고,

만약 아래와 같은 대역대를 썼다고 가정해보자.

100.0.0.1 ~ 100.0.0.31

첫번째 부분인 100. 네트워크 대역을 구분하는 클래스이니까,

우리 회사에서만 쓸 수 있는 네트워크 대역인데....

그럼 약 1600만 대의 IP가 사용되지 못하고 낭비 되기 시작한 것이다.

사실 1960, 70년 대는 이 사실이 상관 없었다. 낭비해서 써도 남았던 시절이라.

그러나 세상의 발전은 빨랐고 IP주소가 부족해져 하루빨리 IP주소의 낭비 문제를 해결해야 했다.

해결책은 클래스에 맞게 쓰지 말자 였다.

하나의 큰 네트워크를 여러개의 작은 네트워크로 나누어 쓰자!

라는 서브넷 마스크 개념이 도입됐다.

 

 

7. 서브넷 마스크(Subnet mask)의 도입.

'Classless IP' 주소

이전에 아래와 같이 고정된 필드 단위로 구분(.)을 했다면,

00000000.00000000.00000000.00000000

 

낭비를 줄이기 위해,

이 하나하나의 필드를 아래와 같이 원하는 곳에서 자를 수 있게 (구분할 수 있게)

00000000.00000000.00000000.00 000000 //이렇게,
00000000.00000000.00000000.00000 000 //이렇게도 가능!

 

'Subnet mask',

네트워크를 서브 =보조 한다.

네트워크 대역을 잘게 쪼개는 값이라는 녀석을 도입한 것이다.

 

네트워크 대역을 어디서부터 구분할 것인지 지정하는 값이 서브넷 마스크다.

그래서 지금 IP주소는 항상 서브넷 마스크랑 같이 사용한다.

서브넷 마스크
: 네트워크 대역을 나눠주는데 사용하는 값.
: 2진수로 표기했을 때 1로 시작하고, 1과 1 사이에 0이 올 수 없다는 규칙을 가지고 있다.

이 서브넷마스크로 어떻게 필드를 구분할까? 에 대한 자세한 내용은 다음에 찬찬히 알아보기로 하고 ~~

 

간단하게만 보자면,

서브넷 마스크를 도입한 후 네트워크 대역과 대역대에 속한 PC의 수를 구분하는 방법은 아래와 같다.

 

예시)
255.255.255.192 ->
11111111.11111111.11111111.11  000000
      (네트워크 대역 구분)    ,    (PC의 수)

 

11111111.11111111.11111111.11

여기까지가 네트워크 대역을 구분하는 곳이고,

000000

여기서부터 하나의 네트워크 대역에서 속해있는 PC를 구분.

 

그렇다면 여기서 하나의 네트워크 대역에서 쓸 수 있는 PC의 수는?

0부터 63일 테니까, 총 64대가 들어간다.

낭비되는 IP가 이전보다 많이 줄긴한다.

 

여기서 필드를 하나만 더 쪼개어 보자.

1을 하나만 더 늘려보도록 한다.

11111111.11111111.11111111.111   00000
       (네트워크 대역 구분)     ,   (PC의 수)

 

여기서는 몇 대의 PC가 들어갈 수 있는지 계산해 보면 이번엔 32대!

또 나쁘지 않은 것 같지만....

 

만약 PC를 20대 만 사용하려 하는 네트워크 대역이라고 가정해보자.

아까의 32대가 들어간 네트워크 대역에서

한번 더 쪼개면 16대가 들어갈 수 있다.

내가 20대의 PC만 쓰고 싶은 경우, 16대는 부족하니까

네트워크 대역을 32대 쓸 수 있게 잘라야 하고...

결국 10대가 낭비되는 것.

어쨌든 또 IP 주소 낭비가 되고, IP가 부족해지기 시작한 것이다.

 

 

또.. 그렇게 생각보다 전세계의 인터넷 사용자가 빠르게 늘면서 결국

2011년 2월 4일부로 모든 주소가 소진되어 현재는 IPv4의 할당이 중지되었다.

 

그래서 IPv6로 넘어가자는 말이 나온다.

4바이트인 IPv4에서 -> 16바이트인 IPv6가 되면 표현할 수 있는 수가 훨~~씬 늘어나니까!

이거 바로 넘어가면 좋겠는데????

 

그치만... 몇십년 동안 IPv4를 쓰다가 갑자기 IPv6 로 넘어가려면,

전세계에 있는 수 많은 장비들, 컴퓨터들을 싹 다 바꿔야 하는데 이것도 보통 일이 아니었다.

고심끝에 여기서 또 하나의 개념이 도입된다.

바로 사설IP와 공인IP!

 

 

8. 사설IP, 공인IP

'Classless IP' 주소

이것이 현재 사용하고 있는 IPv4의 개념.

우리가 현재 사용하고 있는 방식이 이 공인ip/사설ip (+classless) 이다.

 

이 개념을 이용해서 어떻게 부족현상을 해결했을까? 에 대한 공인IP, 사설 IP 이야기는 아래의 포스팅을 참고 하기로 하고,

https://blog.naver.com/ghdalswl77/222049614283

 

 

 

 

간단히 말해

공인 IP 하나 당, 사설 네트워크 대역이 아예 따로 생겼기 때문에

IP 하나당 0.0.0.0~255.255.255.255 까지가 생긴 것. 그래서 사용가능한 IP의 범위가 넉넉해 졌다고 할 수 있겠다.

 

공인/사설 IP 도입 전 -> 도입 후

재밌는 그림이 있어 가져와 봤다 🐰

 

 

 

9. 특수한 IP 주소, 예약된 IP 주소

 

9.1) Wildcard 0.0.0.0

쉽게 설명 하자면 '나머지' 모든 IP 를 뜻한다.

 

 

라우팅 경로를 찾지못한 나머지 모든것을 나타내는 의미로 쓰인다.

라우팅 테이블에 대해 설명 할 때 더 자세히 하도록 한다.

0.0.0.0은 일반적으로 컴퓨터에 사용하는 애가 아님!

 

 

9.2) 나 자신을 나타내는 주소, 127.0.0.1

 

꼭 127.0.0.1이 아니더라도,

127.0.0.2, 4 등...

127. 으로 시작하는 이 주소는 '나 자신의 주소'.

 

소프트웨어의 테스트 목적으로 주로 사용되며,

같은 장치 상에서 통신할 때 사용한다.

127.0.0.1은 localhost라는 이름으로 접근이 가능한데,

* localhost :

컴퓨터 네트워크에서 사용하는 loopback 호스트명으로, 자신의 컴퓨터를 의미.

로컬 컴퓨터를 원격 컴퓨터인것 처럼 통신할 수 있어 주로 테스트 목적으로 사용된다.

(IPv4 에선 127.0.0.1, IPv6 에선 ::1)

 

 

9.3) 게이트웨이 주소

일반적으로 공유기의 IP를 쓰고

이 네트워크 대역에서 쓸 수 있는 가장 작은 IP를 쓰는 게이트웨이.

게이트웨이란, 외부랑 통신할 때 무조건 들어와야하는 문이라고 생각하면 된다.

외부 세상으로 나가는 문이 어딘지 알려주는 값!

 

 

 

아이피 주소와 서브넷 마스크는 나를 알려주는 값이고,

게이트웨이는 나가는 문이 어딘지 알려주는 값이니

게이트웨이 설정을 안해도 내 컴퓨터 IP 설정은 되지만, 인터넷이 되지 않는다.

 

그래서 결과적으로 우리는 아래 3가지가 있어야

'인터넷 통신' 이라는 것을 할 수 있게 된다는 것이다.

 

물론 네이버를 IP주소로 찾아가는 사람은 없으니, 아래 DNS 서버까지 세팅해 주면 인터넷이 된다.

 

 

 

 

 

 

728x90

댓글