본문 바로가기
컴퓨터네트워크개론

[컴퓨터네트워크개론 master] 3. ip address(1)

by 케찹이 2022. 11. 3.

아마 컴퓨터에 관심이 있으신 분들 ip에 대해서 들어보거나 알고 계실것이라고 생각이듭니다. 그렇지만 ip address가 어떻게 구성이 되어있고 어떻게 동작하는지애는 생소할 수 있습니다. 오늘은 그러한 부분을 알아보도록 하겠습니다.

 

ip address 계층으로 나누어져 있다

우리가 자주 사용하는 주소, 핸드폰번호, 학번 모두 계층으로 이루어져 있습니다. 이렇게 계층을 만드는 이유가 뭘까요?   얘기는 devide and conquer입니다. 내가 찾을 경기도 그러면 다른데는 신경 안쓰고 경기도만 찾을 있고 학번이 20학번이다 그럼 내가 다른 19학번이나 21학번 찾을 필요 없이 20학번에서 찾고 그럼 domain 계속 줄여나가서 찾는데 조금 효과적인거죠. 그리고 이는 길을 찾는 것도 같습니다. Ip 주소를 전송하면 어떻게 되는거에요?  어차피 찾아서 보내는 거기 때문에 ip주소도 같은 이런 관점에서 divide and conquer해서 계층으로 나뉘어져 있습니다.

 

ip의 버전입니다. ip의 버전은 v4, v6가 있습니다. 현재 우리가 사용하고 있는 IPv4입니다. IPv4는 32비트로 ip주소를 표현할 수가 있습니다. 하지만 이후에 IPv4의 주소가 부족해지면서 자연스럽게 IPv6가 나오게 되었습니다. 일단은 이에 대해서는 추후에 자세한 차이점을 설명하니 나중에 더 설명을 하도록 하겠습니다. 

 

ipv4에서 ip address 32비트입니다.

-  gloablly하게 unique하고.

-  end-to-end입니다.

그래서 패킷이 중간에 ip주소가 변경이 되지 않습니다 패킷이 출발지를 떠나고 destination까지 동안 절대로 ip주소는 안변합니다. 절대로 변하면 안되요. 그러면 src 변하면 안되느냐, 전송이 되면 문제가 없습니다. 하지만 전송이 제대로 되지 않았을 때는 다시 패킷을 되돌려서 source에게 destination 없다 얘기를 해줘야 해. 그래서 src 중간에 절대로 변하면 안됩니다.

- MAC address 48비트

MAC address는 48비트, 왼쪽에 24비트는 제조사, 오른쪽에 24비트는 제조사의 일련번호입니다. 2계층에서 사용되는 것이고, 굳이 global unique 필요는 없습니다. 로컬에서 같은 네트워크에서만 unique하면 됩니다. Broadcast broadcast 모든 사람이 들을 거기다 씁니다. 그래서 destination MAC주소를 보고 내꺼구나 해서 지나가는 패킷을 잡아가지고 컴퓨터 안으로 갔고 들어오는 역할을 MAC주소를 가지고 합니다. 그래서 MAC주소는 계속 바뀝니다.

 

Ip 주소는 인터넷에 있는 어떤 host 찾는 겁니다. 그래서 위에서 언급했던 것처럼 globally unique해야됩니다. 그리고 워낙 ip가 많다 보니까 이를 효율적으로 찾기 위해서  계층 구조로 되어 있습니다. 그래서 여러 개의 파트로 나뉘어져 있습니다.

 

Area routing hierarchy 

area routing hierarchy란 것을 보기 전에 택배 아저씨가 택배를 배송하는 것을 생각해보세요.택배 아저씨는 택배들을 아파트 단지까지 갔고와서 안에서 최대한의 주소와 주소 사이에 거리를 짧게 하기 위해서 아파트로 모아서 거기서  운반을 하십니다. ip 또한 이와 마찬가지입니다. 어떤 지역까지 갖고 와서 그 안에서 패킷을 나누어주는 것입니다. 그게 바로 area routing hierarchy입니다.  

1. 어느 지역까지 가지고 온다.

2. 그 다음에 안에서 나눈다.

 

그러면 일단 area 어떻게 나눌거냐 라는게 문제인건데. 보통 택배 아저씨는 아파트면 아파트 단지로 갑니다. 그러면 택배 아저씨가 택배를 갔고 직접적으로 우리집의 호수 보고 오는게 아니라 내 아파트거를 한꺼번에 가지고 오는 거죠. 다음에 해당 아파트 단지 들어와서는 몇동 몇호 이렇게 찾아오는 거죠. 인터넷도 마찬가지입니다. network portion 있어습니다. Local network, 즉 어떤 단체마다 자기들만의 네트워크가 있습니다. 삼성전자는 삼성전자의 네트워크가 있습니다. 그러니까 kt kt네트워크가 있고 외국에도 마찬가지로 MIT 있고 구글이 있고 MS 있고 자기네 어떤 최소의 단위가 있는겁니다, 거기까지는 NETWORK portion으로 찾아가고 이게 단지면, 단지. 다음에 안에 들어가서는 HOST portion, 다음에 , 호수찾아가게됩니다.

