IP Address

이승준·2024년 6월 1일

컴퓨터 네트워크

목록 보기
4/5
  • IP 주소는 32bit 이고, 8개의 bit 씩 끊어 읽는다.
  • 우리가 흔히 아는 192.0.0.1 의 형식은 끊어 읽은 부분을 각각 10진수로 변환한 형태다.
  • 각 수는 8 bit 이므로, 256진법과 유사하게 작동한다.
    => 각 자리수의 최대값은 255 (8개의 bit 가 모두 1)

Classful Addressing

Occupation of Address Space

  • IP 주소는 32 bit 주소를 사용해 총 2^32 size 의 address space 를 가진다.
  • 이 주소들은 주소의 맨 앞에 있는 ID 에 따라 A 부터 E 까지 5개의 class 로 나누어진다.
  • ID 가 0 이면 A, 10 이면 B, 110 이면 C 다.
    => 이 값을 10진수로 나타내면 0 부터 127 까지는 A, 128 부터 191 까지는 B, 192 부터 C 다.

NetID and HostID

  • IP 주소를 netid, hostid 두 부분으로 나누는 것으로, 전화번호와 유사하다.
  • 860-7440 이라는 전화번호를 가정해보자. 어떤 기관에서 앞의 번호인 860을 할당 받으면, 기관 내부의 부서들에서 860-0000 부터 860-9999 까지 10000개의 전화번호를 사용할 수 있다.
  • netid 는 앞의 번호, hostid 는 뒤의 번호로 생각하면 된다.
  • 네트워크에서 8 bit 길이의 netid 를 받은 경우, 2^24 개의 주소를 사용할 수 있는 것이다.
  • 그런데, 2^24 개의 주소를 할당 받아놓고 다 사용하지 못한다면, 주소들은 낭비된다.
    => 이 낭비를 막기 위해 class 들을 나누어, class 마다 다른 길이의 netid 를 가지게 한 것이다.
  • 위 그림에서 볼 수 있듯이, class 마다 netid 의 길이가 달라, block 당 할당받는 주소의 갯수가 다르다.
    => 같은 netid 를 가지는 주소들의 집합을 block 이라고 한다.
  • 사용하고자 하는 주소의 갯수에 맞추어 알맞은 class 의 block 을 할당받으면 된다.
  • 73 은 0과 128 사이에 있으므로, class A 주소임을 알 수 있다.
  • class A 는 1 byte 길이의 netid 를 사용하므로, netid 는 73, block 당 2^24 개의 주소를 사용한다.
  • 시작 주소는 73.0.0.0, 끝 주소는 73.255.255.255 다.
    => 각 block 의 시작/끝 주소는 특수 목적을 위해 남겨둔다.
  • 시작 주소는 network address 로, network 을 식별하는 역할로 사용한다.
  • 끝 주소는 broadcasting 에 사용된다.

Network Addresses

  • network address 는 network 을 식별하는 역할을 한다.
  • 위의 routing table 에서 볼 수 있듯이, 전체 주소가 아닌 network 주소만 명시한다.

Network Mask

  • IP 주소에서 network address 를 추출하기 위한 bit sequence 다.
  • AND 연산에서 1과 연산하면 값이 그대로 나오고, 0과 연산하면 0이 나오는 원리를 이용한다.
  • 추출하고 싶은 bit 의 위치에 1을, 나머지는 0을 채운 것이 network mask 다.
  • class 마다 netid 의 길이가 다르기 때문에, mask 또한 다르다.

Subnetworks

  • 우리가 지금까지 봐온 network 의 구조다.
  • 한 컴퓨터에서 broadcast 를 보내는 경우, 수많은 메시지가 오가게 되고 이는 비효율적이다.
  • 그렇기에 network 의 효율적인 관리를 위해 내부를 subnet 으로 물리적으로 분할한다.
  • network 내부에 존재하는 site router 라는 새로운 개념이 등장했다.
  • site router 는 외부로부터 온 신호를 subnet 들에게 전달하는 역할을 한다.
  • 외부에서 전송을 할 때는 network address 를 보고 site router 까지만 전달하면, 이후의 과정은 site router 가 담당해주는 것이다.
  • network address 로 network 를 식별했듯이, subnet 도 식별해줘야 한다.
  • n 개의 subnet 을 표현하기 위해서는 log n 개의 bit 이 필요하다.
    => 4 개의 subnet 표현 : 00, 01, 10, 11 (2 개의 bit 사용)
  • site router 는 network address 에 추가로, subnet bit 까지 포함한 subnetid 를 알아야 한다.
  • 위 그림처럼 subnet mask 에는 subnet bit 만큼의 1이 추가된다.

