기초컴퓨터네트워크 18 (Addressing)

TonyHan·2021년 5월 14일
0

=== Addressing ===

data plane에 대해서 알아보자

1. Internet address

• To send a message, we need a destination address : ip address를 생각하면된다. 패킷이 목적지까지 전달하기 위해서는 목적지의 주소가 필요하다. 이때 host의 주소를 internet address라고(ip address)라고 한다.
• Every host connecting to the Internet needs to have a unique address : 이 ip 주소는 unique해야 한다.

• IPv4
– the address system used today
– 32 bits
– possible number of hosts: 4,294,967,296 : 43억개정도의 ip address가 나올 수 있다. 하지만 이 숫자도 상당히 적다.

  • IPv6
    • a new address system designed to replace IPv4
      • IPv4 address exhaustion
    • Still not used widely, but eventually will
    • Routers need to be upgraded in order to support IPv6
      • takes time
    • 128 bits

(중요)
IPv4는 32bit로 interface(NIC 등)에 할당된다. 인터페이스는 host/router, physical link 사이의 연결을 주도함

IP address: notations

binary notation(32bit)의 수치가 ip address이다.
dotted-decimal notation : 2진수를 10진수로 바꾸어서 점을 찍은 것을 이야기 한다.

IP address: exercise

• Convert the following IPv4 addresses into dotted-decimal representation

– 10000001 00001011 00001011 11100111 : 129.11.11.231
– 11000001 10000011 00011011 11111111 : 193.131.27.255

• Dotted-decimal notation: wrong use case
– 111.56.045.78 : 앞에 0 들어감
– 221.34.7.8.20 : 숫자 5개
– 75.45.301.14 : 범위 넘어감
– 11100010.23.14.67 : 하나가 2진수

IP address: hierarchical structure

ip address에서도 체계를 가질수 있도록 만들었다.
• Network address + Host address : network와 host 부분을 나누는 것이다.
• Nodes in the same network has the same network address

network까지는 주소는 같고 host부분만 바꾸자는 방식이다. 그래서 지역의 네트워크 address를 공유하는 방법이다. 그래서 그 방법은 위와 같이 나뉘어 진다.(8:24 | 16:16 | 24:8)

• Ethernet address: flat (no structure) : 이더넷 address는 지역적 특성없이 제조사의 고유번호가 들어가는 형태로 address가 들어가게 된다.

IP address: allocation

  • IP address allocation system
    • Administrator: IANA (Internet Assigned Numbers Authority) : 여기에서 모든 ip를 관리한다.
      • allocates address space to continents
      • Asia: APNIC (Asia-Pacific Network Information Center) : APNIC에서 아시아지역을 중점적으로 관리한다.
    • APNIC allocates IP addresses to countries in Asia
      • Republic of Korea: KRNIC (Korea Network Information Center) : 한국은 KRNIC이 주로 관리하게 된다.
    • KRNIC allocates address space to ISPs (Internet Service Providers) and organizations in Korea

2. Classful addressing

• system used to allocate address space based on network size

각각 address를 나눈것을 위와 같이 class를 나뉘게 된다. classD, E는 조금 특수한 목적으로 할당되는 ip address라고 생각하면 된다.

• class A: IP address (binary notation) starts with ‘0’
• class B: starts with ‘10’
• class C: starts with ‘110’

Classful addressing: exercise

• What are the classes of the following addresses?
– 00000001 00001011 00001011 11101111(A)
– 11000001 10000011 00011011 11111111(C)
– 14.23.120.8
– 210.115.229.74

Classful addressing

• Network address: indicates a network as a “group of hosts”
– Class A: 7 bits : 앞의 0을 빼냐 넣냐로 8, 7비트
– Class B: 14 bits : 10
– Class C: 21 bits : 110을 넣냐 않넣냐

• Host address: indicates a host inside a network
– Class A: 24 bits
– Class B: 16 bits
– Class C: 8 bits

• For large ISPs or organizations, a class A address space is allocated
• For smaller ISPs or organizations, a class B or class C address space is allocated

클래스별로 호스트의수가 다르다. 클래스에 해당하는 네트워크 address를 할당받아서 그걸로 조직의 망을 구성하는 것을 Classful address라고 부른다.

Subnetting

• An organization can re-allocate its address space to organize multiple subnets : 한개의 Class 내부에서도 분리해서 여러개의 네트워크를 사용하고 싶어질 수 있다. 이럴때 ip address를 어떻게 나눌지를 생각해 보는 것이다.
• Subnet masks define partition of host part to subnet ID and host ID