ip주소는 ip주소라는게 탄생을 하고 몇번의 개선 작업을 거쳐서 대륙별로 나라별로 분배를 하였습니다. 하지만 ip address가 막 만들어졌을 때는 그렇게 될줄을 모르고 ip주소를 마구잡이로 분배하다 보니 실제 ip주소만으로 어떤 특정 위치를 포인트하기 어려워졌습니다.

주소가 실제로 가상의 주소이지만 그게 실제의 어느 위치와 맵핑이 되지만 ip주소는 그렇지는 않습니다.

 

IP Address's portion

ip주소는 2개의 portion 있습니다.

1. portion Network portion

2. HOST portion입니다. 

앞서 아파트 얘기를 했는데 같은 아파트에 온 택배들은 동, 호수를 제외하고 그 앞의 주소는 모두 같게 됩니다. 그리고 네트워크주소도 이와 같습니다. 모든 host들은 반드시 네트워크 주소가 똑같아야합니다. NETWORK주소가 다르다 그러면 그거는 말이 안되는겁니다. 왜냐면 네트워크 주소가 같은 사람들이 모여있으니까 안에 입구까지 갔고오고 다음에 그안에서 같으니까 HOST 쫓아가다 보니까 모든 host들은 네트워크 주소가 같아야 됩니다.

실제로 예를 들어서 네트워크 주소가32비트니까 8+24 나누자. 혹은 16+16으로 나누자, 혹은 24+8 나누자 이런식으로 나누게 됩니다.

모든 구조에 hierarchy 있듯이 ip 주소에도 이렇게 hierarchy 있습니다.

 

라우터는 패킷을 보면 이게 같은 네트워크에 있는지 다른 네트워크에 있는지를 구분을 합니다. 일단. 다른 네트워크에 있으면 이건 나한테 오는게 아니죠 다음에, 같은 네트워크에 있으면 이걸 받아서 같은 네트워크에 있는 사람한테 전송을 해줍니다. 그래서 라우터들은 주로 네트워크 address 가지고, 네트워크 portion 가지고 라우팅을 하지 전체에 있는 IP 가지고 라우팅하지 않습니다.

중요한거는 네트워크 portion입니다. 라우터는 어떤 host 보고 들어오는 것이 아니라 네트워크 주소를 가지고 들어옵니다. 다음에 모든 host 같은 네트워크에 있는 주소는 반드시 같은 네트워크 주소(portion같다) 가지고 있어야 되고 단지 차이는 Host 주소가 서로 다릅니다. 그래서 globally unique하게 됩니다. 그럼 네트워크를 어떻게 나눌 거냐

IP주소는 32비트 길이이고 2의 32승해서 43억개가 있습니다. 다음에 (.)으로 표시합니다. 

 

클래스들입니다. 네트워크를 계층을 클래스로 나누었는데 5개의 클래스가 있습니다. 5개의 클래스로 나누고, 다음에 처음에 A,B,C unicast, D multicast, E 사용하지 않습니다.

실제적으로 unicast는 뭐냐면 11 통신하는게 unicast입니다. multicast 1대다, broadcast 1 전부그래서 우리가 하는 인터넷 통신은 대부분 11입니다.

그래서 3계층에서 쓸수 있는 3개입니다. A,B,C.

A 첫번째 바이트가 0에서부터 127, B는 첫번째 바이트가 128~191, C는 첫번째 바이트가 192~223가됩니다.

아까도 얘기했듯이 네트워크 주소하고 호스트 주소로 나누는데 A 클래스는 네트워크 주소가 8비트에 24입니다. B 16 16, C 24 8입니다. 그래서 A 클래스, B 클래스, C 클래스 3개의 클래스가 있고 두개 layer hierarchy 있고 hierarchy이름을 우리가 network하고 host입니다.

 

ip address class정리

위 3그림의 내용들을 다시 정리를 해보면 다음과 같습니다.

1byte = 8bit라는 사실은 다들 알고 있을 겁니다. ipv4의 네트워크 주소는 32bit으로 이루어져 있고 4byte로 이루어진겁니다.

바로 직전 사진에서 A클래스는 1byte는 네트워크주소, 3byte의 host 주소를 가지고 있고, B 클래스, C클래스도 보시는 것과 같이 2:2, 3:1 이렇게 네트워크와 host주소가 나뉘어져있습니다.

그래서 class A로 계속 보면은 class A는 첫 바이트가 0으로 시작해야 된다는 조건이 있는 것입니다. 그래서 첫바이트의 값은 

0000 0000 ~ 0111 1111, 즉 0 ~ 127까지의 값을 가지게 되는 것이죠. 총 128개지만 그중에서 0과 127값은 사용할 수가 없어서 결론은 class A는 실제로 126가 있습니다. 

