[Network] 4. IP (Internet Protocol)
IP (Internet Protocol)
-
인터넷상에서 사용하는 주소체계를 의미한다.
X.X.X.X
형태를 가지고, 각 자리에는0~255
까지의 숫자가 올 수 있다. - IP 는 전송 계층(4계층)으로부터 받은 데이터(세그먼트)에 IP 헤더를 붙여 패킷으로 만드는 역할을 한다.
- IP 헤더에는 여러 필드 값(버전, 헤더길이, 프로토콜 등), 출발지 IP 주소, 도착지 IP 주소가 들어간다.
- 인터넷에 연결된 모든 PC 는 IP 주소체계를 따라 네 덩이의 숫자로 구분된다. 이러한 네 덩이의 숫자로 구분된 IP 주소체계를 IPv4라고한다.
- IPv4 주소의 범위는
32bit
로 보통0~255
사이의 10진수 4개를 쓰고.
으로 구분하여 나타낸다. - 따라서
0.0.0.0
부터255.255.255.255
까지가 된다. 이론적으로 42억9496만7296 개의 IP 가 존재하지만, 중간의 일부 번호들은 특별한 용도를 위해 예약되어 있다. 예를 들어127.0.0.1
은 localhost(로컬 호스트)로 자기 자신을 가리킨다. - 오늘날에는 기술이 발전하고 한 사람이 가지는 네트워킹 가능한 단말기의 수가 2~3 개가 되어버리자 IPv4 주소의 수가 부족해졌다. 이를 해결하기 위해 등장한 것이 IPv6이다.
- IPv6 에서는 주소 길이를
128bit
로 늘려서 사용 가능한 주소의 갯수가 2의 128제곱 개 정도 된다. -
IPv6 주소는
X:X:X:X:X:X
형태를 가지며 보통 두 자리 16진수 8개를 쓰고 각각을:
기호로 구분한다.ifconig 명령어를 통해 내 컴퓨터의 IPv4 주소를 알 수 있다.
inet(IPv4) 198.18.35.146
이 내 IP 주소를 나타낸다.- 여기서 네트워크 주소는 198.18 까지이고, 35.146 은 나만의 호스트 주소이다. 공통적인 부분(중복이 있는)은 네트워크 주소이고, 식별할 수 있는 부분(중복이 없고 유일무이한)은 호스트 주소라고 할 수 있다.
- 하나의 네트워크 안에 있는 IP는 네트워크 영역은 같아야하고, 호스트 영역은 서로 달라야 통신이 가능하다.
- 그렇다면 네트워크 주소와 호스트 주소의 범위를 어떻게 구분할까?
IP 주소의 클래스 [클래스 풀]
- IP 주소에는 클래스라는 개념이 있고 이 클래스의 개념을 알아야 어디까지가 네트워크 영역이고 호스트 영역인지 알 수 있다.
- 클래스는 하나의 IP주소에서 네트워크 영역과 호스트 영역을 나누는 방법이자, 약속이다.
-
IP주소를 3개의 클래스(A, B, C)로 나누는 이유는 네트워크 크기에 따른 구분이라 생각하면 쉽다. 하나의 네트워크에서 몇 개의 호스트 IP 까지 가질 수 있는가에 따라서 클래스를 나눌 수 있다. 즉, 네트워크 범위가 커질수록 호스트 주소 범위는 작아지는 반비례 관계이다.
- 엄밀하게 IP 주소 클래스는 총 5개가 있다(A클래스, B클래스, C클래스, D클래스 E클래스). 여기서 D, E 클래스는 멀티캐스트용, 연구용으로 사용하고 A, B, C 클래스만 알면 충분하다!
- 네트워크ID, 호스트ID
- 네트워크 ID는 네트워크를 구분해 주는 ID이다. 네트워크 ID가 같다는 의미는 같은 네트워크 상에 있다는 의미로, 같은 네트워크 상에 있다면 서로 자유롭게 통신을 할 수 있다.
- 즉, 서로 ping을 날릴 수도 있고, 공유 폴더를 만들 수도 있다.
- 하나의 네트워크 ID 에는 여러 기기가 있을 수 있다. 반면에 호스트 ID는 해당 네트워크에 속한 사용자에게 부여하는 고유의 번호다.
- 위의 그림처럼 A 클래스는 IP 의 앞자리가
0 ~ 127
, B 클래스는128.0 ~ 191.255
, C 클래스는129.0.0 ~ 223.255.255
로 구성되어 있다. 그리고 이 앞자리들이 각 클래스의 네트워크 ID를 의미한다. - A 클래스에서는 IP 의 첫번째 블록만 같으면 같은 네트워크에 속해있다는 의미이고, B 클래스는 두번째 블록, C 클래스는 세번째 블록까지 같아야 같은 네트워크에 속해있다는 의미가 되는 것이다.
- 네트워크 주소를 제외한 나머지인 호스트 ID는 해당 네트워크에서 몇 개의 IP가 만들어질 수 있는지를 결정한다.
- 예를 들어,
130.34.xxx.xxx
라는 IP 주소가 있다면, 이는 B 클래스에 속하는 IP 주소이고, 따라서 앞자리 130.34 를 가진 IP 들은 같은 네트워크에 있다는 것을 알 수 있다. - 즉 이론적으로
130.34.5.2
와130.34.3.35
는 같은 네트워크 ID를 가지기 때문에 서로 자유롭게 통신 가능하다. - 그리고
130.34
라는 네트워크 IP 는 남은 두 블록을 호스트 ID로 가질 수 있다. 따라서2^16 = 65,536
개의 호스트 ID를 가질 수 있다.
- A 클래스
- A 클래스는 하나의 네트워크가 가질 수 있는 호스트 수가 제일 많은 클래스이다.
- IP 주소를 32자리 2진수(IPv6)로 표현했을때, 맨 앞자리 수가 항상
0
인 경우가 바로 A 클래스이다. 즉0xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
와 같이 되어있다. 이 범위를 10진수(IPv4)로 표현하면0.0.0.0 ~ 127.255.255.255
이다. - A 클래스에서 네트워트 주소는
1.0.0.0 ~ 126.0.0.0
까지로 규정되어있다. 그래서 IP 주소 중 1부터 126으로 시작하는 네트워크는 A클래스라고 생각하면 된다. - 그리고 호스트 주소가 가질 수 있는 갯수는
(2^24) - 2
개 이다. -2
를 해주는 이유는 나머지 블록이 모두 255 인 경우 브로드캐스트 주소(x.255.255.255
)로 사용하고 모두 0인 경우엔 네트워크 주소로 사용하기 때문이다.- 예를 들어 A 클래스로
13.0.0.0
네트워크 주소를 할당 받았을 때, 가능한 호스트 IP 를 10진수로 나타내면13.0.0.0 ~ 13.255.255.255
가 될 것이다. 하지만 여기서13.0.0.0
은 네트워크 주소를 표현하기 위해서 호스트 IP 로 사용하면 안된다. - 또,
13.255.255.255
역시 브로드캐스트 주소로 사용하기 때문에 호스트 IP로 사용하면 안된다. 따라서 (2^24) - 2 를 해주는 것이다.
- B 클래스
- IP주소를 32자리 2진수로 표현했을때, 맨 앞자리 수는 항상
10
이여야 한다. 즉10xx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
가 된다. 이 범위를 10진수로 표현하면128.0.0.0 ~ 191.255.255.255
가 된다. - 네트워크 주소 범위는
10xx xxxx. xxxx xxxx
에서 x 들이 가질 수 있는 경우의 수,2^14
개 이고, 호스트 주소 범위는xxxx xxxx. xxxx xxxx
에서 x들의 경우의 수인(2^16) - 2
개 이다. - IP 주소가 188.18.35.146 이라면, 이 IP는 B 클래스 인 것이다. B 클래스임을 알게 되면 네트워크 부분과 호스트 부분을 나눌 수 있다. 각각
188.18
과35.146
이 된다.
- IP주소를 32자리 2진수로 표현했을때, 맨 앞자리 수는 항상
- C 클래스
- C클래스의 IP 주소는 2진수로 표현했을 때 반드시
110
으로 시작한다. 즉110x xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
가 된다. 이 범위를 10진수로 표현하면192.0.0.0 ~ 223.255.255.255
가 된다. - 네트워크 범위는
110x xxxx. xxxx xxxx. xxxx xxxx
에서 x 들이 가질 수 있는 경우의 수,2^21
개 이고, 호스트 주소 범위는 마찬가지로xxxx xxxx
에서 x들이 가질 수 있는 경우의 수,(2^8) - 2
개 이다.
- C클래스의 IP 주소는 2진수로 표현했을 때 반드시
-
A, B, C 클래스를 표로 비교하면 다음과 같다.
클래스 첫 고정 비트 네트워크 주소 영역 호스트 주소 영역 A Class 0 8bit (2^7개) 24bit (2^24-2개) B Class 10 16bit (2^14개) 16bit (2^16-2개) C Class 110 24bit (2^21개) 8bit (2^8-2개)
클래스리스
- A 클래스와 같이 너무 넓은 범위의 네트워크가 하나의 클래스에 묶여있어 효율적으로 관리하기 힘들고 IP 주소 낭비가 심했다.
- 클래스리스는 이와 같은 클래스풀의 단점을 해결하기 위해 나온 방법이다.
- 서브넷을 표기하고 클래스 범위를 없앤다. 즉 서브넷 마스크의
255
와0
으로, 255 부분은 네트워크 ID, 0 부분은 호스트ID로 구분한다. - PORT
- Port(포트)란 IP 내에서 애플리케이션 상호 구분(프로세스 구분)을 위해 사용하는 번호이다. Port 숫자는 IP 주소가 가리키는 PC 에 접속할 수 있는 통로(채널)을 의미한다.
localhost:8000
을 실행했을 때에는 로컬 PC 의 IP 주소로 접근하여, 8000번의 통로를 통해 실행 된다.- 포트 번호는 0 ~ 65535 까지 사용할 수 있다. 그 중에서 0 ~ 1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있다. 따라서 할당할 수 없다.
Public IP & Private IP
- 공인 IP (Public IP)
- 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다. 공용 IP 주소라고도 불리며 외부에 공개되어 있는 IP 주소이다.
- 공인 IP는 전세계에서 유일한 IP 주소를 갖는다.
- 공인 IP 주소는 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC 로부터의 접근이 가능하다. 따라서 공인 IP 주소를 사용하는 경우에는 방화벽 등의 보안 프로그램을 설치할 필요가 있다.
- 사설 IP (Private IP)
- 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소이며, 로컬 IP, 가상 IP라고도 한다. IPv4의 주소 부족으로 인해 서브넷팅된 IP 이기 때문에 라우터에 의해 로컬 네트워크상의 PC 나 장치에 할당된다.
- 사설 IP 주소는 다음 3가지 주소대역으로 고정된다.
- Class A : 10.0.0.0 ~ 10.255.255.255
- Class B : 172.16.0.0 ~ 172.31.255.255
- Class C : 192.168.0.0 ~ 192.168.255.255
-
표로 비교해보자
Public IP Private IP 할당 주체 ISP(인터넷 서비스 공급자) 라우터(공유기) 할당 대상 개인 또는 회사의 서버(라우터) 개인 또는 회사의 기기 고유성 인터넷 상에서 유일한 주소 하나의 네트워크 안에서 유일 공개 여부 내/외부 접근 가능 외부 접근 불가능 -
사설 IP 주소만으로는 인터넷에 직접 연결할 수 없다. 라우터를 통해 1개의 공인(Public) IP 만 할당하고, 라우터에 연결된 개인 PC는 사설(Private) IP 를 각각 할당 받아 인터넷에 접속할 수 있게 된다.
- 사설망 → 인터넷: 사설 IP 를 할당받은 스마트폰 혹은 개인 PC 가 데이터 패킷을 인터넷으로 전송하면, 라우터(공유기)가 해당 사설 IP 를 공인 IP 로 바꿔서 전송한다.
- 인터넷 → 사설망: 인터넷에서 오는 데이터 패킷의 목적지도 해당하는 사설 IP 로 변경한 후 개인 스마트폰 혹은 PC에 전송한다.
- 사설 IP 역할
- 서브넷을 활용하여 IP 를 효율적으로 배분할 수 있지만, 아무리 효율적으로 IP 를 분배하더라도 이용 가능한 전체 IP 개수가 약 42억 개로 제한되어 있다.
- 이러한 문제에 사설(Private) IP 가 해결책이 된다. 내부에서만 사용할 수 있는 IP 를 만든다면, 외부의 IP와 중복이 되어도 상관이 없기 때문이다.
- 즉 외부에서 접속할 수 있는 Public IP (공인 IP)만을 공유기에 할당하고, 공유기에 연결된 기기들은 내부에서만 사용할 수 있는 Private IP (사설 IP)를 할당하게 되면 하나의 IP 를 가지고도 여러 기기들을 연결할 수 있다. 이를 통해 IP 고갈을 조금 더 늦출 수 있다.
- 하지만, 아무런 IP 나 Private IP 로 사용할 수 있는 것은 아니다. 아까 위에서 봤듯, Private IP 로는 아래의 대역만을 사용 가능하다.
10.0.0.0
~10.255.255.255
172.16.0.0
~172.31.255.255
192.168.0.0
~192.168.255.255
$\rightarrow$ 이는 공유기에서 많이 보는 대역이다.
- Private IP 역시 같은 네트워크 상이면 자유롭게 통신 가능하다.
- 즉, 같은 서브넷에 속한 Private IP 들은 서로 접속할 수 있다. 또한 Private IP 이기 때문에 외부의 접속을 차단할 수도 있다.
고정 IP & 유동 IP
- 고정 IP는 컴퓨터에 고정적으로 부여된 IP 로서, 한번 부여되면 IP 를 반납하기 전까지는 다른 장비에 부여할 수 없는 IP 주소를 말한다.
- 유동 IP는 장비에 고정적으로 IP 를 부여하지 않고 컴퓨터를 사용할 때 남아 있는 IP 중에서 돌아가면서 부여하는 IP 를 뜻한다.
- 인터넷 상에서 서버를 운영하고자 할 때는 공인 IP를 고정 IP로 부여하는 것이 중요하다.
- 즉, 공인 IP 를 부여받지 못하면 다른 사람이 내 서버에 접속할 수가 없고, 고정 IP 를 부여하지 않으면 내 서버가 아닌 다른 사람의 서버로 접속이 될 수도 있기 때문이다.
- 반면에 우리가 집에서 사용하는 인터넷 서비스 업체는 각 가정마다 공인 IP 를 유동 IP 로 부여하고, 공유기 내부에서는 사설 IP를 유동 IP로 부여하는 것이 일반적이라고 보면 될 것이다.
댓글 남기기