[CS50] 인터넷과 네트워크: IP 주소
❄️ David Malan 교수의 컴퓨터 과학 교양 강좌: CS50을 바탕으로 정리한 내용입니다.
인터넷 프로토콜은 인터넷의 정보들이 어떻게 전송되는지를 정의하기 위한 규칙들입니다.
프로토콜이란, 규칙들의 집합을 말합니다.
인터넷 프로토콜 중 일부는 인터넷 상에 있는 각 장치에 대해 IP 주소를 할당해주는 것과 관련 있습니다.
IP 주소는 인터넷 상의 장치들을 식별할 수 있게끔 해줍니다.
IP(인터넷 프로토콜)는 여러 버전을 거쳐 왔으며, 가장 최근 버전은 IPv6로 기존의 IPv4 프로토콜을 대체하기 위한 것입니다.
IPv4 주소와 IPv6 주소
IPv4 시스템에서 IP 주소는 마침표로 구분된 4개의 10진수로 구성됩니다.
각 숫자는 0부터 255까지의 10진수입니다. (8bit 공간)
결과적으로 IPv4 주소는 32bit이며, 최대 2^32개의 주소가 존재할 수 있습니다. 이는 약 43억 개의 주소입니다.
그러나 인터넷이 발달하면서, 43억 개의 주소로는 인터넷에 연결하려는 모든 장치들을 더 이상 수용할 수 없게 되었습니다.
그 결과, 사용 가능한 IP 주소를 늘리기 위해 IPv6 표준이 개발되었습니다.
IPv6 시스템에서 IP 주소는 콜론으로 구분된 8개의 숫자로 구성됩니다.
각 숫자는 16bit 숫자입니다.
각 숫자를 10진수로 표현하지 않고, 16bit 숫자를 0000부터 ffff까지의 16진수로 표현했습니다.
각각 16bit 정보를 갖고 있는 8개의 숫자로 구성되므로, 각 IPv6 주소는 128bit를 저장하며,
이는 340 * 10억 * 10억 * 10억 * 10억 개보다도 더 많은 IP 주소를 만들 수 있습니다.
IPv6가 표현할 수 있는 주소는 현재 쓰이는 주소들의 개수보다 훨씬 더 많기 때문에,
많은 IPv6 주소들은 8개의 구성 숫자들 사이에 0들을 포함하고 있습니다.
축약해서 쓰는 경우, IPv6 주소는 16진수 앞에 오는 0들을 생략하고 0이 연속으로 오게되면 그것들을 생략하면서 ::
을 씁니다.
예를 들어, IPv6 주소 28aa:0000:0000:0000:0000:0000:0018:a5b2
는,
앞의 0들을 생략하고 연속으로 오는 0들을 ::
으로 대체하여 28aa::18:a5b2
로 축약할 수 있습니다.
축약할 때 각 주소마다 ::
은 하나만 있어야 합니다.
사설 IP 주소
인터넷 상의 모든 IP 주소들이 다 접근 가능한 것은 아닙니다.
사설 IP 주소라고 알려진 어떤 주소들은 특정 로컬 네트워크 내에서 사용되도록 따로 떼어놓습니다.
로컬 네트워크에 있는 컴퓨터들은 사설 IP 주소를 이용하여 다른 컴퓨터와 통신할 수 있지만, 이 네트워크 밖에 있는 컴퓨터들이 접근할 수는 없습니다.
보통 사설 IP 주소를 갖는 장치들은 공인 IP 주소를 공유합니다.
이렇게 하면 IPv4 표준에서 필요한 공용 IP 주소의 개수를 줄일 수 있습니다.
10.#.#.#
, 172.16.#.#
- 172.131.#.#
, 192.168.#.#
의 형태를 가진 주소들은 사설 IP 주소로 쓰기 위해 따로 떼어놓은 것입니다.
IP 주소 127.0.0.1
은 다른 당치에 연결하는 것이 아니라, 사용자가 현재 사용하고 있는 장치에 연결하는 주소입니다.
이러한 이유로, 이 주소를 로컬호스트(localhost)라고 부릅니다.
✍️ 정리
- IPv4
- 마침표로 구분된 4개의 숫자
- 각 숫자는 8bit 정보를 갖는다 -> 4 * 8bit = 32bit
- 각 숫자는 0 ~ 255의 10진수
- 최대 2^32개의 IP 주소를 만들 수 있다 (약 43억 개)
- IPv6
- 콜론으로 구분된 8개의 숫자
- 각 숫자는 16bit 정보를 갖는다 -> 8 * 16bit = 128bit
- 각 숫자는 0000 ~ ffff의 16진수
- 340 * 10억 * 10억 * 10억 * 10억 개보다도 더 많은 IP 주소를 만들 수 있다
💛 개인 공부 기록용 블로그입니다. 👻