일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 운영체제
- 데이터엔지니어링
- 데이터베이스
- TIL
- PYTHON
- dockerfile
- TCP
- sql
- 데브코스
- 데이터 웨어하우스
- linux
- Django
- 데이터 엔지니어링
- 종류
- http
- 컴퓨터 네트워크
- 정리
- airflow.cfg
- 파이썬
- airflow
- AWS
- 가상환경
- 컴퓨터네트워크
- HADOOP
- Docker
- S3
- 데이터 파이프라인
- Go
- 자료구조
- redshift
- Today
- Total
홍카나의 공부방
[컴퓨터 네트워크] 5-1. IPv4의 Classful Addressing 본문
이번에는 IPv4의 주소 배분 중 Classful Addressing에 대해 정리하였다.
IPv4의 주소길이
0.0.0.0으로 표현되는 IPv4의 주소체계가 사실 0.0.0.0.0.0으로 연장된다던지 주소 길이가 더욱 길어진다면
더 많은 주소를 배분할 수 있다는 장점이 있지만, more memory, more time이라는 단점이 존재한다.
주소의 길이가 더 길어지면, 패킷의 길이가 더욱 길어지거나 라우팅 테이블이 커지는 시/공간적 단점이 존재한다.
IPv4가 표준화될 70년대에는 메모리의 크기가 64kb 이랬기 때문에... 메모리를 많이 사용할 수 없었다.
Classful Addressing
IPv4 주소를 분배하는 방법 중에는 classful addressing이 있다.
32개의 bit를 4바이트로 나누고, Network를 구분하기 위한 바이트를 제외하면
나머지 bit로는 Host(Node)를 구분할 수 있게 하는 것이다.
기관마다 필요한 Host ID의 개수가 다를 것이므로 이를 위해 Class를 구분하였다.
예를 들어서 회사 1개가 Class A NetID를 받아온다고 가정하면,
2^24개의 Hostid를 사용할 수 있는 것이다. 즉, 1700만 개의 IP주소를 사용할 수 있는 권한을 얻는 것이다.
그런데 어느 기관이 1700만개나 필요하겠는가? 굉장히 비효율적인 방식이었다.
반대로, Class C에 해당하는 NetID를 받아온다고 가정하면 255개의 HostID를 사용할 수 있었는데
기관의 성격에 따라서는 매우 부족한 IP 개수다.
여기서 Class A, B, C는 Unicast 용도와 Broadcast 용도로 사용하고,
D는 Multicast, E는 미래의 사용을 위해 예악 된 주소로 남겨두었다.
Unicast 등의 통신서비스 구분은 다음 글을 참고하면 좋다.
https://hongcana.tistory.com/16
NetID와 HostID
IP주소를 2개의 Field, 네트워크를 식별하는 NetID와 호스트를 식별하는 HostID로 나눈 이유는 여러 가지가 있는데,
- 외부 네트워크를 통해 데이터를 라우팅하지 않고 동일한 네트워크에 있는 장치가 서로 직접 통신할 수 있게 하기 위함
- 다른 네트워크에 있는 장치가 중간 네트워크를 통해 데이터를 라우팅 하여 서로 통신할 수 있도록 만들기 위함
- 장치들을 논리적으로 구성하여 독립적으로 관리될 수 있게 만들기 위함
- 위치나 구성에 관계없이 네트워크 내에서 장치를 고유하게 식별할 수 있게하기 위함
그래서 2개의 필드로 나눈다. 전화번호도 지역번호, 전화국의 스위치 번호로 나누지 않았는가?
각 Class 별 주소 구조
Class A 같은 경우 netID로 8bits가 존재한다.
0부터 127까지 128개의 주소 공간이 존재하고, 0.0.0.0부터 127.255.255.255까지 Class A에 해당한다.
단, 0하고 10, 그리고 127은 특수 주소라서 netID로 사용하지 못한다.
그래서 실제 network ID는 125개의 block이 존재하고,
각 블록에는 2^24개의 hostID가 존재한다.
그런데 hostID에도 1.0.0.0처럼 hostID가 전부 0이거나
1.255.255.255처럼 bit가 전부 1로 채워진 경우는 Node IP로 할당이 불가능하다.
전부 0으로 채워진 경우에는 네트워크 전체를 의미하는 Network Address 식별 주소로 사용되기 때문이며
전부 1로 채워진 경우에는 BroadCast 주소로, 패킷의 목적지 주소로만 쓸 수 있기 때문이다.
즉, Class A에서 실제 할당 가능한 주소의 개수는 2^24 - 2개이고,
라우터 인터페이스에 할당하는 주소 등을 생각하면 더욱 줄어들 수 있다.
16,777,216개의 주소를 전부 활용하는 기관은 거의 없어서, 대부분의 주소는 버려지게 된다.
Class B는 128부터 191까지 64개의 주소 공간이 있다.
128.0.0.0 부터 191.255.255.255까지 있는데 역시나 hostid의 bit가 모두 0이거나 1인 경우에는 사용하지 못한다.
Class B에서 netID로 할당 가능한 주소 공간은 16,384 block이다 ( 2^6 * 2^8 = 2^14 )
왜 64개가 아니고 2의 14승이냐고 한다면
Class의 First Byte가 '10'으로 시작되는 것일 뿐이고 ( 즉, 10111111이나 10000000 등..)
Second Byte는 0부터 255까지 자유롭게 사용할 수 있기 때문이다.
그리고 Class B는 1,2 번째 바이트로 네트워크를 구분하기 때문에 16,384개다.
hostID로 할당 가능한 주소 공간은 65,536개다.
Class C는 192부터 223까지 32개의 주소 공간이 있고, 2^21 블럭에 각각 256개의 주소 할당이 가능하다.
Class D와 E는 필드가 나뉘어지지 않고, 2.68억 개의 주소가 존재한다.
예시
Q) Classful Address일 때, 73.22.17.25라는 주소가 블록 안에 존재한다면
해당 블록이 가질 수 있는 할당 가능한 IP 주소의 개수와, 첫 번째 주소 및 마지막 주소를 구하라.
(단, 라우터 인터페이스 주소는 무시한다.)
A) 우선 Class A 주소에 해당하므로 주소의 개수는 2^24인데,
net ID 식별 주소와 BroadCast 주소를 제외하면 2^24 -2개이다.
첫 번째 주소는 73.0.0.0/8이고, 마지막 주소는 73.255.255.255/8이다.
'Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크] 5-3. Special Address와 DHCP 응답/요청 (2) | 2023.01.09 |
---|---|
[컴퓨터 네트워크] 5-2. Classless addressing (0) | 2023.01.03 |
[컴퓨터 네트워크] 4. Network Layer Services (0) | 2022.12.26 |
[컴퓨터 네트워크] 2-3. Python을 이용한 DNS 질의/응답 (0) | 2022.12.21 |
[컴퓨터 네트워크] 2-2. 통신서비스의 구분 (0) | 2022.12.21 |