앞의 24bit가 subnet의 ip이다. 그리고 뒤의 8개의 0이 subnet이 가질 수 있는 host ip이다라고 설정할 수 있다.


(요약)
IP는 subnet part, host part로 나뉘어 있다. 그래서 subnet은 고정되어 있고(같은 subnet part를 나누는 기준이 됨) host는 값이 자주 변한다.

같은 subnet에 들어가 있으면 라우터가 개입하지 않아도 상호 데이터를 주고받을 수 있다.

서브넷을 결정하는 방법 : 우리가 서브넷 마스크를 이용해서 결정하면 된다.


3. Classless Addressing

• "Supernetting"
– Similar to subnetting, it is also possible to use subnet mask to combine multiple network addresses : 여러개의 네트워크 address를 하나로 합친것을 보고 supernetting이라고 부른다.
예를 들어서 나는 classC를 사용하고 있는데 네트워크가 보다 더 필요해서 네트워크 어드레스의 마지막 1비트는 그냥 호스트 네트워크 용도로 사용하는 경우이다. 이를 위해서 다른 네트워크도 함께 끌고와서 사용하게 된다.

• Using subnet mask, we can define a network of any size -> Classless addressing : subnet 마스크를 쓰더라고 class를 나누지 않는 것을 보고 Classless addressing이라고 부른다.

• Classless addressing is also called “CIDR” : 다른말로 CIDR이라고 부르기도 한다.
– Classless Interdomain Routing
– Widely used in today’s routers

• Problem with classful addressing : 클래스별로 문제가 있어서 그냥 subnet mask를 쓰게 된 것이다.
– class A and B: too large
– class C: too small
– For a network of 1000-2000 hosts, a class C address space is not enough, but a class B address space is too wasteful

• As the number of networks increase, address space should be efficiently allocated
• Classful addressing is inefficient

  • A newer approach of address allocation

  • No class: addresses allocated as an address block : 이제는 클래스가 없기 때문에 어디에서 어떻게 쓰라고 조직에서 정해주어야 한다.

  • Three rules of address allocation : 다음 3가지 룰을 이용한다.

    • address space should be continuous : address space가 연속되어야 한다. 갑자기 숫자가 확튀어서 할당해주어서는 안된다.
      • should not be partitioned
    • Number of addresses should be a power of 2 : 2의 지수승으로 할당을 해라(5개의 컴퓨터가 있다면 최소한 8개는 ip를 할당해주어야 한다.)
    • The first address in the block should be divided by number of addresses in the block : 어떤 ip address block을 할당을 할때 첫번째 주소는 block의 크기로 나누어질 수 있어야 한다. 아래의 예시를 통해 확인해 보자

• Example: an organization needs 16 addresses
– allocated: 205.16.37.32 ~ 205.16.37.47

16개의 주소가 필요해서 연속이고, 지수인 상태로 아래와 같이 할당했다고 하자. 이것은 숫자이지만 실재로는 binary number이다. 이때 이 숫자의 끝은 16으로 나누어 떨어져야 한다. 예를 들어서 여기에서는 32가 16으로 나누어 떨어지니 정상이다. (반대로 205.16.37.1 ~ 로 할당하면 안된다)

• network mask
– IP address prefix that indicates the same network
– IP address: 210.115.227.98
– subnet mask: 255.255.255.0
위에서 반드시 블록으로 나누어져야 하는 이유는 subnet mask 때문이다.

그렇다면 ip address가 속하는 망은 210.115.227.0 - ...255까지인것을 확인할 수 있다.

• network mask
– n: subnet mask (prefix length)
– 205.16.37.39/28
위와 같이 subnet 마스크까지 해서 표현해준다. 숫자 28은 위에서부터 28bit까지는 1이라는 것을 의미한다.


(요약)

  • CIDR : subnet 부분은 ip 주소에서 결정되어 있지 않다.
    – n: subnet mask (prefix length)
    – 205.16.37.39/28

Classless addressing: exercise1

• An ISP was allocated an IP address block
• One of the address was 205.16.37.39/28
• What is the first address in this block?

205.16.37.39/28 -> 11001101 00010000 00100101 00100111 : 앞의 28bit가 network이고 4bit가 host이다.
The first address is 11001101 00010000 00100101 00100000
Thus, the first address is 205.16.37.32 : 그러므로 첫번재 address는 205.16.37.32이다.

