본 포스팅은 'Wireshark로 배우는 컴퓨터 네트워크' 책과 동아대학교 컴퓨터네트워크 과목을 수강한 후 요약한 글입니다.
목차
1. 개요
1.1 주소 공간
1.2 표기법
1.3 주소의 범위
1.4 연산
2. 클래스 기반 주소지정
2.1 클래스
2.2 Netid와 Hostid
2.2 클래스와 블록
1. 개요
1.1 주소 공간(address space)
- 주소 공간은 프로토콜에서 사용되는 주소의 총 개수
- IPv4는 32비트 길이
- 인터넷에서 유일한 식별자
- IPv4의 주소 공간은 2^32개
1.2 표기법
2진 표기법 : IPv4 주소를 각 옥텟(8비트) 사이에 하나 이상의 공백을 둔다.
ex) 01110101 10010101 00011101 11101010
10진 표기법 : 소수점을 이용하여 10진 형식으로 표기, 점 10진 표기법이라고도 불림, 숫자는 9과 255 사이의 값을 가짐
1.3 주소의 범위
- 처음 주소와 마지막 주소를 알면, 이 범위 내 주소의 개수를 찾는 것이 필요
- 처음 주소와 범위 내 주소를 알면 마지막 주소를 찾을 수 있음
- 해당하는 기수(2, 256, 16)에서 뺼셈이나 덧셈 연산을 수행
- 주소를 10진수 값으로 변환한 후 이 기수에서 연산을 수행
예제 4.4
처음 주소가 146. 102. 29. 0 이고 마지막 주소가 146. 102. 32. 255인 경우 이 범위 내의 주소의 수를 찾아보라
풀이 : 마지막 주소 - 처음 주소 + 1
주소의 수 =(0 * 256^3 + 0 * 256^2 + 3 * 256^1 + 255*256^) + 1(0번째 값) = 1024
1.4 연산
not : ~(비트연산자) , !(뒤집기)
and : &(비트연산자) , &&(결과값 : true 또는 false)
ex) 5 & 3 = 0101 & 0011 = 0001 = 1
5 && 3 = true
1) 비트단위 NOT 연산
--> 보수 취해주기( 32비트에선, 각 바이트를 255에서 빼는 것)
2) 비트 단위 AND 연산
--> 입력1 또는 입력2에 값이 0 또는 255이면 작은 바이트 값을 취한다. ( 0 또는 255 없을시는 직접!)
3) 비트 단위 OR 연산
--> 입력1 또는 입력2에 값이 0 또는 255이면 큰 바이트 값을 취한다 (위와 동일)
2. 클래스 기반 주소지정
2.1 클래스
5개(A, B, C, D, E) 클래스로 구분
주소가 2진 표기법으로 주어졌다면, 맨 앞의 몇 개의 비트를 보고 주소의 클래스 파악 가능하다.
10진법으로 표기된 경우 주소의 클래스를 결정하기 위해서는 첫번째 바이트를 살펴보면 된다.
ex) 클래스별 주소지정 예제
A 클래스 : 00000000 ~ 01111111 : 0 ~ 127 ( 0은 고정)
B클래스 : 10000000 ~ 10111111 : 128 ~ 191 ( 10은 고정)
라우터에서 위 알고리즘이 필요한 이유
: 예를 들어 3만개의 행이 있을 때 다 돌아봐야하지만, 테이블을 3개로 나누면 1만개의 행으로 나눌 수 있다. 이는 탐색속도가 3배 더 빨리는 것을 의미한다!
2.2 Netid와 Hostid
클래스 기반 주소지정에서 클래스 A, B, C의 IP주소는 네트워크를 구분하는 Netid와 호스트를 구분하는 hostid로 나뉜다.
각 부분은 클래스 별 길이가 서로 다르며 D와 E은 따로 netid와 hostid로 나누어지지 않는다.( 이유는 뒷장에서 ..) Netid란, 전체 네트워크에서 각 네트워크를 구분하기 위한 주소로, 한 네트워크 안에서는 Netid가 같아야 통신이 가능하다.
ex) 하나의 네트워크(라우터를 통하지 않는)안에서 10.0.0.3의 Host와 129.0.0.3의 ip를 가진 Host는 통신을 못한다.
Hostid란, 각 네트워크 안에서 장비를 구분하기 위한 주소이다.
cf) 각 네트워크의 첫번째 주소(ex: 192.168.0.0)은 네트워크 이름, 마지막 주소(192.168.0.255)는 브로드캐스트 주소이므로 사용이 불가능하다. 네트워크 이름이란, 해당 네트워크 자체를 의미하는 주소로 사용한다. 브로드 캐스트란, 해당 네트워크에 속한 모든 장비에게 메시지를 보낼 때 방송용으로 사용한다.
2.3 클래스와 블록
1) 클래스 A
1바이트만 netid이고 가장 왼쪽 비트는 0으로 고정이기 때문에 나머지 7비트는 이 클래스 내의 블록 수를 찾는데 사용된다. 7비트로 나타내는 블록의 수 = 2^7 = 128블록 ( ex. 128개의 기관에 할당 가능)
블록에 속한 주소 수 :256 * 256 * 256 = 16,777,216개 (1기관당 쓸 수 있는 주소 수)
2) 클래스 B
2바이트가 netid이고 가장 왼쪽 두 비트는 10으로 고정이기 때문에 나머지 14비트는 이 클래스 내의 블록 수를 찾는데 사용된다.
14비트로 나타내는 블록의 수 = 2^14 = 16,384블록 ( ex. 16,384개의 기관에 할당 가능)
블록에 속한 주소 수 : 256* 256 = 65,536개
'Computer Science > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] OSI 모델과 계층구조 (0) | 2023.04.10 |
---|---|
[컴퓨터네트워크] IP주소 ② (0) | 2023.04.07 |
[컴퓨터네트워크] 프로토콜(Protocol) (0) | 2023.04.06 |