class B를 보면 첫 바이트가 10으로 시작해야 되는 조건이 있고 네트워크 주소의 범위는 2byte까지 이니까

1000 0000 0000 0000 ~ 1011 1111 1111 1111, 즉 128.0.0.0 ~ 191.255.0.0까지 입니다. 첫 바이트만 보면 128~191까지입니다.

class B도 A와 마찬가지로(C도 마찬가지입니다.) 첫번째와 마지막 값은 사용할수가 없어서 총 2^14 -2 = 16384 - 2 = 16382개 네트워크 주소가 있습니다.

 

 

그럼 클래스를 3개로 뒀느냐.

그러면 네트워크 주소가 8개니까 A클래스는 전세계에 127개가 있습니다. 반면에 host는 24여서 2의 24승개 호스트가 있습니다. 이는 약 1600만개가됩니다.

그니깐 어떤 A 클래스를 가진 곳은 전세계에 256개밖에 없고 그  조직 하나는 가질 있는 host 개수는 1600만개입니다.

반면에 C 전세계에 1600만개가 있습니다. 근데 C클래스 가진애들은 host개수가 2 8승이에요. 그래서 256개에요. B 클래스는 전세계에 2 16 65000개가 있고 여기에서 호스트 개수는 똑같이 6500개...

그러니까 A 클래스는 너무 host 많고 다음에 C클래스는 너무 적습니다. 이런 문제점들이 조금 있었습니다.

 

+TMI

1. 클래스 배정은 누가 하나? -> 나눠주는 세계적인 조직이 있음, 대륙별로 나눠주고 국가별로 나눠주고 조직으로 나눠줌.

2. 남은 A클래스가 있나? -> ㄴㄴ, A클래스는 물론 모든 ipv4 ip는 다 나눠줘서 더이상 줄수 있는 ip가 없음.

3. 클래스간 속도 차이같은게 있나? -> ㄴㄴ, 없음

 

네트워크 주소(network portion)를 아는 방법

앞서 ip주소는 network portion과 host portion이 있다고 했습니다. 그리고 Host hosts belonged to one network 같은 네트워크 주소를 갔는다고 했습니다. 반드시 같은 네트워크를 가져야만 밖에서는 네트워크 주소로 delivery 되고 안에 들어와서 host 들여다 보니까, 같은 네트워크에 있는 모든 주소는  같은 네트워크를 가져야 된다.

네트워크 portion 그대로 갔고 있고요. Host portion  0으 만들면 끝.

예) 112.206.139.210 이라는 ip 주소가 있으면 112는 A 클래스임으로 해당 ip의 네트워크 address는 112.0.0.0이 된다.

220.109.84.48 -> 네트워크 주소: 220.109.84.0

쉽죠?

위 그림의 예제를 보면 맨왼쪽에 111.22.3.1과 111.22.3.2는 하나의 네트워크, A클래스입니다.

맨 오른쪽에 210.10.10.30과 210.10.10.45가 하나의 네트워크, C클래스입니다.

아래쪽에 124.0.0.1 그리고 124.1.1.12가 하나의 네트워크, A클래스입니다.

그리고 마지막으로 구름으로 그려져 있는 인터넷쪽으로 가는 하나의 네트워크 총 4개의 네트워크를 가지고 있습니다. 

 

각자의 network address(portion) 구하는 방법은 아실것 이라고 믿겠습니다.

참고로 아래 사진은 라우터를 의미하고 여기에서 서로 다른 네트워크를 연결하는 라우터를 border gateway라고 합니다. border gatwway는 다른 네트워크와 연결하기 위해서 하나의 네트워크 끝에 무조건 존재하는 라우터이고 중요한 역할을 합니다.

 

Subnet address

우리는 이제 네트워크 주소를 앞서 배워 쉽게 찾을 수 있지만 컴퓨터가 이를 찾기 위해서는 다른 방법을 사용해야 됩니다. 

컴퓨터는 network 주소는 어떻게 찾냐면 실제 ip주소에다가 mask apply합니다. Mask bit expression인데 네트워크 주소를 나타내기 위한 비트 expression입니다. 그래서 예를 들어서 A클래스이다, 그러면 mask 1111111 00000000 00000000 00000000입니다. 그래서 여기다가 111.22.3.4 A클래스이니까 주소에다가 얘를 and 시키는 겁니다. and시키면 and 두개가 1일때만 1이고 나머지는 0입니다. 그러면 111.0.0.0 남겠죠. 그래서 mask하고 ip주소하고 and 시키면 big wise and 시키면 우리가 network 주소를 찾을 있게 되는 겁니다. 그리고 A,B,C 이미 고정입니다. 이렇게도 표시하고 이렇게도 표시하고 혹은 이렇게 슬래쉬로도 표현합니다. 그래서 라우터들은 네트워크 주소를 이렇게 구합니다. 

 

요약:

https://www.meridianoutpost.com/resources/articles/IP-classes.php

댓글