Classless Addressing

  • classful addressing 에서는 class 와 netid 의 길이가 어느 정도 고정되어 있기 때문에, 주소 낭비가 완벽히 해결되지 않았다.
  • 이를 해결하기 위해 class 개념을 없앤 classless addressing 이 사용된다.
  • classful 에서는 byte 단위로 끊어 읽었다면, 여기선 bit 단위로 끊어 읽을 수 있게 됐다.
  • 주소를 두 부분으로 나눠 읽는 것은 똑같다. 다만, 두 부분의 명칭이 prefix / suffix 로 다르다.
  • prefix length 는 block 갯수를, suffix length 는 block 내 address 갯수를 명시한다.
  • classful address 와 달리 정형화된 길이가 없기 때문에, 주소의 뒤에 prefix length 를 명시한다.
    => 이를 slash notation 이라고 한다.
  • prefix length = 27, suffix length = 5 다.
  • block 내 주소의 갯수는 32개다.
  • 시작 주소는 167.199.170.64/27 이다. (167.199.170.0010 0000)
    => network mask 와 AND 한 결과
  • 끝 주소는 167.199.170.95/27 이다. (167.199.170.0011 1111)
    => network mask 의 보수와 AND 한 결과
  • 1000 개의 주소가 담긴 block 이 요청된 상황을 가정하자.
  • block 내 주소는 2^n 개이기 때문에 1024 개의 주소가 담긴 block 이 할당된다.
  • 시작 주소로는 하위 10개의 bit 이 0인 주소 중 하나가 선정된다. (ex. 18.14.12.0)
    => prefix 가 같은 1024개의 주소를 확보하기 위해

Special Addresses

  • 어떤 기기를 명시하려는 것 외의 목적으로 사용되는 특별한 주소들이다.

All Zero Address

  • 많은 기기들이 전원을 끄면 새로운 IP 주소를 할당받는 유동 IP 주소를 사용한다.
  • 이 때마다 주소를 할당해주는 서버가 필요하다. 이 역할은 DHCP server 가 담당한다.
  • 컴퓨터가 전원에 연결되면 자신이 새로 할당받을 주소를 알기 위해 DHCP 에 요청을 전송해야 한다.
  • 이때 컴퓨터는 자신의 주소도, DHCP 의 주소도 모른다.
  • 그러므로 src 는 0.0.0.0 인 all zero address 로, dst 는 255.255.255.255인 limited broadcast address 로 표기한다.
  • 일반 broadcast 는 가능한 모든 부분에 요청을 전송한다. 그런데 위의 경우에는 외부의 network 까지 요청을 보낼 필요가 없기에 router 가 packet 을 막아 network 내부에서만 broadcast 가 일어나도록 한다. 이것이 limited broadcast 다.

Loopback Address

  • 127로 시작하는 자기 자신을 가리키는 IP 주소를 말한다. 자기 자신에게 데이터를 보내고 받을 수 있다.
  • 한 컴퓨터 내에서 server 와 client 의 동작을 test 할 수 있는 것이다.
  • 프로그램이 잘못 짜였으면 실제 동작 시 process kill 이 일어나기 때문이 이런 test 는 필수다.

Addresses for Private Networks

  • 사설망은 인터넷 연결 없이 내부 망으로 사용되어, 주소를 마음대로 할당할 수 있다.
  • 다만, 인터넷과 연결이 필요할 떄 사설망 주소인지 구분할 수 없다는 단점이 있다.
  • 이를 위해 사설망을 위한 주소를 따로 할당해 둔다.

Directed Broadcast Address

  • suffix 가 모두 1인 주소다. prefix 와 동일한 network 내의 모든 기기에게 메시지를 전달한다.
  • dst 가 221.45.71.255/24 라면, 221.45.71.0 을 network address 로 가지는 네트워크까지 packet 이 전달된 후 내부에서 broadcast 가 일어난다.
  • limited broadcast 와 차이점은 다음과 같다.
  1. limiited broadcast 는 로컬 네트워크 (자신의 네트워크) 내에서 broadcast
    => router 를 통과하지 않는다.
  2. directed broadcast 는 지정된 네트워크까지 전달된 후 해당 네트워크 내에서 broadcast
    => router 를 통과한다.

Network Address Translation (NAT)

  • 사설망 사용에 필수적인 개념이다.
  • 사설망에 사용되는 주소는 IP 주소와 다르게 유일하지 않으므로, 사설망 내의 기기가 외부의 특정 네트워크에 연결되기 위해서는 주소 변환이 필요하다.
  • 사설망 내의 10.0.0.1 네트워크에서 3345 번 port 를 사용하는 기기가 외부의 128.119.40.186 에 연결 요청을 보내는 상황을 가정하자.
  • 전송된 packet 이 router 를 거치면서 실제 IP 주소로 변환되어야 하기 때문에, router 가 할당받은 주소인 138.76.29.7 로 변환된다.
  • 이 때, 사설망에서 나오는 traffic 이 여러 개인 경우를 대비해, IP 주소와 함께 비어있는 port 를 하나 할당한다. 이 mapping 관계는 NAT router 내에 저장된 NAT translation table 에 저장된다.

Hole Punching

  • NAT 환경에서 P2P 가 실행될 때 사용되는 기법이다.
  • P2P 는 네트워크 참여자들이 서로 직접 연결되어 데이터를 공유하거나 통신할 수 있는 구조를 말한다.
  • 쉽게 말해, hole punching 은 사설 네트워크 뒤에 있는 두 클라이언트가 서로 직접 통신할 수 있게 하는 기술이다.
  • 랑데뷰 서버가 참고되며, 클라이언트들이 사용한 공용 IP 주소와 포트 번호가 저장된다.
  • 여기서 명시된 port 번호를 hole 로 생각하면 된다.
    => 사설망에 있는 두 클라이언트가 서로 직접 통신할 때, NAT를 통과할 수 있는 '구멍'을 만들어 두 클라이언트가 직접 통신할 수 있게 해준다
profile
인하대학교 컴퓨터공학과

0개의 댓글