IP
IP는 Internet Protocal의 줄임말입니다.IP주소는 TCP/IP계층이나 OSI 7계층 에서 네트워크 계층에서 동작하는 주소입니다.IP주소를 사용해야하는 이유를 살펴 보기 위해서는 IP주소가 무엇을 하는지를 살펴보아야 합니다.
IP address
TCP/IP 혹은 OSI 7계층에서 네트워크 계층에서 수신자와 송신자를 구분 짓는 것 입니다.수신자와 송신자는 기존의 네트워크에서 다른 네트워크로 데이터를 보내는 사람이 송신자이고 데이터를 받는 사람이 수신자입니다.
사진을 보면 A라는 네트워크를 사용하는 사용자가 b가 있고 B라는 네트워크를 사용하는 사용자 d가 있습니다.A네트워크를 사용하는 사람은 현재 B 네트워크로 데이터를 보낼려고 합니다.하지만 어디로 정확하게 보내야 될지를 잘 모릅니다.그래서 정확한 수치가 필요한데 바로 IP address 주소입니다.
IP주소는 송신자가 어디서 보낼지 수신자가 어디서 데이터를 받을 지를 정하는 정확한 수치 입니다. IP주소를 통해서 송신자와 수신자를 구별 할 수 있습니다.네트워크 문제나 네트워크를 하다가 host 단어를 알아보아서 간단하게 알아보자면
host
데이터를 주고 받는 사용자(송신자 & 수신자)를 host(호스트)라고 합니다.
IP주소 할당 받는 방식
IP주소를 할당받는 방식에는 크게 2가지가 있습니다.
고정 IP 방식(Static IP),동적 IP 방식(Dynamic IP) 이렇게 2가지가 존재합니다.
고정 IP 방식(Static IP)
고정 IP 방식은 한번 IP를 할당 받으면 절대로 변하지 않을때 사용하는 방식입니다.예를 들어서 쇼핑몰 사이트의 IP주소가 계속 바뀌면은 사용자들은 쇼핑몰 사이트에 다시 접속할때마다 IP주소를 다르게 입력해야하기 때문에 불편 할 것입니다. 그래서 인터넷 사이트들은 IP주소들이 고정적으로 되어 있습니다.
동적 IP 방식(Dynamic IP)
동적 IP 방식은 시간에 지남에 따라 지속적으로 변경되는 네트워크에 연결되는 임시주소 입니다.동적 IP 방식은 DHCP(Dynamic Host Configuration Protocol)을 통해서 IP들을 할당 받습니다. 서버한테 IP 할당 request가 들어오면 IP를 부여해주고 다른 IP들끼리 간섭없이 사용 가능합니다.
IP 주소 구조
IP주소의 구조를 알아보기 전에 아마 cmd창에서 ipconfig명령어를 친적이 아마 한번쯤 존재 할것입니다.ipconfig치고 나서 확인 하면
무엇이 많이 뜨게 될겁니다.저희가 앞에서 배운 내용은 IP주소 관련해서 배웠으니까 ipconfig를 쳤을때 보아야 하는것은 IPv4주소를 보아야 합니다.
IPv4 주소 : 192.168.219.101
IPv4 주소 : 192.168.70.1
IPv4 주소 : 192.168.74.1
현재 ipconfig를 했을때 나온 IP주소들입니다. 지금 IPv4라는 것이 보입니다.
IPv4는 IP주소의 버전을 나타내는 것입니다.
IPv4 & IPv6
1981년 쯤에 v4버전이 나왔습니다. 1981년 당시에는 지금과 다르게 네트워크가 많이 발전 하지 않았기 때문에 개발자가
2∧32 대략 4,294,967,296개
정도로 설계를 하였습니다.그러다 보니 어느 순간 부족한 순간
이 도달 하였습니다.
"2011년 2월 4일부터 모든 IPv4 주소가 소진되어 IPv4의 할당이 중지되었다."
📎 reference : Wikipedia(위키백과)
그래서 IPv4버전을 보완해서 나온것이 IPv6입니다. 1995년에 IPv6가 나왔으며 IPv4보다 더 많은 양의 호스트들을 할당 받기 위해서 무려
2∧128 대략 340,282,366,920,938,463,463,374,607,431,768,211,456개(340간....)
정도로 할당받을 수 있도록 설계되었습니다.
IPv4구조
IPv4는 2진수 32비트로 구성 되어 있습니다. 32비트의 주소를 알아보기 쉽게 나타낸것이
10진 표기법(dotted-decimal notation)입니다. 십진 표기법을 사용하는 이유는 컴퓨터에서 인식하는 IP주소는 2진수로 되어 있습니다. 하지만 2진수로 바로 알아보기에는 불편하기 때문에 10진 표기법을 사용합니다.
- 0으로 이루어진 박스들이 있습니다.하나의 박스가 1bit입니다. 총 32개가 있으니까 32bit입니다.IP주소는 2진수로 이루어져 있기 때문에 1아니면 0밖에 존재하지 않습니다.
그래서 0과 1의 조합을 통해서 IP주소를 나타냅니다.- '.' 으로 8개의 상자들이 나누어져있습니다.각각의 8개의 묶음이 4개가 있는 걸 확인 할 수 있습니다. 8개의 묶음을 Octet(옥텟)이라고 부릅니다.지금 총 4개의 Octet이 있는 걸 확인 할 수 있습니다.
- 1 octet = 8bit
각각의 자리는 2의 제곱수들을 나타냅니다.
하나의 octet-마다 가중치가 0부터 7까지 존재합니다. 하나의 옥텟만 살펴 보도록 하겠습니다.
왼쪽 자리수부터 2^0부터 2^7까지 나타내져 있는 것을 살펴 볼 수 있습니다.사람들이 10진표기법을 사용해서 나타내었지만 컴퓨터에서는 하나의 octet들이 2진수로 변환되어서 인식이 됩니다.
그러면 위에서 본 주소들을 다시 상기 시켜 보도록 하겠습니다.
IPv4주소 10진수 > 2진수 변환
IPv4 주소 : 192.168.219.101
IPv4 주소 : 192.168.70.1
IPv4 주소 : 192.168.74.1
이 주소들은 현재 10진 표기법으로 나타내어진것입니다. 위에서 각각의 네모 칸마다 2의 제곱꼴로 있었던 것이 기억 나실겁니다. 네모칸에 있던 2의 제곱수를 활용해서십진 표기법을 원래 형태인 2진수로 변환 시켜 보도록 하겠습니다.
ex IPv4 주소 : 192.168.219.101
먼저 맨 앞.09에 있는 octet부터 변환 시키도록 하겠습니다.변환 시킬때 제일 편한것은 각각의 네트워크 2의 몇 제곱인지를 확인 하는 것이 제일 편합니다.
↑ 각각의 2의 제곱수들을 변환 시킨 것들 입니다.
아마 10진수에서 2진수로 변환 시키는 방법들은 다 알고 계실겁니다. 일일이 다 나누는 방법들이 있겠지만 제가 생각했을 때 제일 편한 방법은 빼주는 것이 제일 편하다고 생각합니다.
제일 먼저 해야할 것은 192보다 작거나 같지만 제일 큰 2의 제곱수를 찾는 것입니다.128이 제일크게 되니까 128을 1로 바꾸어 줍니다.
현재 192중에서 128을 변환 해주었습니다.나머지 변환 해주어야 하는 것은 192 - 128을 해주면 64가 남습니다. 64를 변환 시켜주어야 하는데 변환 시키는 조건은 위에와 동일합니다. 64보다 작거나 같은 2의 제곱수로 변환 시켜주어야 하는데 64는 2^6으로 나타내줄 수 있습니다. 그러므로 2^6을 1로 변환 시켜주어야 합니다.
10진수에서 남은 수는 0이므로 변환이 끝났습니다.
남은 주소들도 위에와 동일하게 변환하면
128
219
101
최종적으로 변환 2진수 주소들을 다 합치면
192.168.219.101 = 11000000.10101000.11011011.01100101
으로 컴퓨터가 인식 할 수 있는 2진수 주소로 변환이 되었습니다.
IPv4주소 10진수 > 2진수 변환
2진수에서 10진수로 변환하는 과정은 더 간단합니다. 1로 변환 되어 있는 것은 10진수에 2의 제곱수가 포함되어 있다는 것을 의미합니다.왼쪽부터 2 ^ 0 ~ 2 ^ 7으로 구성되어져 있습니다. 밑에 있는 2진수로 한번 10진수로 변환 해보도록 하겠습니다.
11000000
현재 1이 있는 위치들은 2 ^ 7,2 ^ 6이고 각각 128,64 입니다. 이 수들은 더하면은 원래의 10진수들이 됩니다 .
128 + 64 = 192
따라서 2진수에서 10진수로 변환 했을때의 값은 192가 됩니다.
내용이...너무 길어져서 다음 포스트에서도 마저 다루도록 하겠습니다.
Next Post