• Usually, the first address in a block also indicates the address block itself
– 205.16.37.32/28 can mean the address block 205.16.37.32 – 205.16.37.47

Classless addressing: exercise2

• One of the addresses allocated to an ISP is 205.16.37.39/28.

이 문제를 풀기 위해 28를 제외한 마지막 숫자의 비트로 바꾸어 보자
0010 0111
진한 부분을 모두 1로 바꾸면 그게 last address이다.

• What is the last address in this block?
205.16.37.47

• What is the number of addresses in the block?
block은 2^4 = 16개이다.

4. Forwarding with CIDR

• Routing table must store entries
– Entry: (Destination, Next Hop)
routing table이란 어떠한 목적지로 하기위해 다음은 어떤 interface로 내보내야 할지가 결정되어야 한다. 하지만 destination이 43억개나 되면 너무 라우터가 소모해야 하는 메모리가 많아진다.

• Routing table size affects performance : routing : 그래서 라우팅 테이블 사이즈가 너무 커지면 다음과 같은 문제들이 생긴다.
– Large size slows down processing : processing이 느려지고
– Too much space needed : 공간을 많이 낭비한다.

• Solution: prefix routing : 그래서 prefix routing이 해결책이 될 수 있다.

Prefix routing

• Suppose 194.24.x.x indicates a host in Cambridge university, UK.

• From a router in Cambridge University,
– It is probable that destination address 194.24.1,1, 194.24.83.72, and 194.24.235.55 will have the same next hop router. : 라우터가 이걸 따로따로 기억할 수 없다. 그래서 이걸 합치어서 기억하는 것이다.
– Thus, for these destinations, only one route entry is maintained as the following.

– destination: 194.24.0.0/16 : 이것과 같이 라우터에서도 block을 기억한다. 앞의 16bit가 일치하면 이 라우터를 택하라는 의미가 된다. 이런것을 Prefix routing이라고 부른다.
– If the first 16 bits of the destination matches 194.24.0.0, then this entry should be used.

• Suppose addresses of hosts in universities are as follows.

그래서 Cambridge와 같은 것을 21bit가 동일하다고 표현하고 테이블에 저장하고 있는다. 나머지도 이와 유사하게 테이블에 저장하고 있는다.

• The routing table is maintained as follows.
– Cambridge: 194.24.0.0/21
– Edinburgh: 194.24.8.0/22
– Oxford: 194.24.16.0/20

이러한 방식을 routing table entry를 줄인다.

• For a packet destined for 194.24.17.4
– compare the first 21 bits with 194.24.0.0 -> no match
– compare the first 22 bits with 194.24.8.0 -> no match
– compare the first 20 bits with 194.24.16.0 -> match
– Thus the route for Oxford is used.
이제 ip header을 열어보면 dest address가 있는 것을 확인할 수 있다. 이때 194.24.17.4라고 하면 prefix subnet mask 중에서 앞 bit들이 매치되는지를 확인한다.

• If there are multiple matching entries : 여러개의 entry와 match 될 수도 있다.
– The one with the longest prefix is used : 이 경우에는 긴것을 선호하는데 나중에 다시보자

• Destination IP address: 194.24.17.25
– 11000010 00011000 00010001 00011001

Longest matching prefix

• If destination IP address is 194.24.14.72, which next hop should be used?

위와 같이 19, 22 모두 일치하는 경우 긴 mask를 선택한다.

• Since both routes match, San Francisco is selected as the next hop
– Longer prefix: a more specific path : 보다 특정되어 있는 마스크이기 때문이다.

Route aggregation

• For routers in Sogang university, routes to Cambridge, Edinburgh, and Oxford all have the same next hop. : next hop이 모두 같은 경우 꼭 세개의 entry를 가지고 있을 필요가 없다.

• In this case, the three route entries can be aggregated. (route aggregation) : 이 경우에는 라우트들을 aggregate해서 하나의 entry로 만들 수 있다. 그래서 이 ip address를 하나로 묶을 수 있는 ipaddress group을 찾아내야 한다.

• Cambridge: 194.24.0.0/21
• Edinburgh: 194.24.8.0/22
• Oxford: 194.24.16.0/20

• aggregated: 194.24.0.0/19 = 위의 세개를 이렇게 하나로 묶어버리자

• Used to reduce routing table size

profile
신촌거지출신개발자(시리즈 부분에 목차가 나옵니다.)

0개의 댓글