IP Address (IPv4 기준)
- 네트워크 인터페이스의 고유한 글로벌 주소이다.
- 32 bit long identifier, network number(network prefix) + host number -> 2 tier architecture
- Dotted Decimal Notation으로 표기된다.
- 0.0.0.0 - 255.255.255.255
- 네트워크는 패킷이 어디로 가야 할지(forward)를 결정하기 위해 주소를 사용한다.
- 라우터는 IP 주소를 기반으로 패킷을 보내는 네트워크 장치이다.
(스위치 - 데이터링크 레이어, 라우터 - 네트워크 레이어)
Network Prefix and Host Number
- network prefix는 네트워크를 가리키고, host number는 해당 네트워크 안의 특정한 호스트를 가리킨다.
- network prefix의 크기는 93년 이전엔 절대적으로 규정되어있었다. (class-based addressing)
93년 이후로는 netmask를 따른다.
ex)
IP address: 166.104.239.96
network address: 166.104.0.0
Host number: 239.96
Netmask: 255.255.0.0
Prefix or CIDR notation: 166.104.239.96/16 (상위 16비트가 넷마스크)
Classful IP Address의 문제점
- Class C network들이 널리 쓰이게 되며, 1993년 라우팅 테이블의 크기가 라우터의 용량을 넘어섰다.
- 큰 네트워크에 비해 너무 적은 네트워크 주소를 갖게 된다. (Class A, Class B의 주소를 못 쓰기 때문에)
- 네트워크 주소의 한정된 유연성
Class A, B는 너무 많은 주소를 갖고 (Overkill)
Class C의 주소는 불충분하다.
Class A는 2^7=128 개의 네트워크 수, 2^24=16,777,216 개의 호스트 수
Class B는 2^14=16384 개의 네트워크 수, 2^16=65,536 개의 호스트 수
Class B는 2^21=2,097,152 개의 네트워크 수, 2^8=256 개의 호스트 수
Subnetting
- 한 organization이 독립적으로 관리되는 여러 네트워크를 가진다면?
1. 각 네트워크에 대해 별도의 네트워크 주소를 할당해준다.
관리가 어렵다
organiation의 외부에서 각 네트워크의 주소에 접근할 수 있어야 한다.
2. IP 주소 체계에 또 다른 레벨의 계층을 만든다. -> subnetting
Subnetting의 주소 지정
- organization의 각 부분은 IP 주소의 범위로 할당된다. (subnets or subnetworks)
- 각 subnet의 주소들을 지역적으로 관리할 수 있다.
Subnetting의 기본 아이디어
- IP 주소의 host number를 subnet number와 (더 작은) host number로 나눈다.
- Subnet은 organization안에서 자유롭게 지정될 수 있다.
- 내부적으로, subnet은 분리된 네트워크로 다뤄진다.
- subnet 구조는 organization 외부에서 볼 수 없다.
Subnetmask (extended network prefix = subnetmask)
ex)
Network IP address : 166.102.0.0/16
Subent IP address : 166.104.239.0/24
Host IP address : 166.104.239.96
이때, host의 subnet mask는 255.255.255.0 (ff ff ff ff 00)
Subnetting이 없다면, 모든 호스트는 다른 호스트들이 같은 네트워크에 있다고 생각한다.
Subnetting이 있다면, 호스트는 같은 extended network prefix (network prefix + subnet number에 속하는 호스트가 같은 네트워크 안에 있다고 생각한다.
라우터
- 라우터는 패킷이 도착하는 input interface들과 패킷이 분리돼 나가는 output interface들로 구성된다.
- input과 output을 연결해주는 상호연결 form이 있다.
- 패킷을 상응하는 output interface로 전달한다(forward). (라우팅 테이블 이용)
- 대역폭(bandwith)과 buffer spae resources를 관리한다.
subnetting의 이점
- 라우터의 복잡도를 줄여준다. 외부 라우터는 내부 서브넷에 대해서 몰라도 된다.
때문에 외부 라우터의 라우팅 테이블의 복잡도는 줄어들 것이다.
VLSM (Variable Length Subnet Mask) 가변 길이 서브넷 마스크
- 모든 서브넷이 동일한 서브넷 마스크 길이를 가질 필요는 없다.
- 서로 다른 서브넷 마스크들은 다른 네트워크 범위 크기의 뷰로 이어진다.
Broadcast Address
- IPv4의 각 subnet은 subnet broadcast address로 특별한 주소를 보존해놓는다.
- Host Field 비트를 모두 1로 채운 것이 그렇다.
하지만, 이 주소를 누가 악의적으로 이용해 subnet broadcast를 할 수 있기 때문에 보안에 취약하다.
때문에 router가 허용하지 않는 경우가 많다.
3개의 큰 문제점
- 1994년, class B의 절반이 이미 할당되었다. 1995년에 class B가 고갈될 것으로 예상되었다.
- 32-bit IPv4 주소 체계는 2000년대 초반까지 예상되는 인터넷의 크기를 다루기에 부적절하다고 생각되었다.
- 글로벌 라우팅 테이블의 엔트리의 수가 1995년 65000에 달했고 점점 증가하고 있었다. 점점 더 많은 class A, B, C 라우팅 엔트리가 생겨나며 라우팅 성능이 고통받고 있었다.
CIDR (Classless Inter-Domain Routing)
- 목표
IP 주소 할당을 재구조화하여 효율을 높인다.
router aggregation을 허용하여, 라우트 테이블 엔트리의 수를 최소화한다.
- IP 주소에 network prefix의 길이가 임의적으로 유지되어야 한다(kept arbitrary).
- IP address에 network prefix의 길이가 무조건 함께 제공되어야 한다.
- prefix는 인터넷 확장력의 key다.
- address는 contiguous chunks(연속적인 덩어리)로 할당된다.
- 라우팅 프로토콜과 패킷 포워딩은 prefix에 기반한다.
- CIDR 표기법은 주소 블록을 표기하기에 적합하다.
- 라우팅 테이블에 CIDR address blocks를 사용한다. (router aggregation)
- Backbone ISP(Internet Service Provider)가 큰 block의 IP 주소 공간을 얻은 후, 그들의 고객에게 블럭을 나누어 준다.
Reserved or (by convention) special addresses
- 루프백 인터페이스
127.0.0.1 ~ 127.. 255.255.255는 loopback interface로 예약돼 있다.
대부분의 시스템은 127.0.0.1을 loopback interface로 사용한다.
loopback interface는 'localhost'라는 이름과 연결돼있다.
- Broadcast address
host number가 전부 1인 주소 ex) 128.143.255.255
네트워크의 모든 호스트에게 전달한다.
보안 취약점이 있기 때문에 대부분의 라우터는 이를 무시한다.
Test / Experimental addresses (private addresses)
- 실험적 사용을 위해 특정 주소 범위는 예약되어있다.
해당 주소를 목적지로 하는 패킷들은 무조건 드롭되어야 한다.
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
Convention (but not a reserved address)
Default gateway의 host number는 1로 세팅되어있다. ex) 192.0.1.1
'컴퓨터 사이언스 > 네트워크' 카테고리의 다른 글
[모바일 컴퓨팅] User Datagram Protocol (UDP) (0) | 2021.04.21 |
---|---|
[모바일 컴퓨팅] ICMP (Internet Control Message Protocol) (0) | 2021.04.20 |
[모바일 컴퓨팅] IP (Internet Protocol) (0) | 2021.04.19 |
[모바일 컴퓨팅] Data Link Layer (0) | 2021.04.17 |
[모바일 컴퓨팅] Introduction and Layering (0) | 2021.04.16 |