[CS] 네트워크 - IP 주소(ARP, 홉바이홉 통신, IP 주소 체계)

Janet·2023년 7월 5일
0

CS

목록 보기
4/17

네트워크 - IP 주소


1. ARP(Address Resolution Protocol, 주소 결정 프로토콜)

1-1. ARP의 개념

  • ARP란 IP 주소를 MAC 주소(물리적 네트워크 주소)와 매칭/대응 시키기 위한 프로토콜이다.
    • IP 주소(Internet Protocol Address): 인터넷에 연결되어 있는 모든 호스트나 라우터 장비의 인터페이스에 할당된 논리적인 가상의 주소이다.
    • MAC 주소(Media Access Control Address): 물리적 네트워크 주소라고도 하며, 이더넷 또는 데이터 링크 계층에서 사용하는 NIC(Network Interface Card)에 할당된 고유 식별 번호(주소)이다.
  • 컴퓨터와 컴퓨터 간의 통신은 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신한다.
  • ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환한다. 이와 반대로 RARP(Reverse ARP)를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환하기도 한다.

1-2. ARP의 주소를 찾는 과정

  1. 송신지가 목적지 IP 주소를 지정해 패킷을 송신하는데, ARP request 메시지를 생성하여 Broadcast한다.
  2. Network Switch 장비에서 목적지 단말로 ARP request 메세지를 전송한다.
  3. 목적지 IP 주소에 해당하는 단말은 ARP reply를 생성하고 Unicast하여 자신의 MAC 주소를 반환한다.
  4. 송신지에서 ARP reply 메시지를 받아, 목적지 MAC 주소를 확인하고 ARP table에 업데이트한다.
  • cf. 용어 정리
    • 브로드캐스트(broadcast): 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에게 전송되는 방식
    • 유니캐스트(unicast): 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식
    • ARP table: IP 주소와 MAC 주소를 1:1 대응하여 정리한 테이블을 말한다.

2. 홉바이홉(Hop-by-hop) 통신

2-1. 홉바이홉 통신의 개념

  • 홉바이홉 통신이란 IP 주소를 통해 통신하는 과정을 말한다.
  • 홉(hop)이란 사전적 의미로는 '한 발로 깡충깡충 뛰다', '휙휙 바꾸다' 등의 뜻을 가지는데, 이는 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현한 것이다.
  • 수많은 서브 네트워크 속에서 라우터에 있는 라우팅 테이블의 IP를 기반으로 패킷을 전달하고 또 전달해나가며 라우팅을 수행하며 최종 목적지까지 패킷을 전달한다.
  • 즉, 통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속해서 이동하는 라우팅 과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신을 말한다.
    • cf. 라우팅(routing): IP 주소를 찾아가는 과정을 말한다.

2-2. 라우팅 테이블(Routing table)

  • 라우팅 테이블은 송신지에서 수신지까지 도달하기 위해 사용되며, 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트를 말한다.
  • 라우팅 테이블에는 게이트웨이와 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보를 갖고 있다.

2-3. 게이트웨이(Gateway)

  • 게이트웨이는 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어이다.
  • 사용자는 인터넷에 접속하기 위해 수많은 톨게이트인 게이트웨이를 거쳐야 하며 게이트웨이는 서로 다른 네트워크상의 통신 프로토콜을 변환해주는 역할을 하기도 한다.
  • 게이트웨이를 확인하는 방법은 라우팅 테이블을 통해 볼 수 있으며 라우팅 테이블은 윈도우 명령 프롬프트에서 $ netstat -r 명령어를 실행하여 확인할 수 있다.
    • 해당 프롬프트에서 'IPv4 경로 테이블', 'IPv6 경로 테이블'이 바로 라우팅 테이블이며, 해당 테이블들 내에 게이트웨이 및 인터페이스 등을 확인할 수 있다.

3. IP 주소 체계

  • IP 주소는 IPv4와 IPv6로 나뉜다.
  • IPv4는 32비트를 8비트 단위로 점을 찍어 표기하며, 123.45.67.89 같은 방식으로 IP 주소를 나타낸다.
  • IPv6는 64비트를 16비트 단위로 점을 찍어 표기하며, 2001:db8:ff00:42:8329 같은 방식으로 IP 주소를 나타낸다.

3-1. 클래스 기반 할당 방식(Classful network addressing)

  • 클래스 기반 할당 방식의 개념
    • IP 주소의 체계는 처음에는 A, B, C, D, E 다섯 개의 클래스로 구분하는 클래스 기반 할당 방식을 썼다. 앞에 있는 부분을 네트워크 주소, 그 뒤에 있는 부분을 컴퓨터에 부여하는 주소인 호스트 주소로 놓아서 사용한다.
    • 클래스 A, B, C는 일대일 통신으로 사용된다.
    • 클래스 D는 멀티캐스트 통신, 클래스 E는 앞으로 사용할 예비용으로 쓰는 방식이다.
  • 각 클래스별 사용 가능한 IP 주소의 수
    • 클래스 A는 네트워크가 가질 수 있는 호스트 수가 약 1,600만 개로 A,B,C클래스 중 가장 많다. 클래스 B는 약 6만 5천개, 클래스 C는 약 250개의 호스트 주소를 가질 수 있다.
  • 각 클래스별 IP 주소의 구분
    • 각 클래스 IP 주소의 범위는 첫 번째 옥텟(octet)의 구분비트를 보면 구별이 가능하다.
    • 클래스 A의 경우 구분비트가 0, 클래스 B는 10, 클래스 C는 110이다.
      • cf. 옥텟(octet): 8개의 비트가 한데 모인 것을 말한다.
      • cf. 구분비트: 맨 왼쪽에 있는 비트를 말한다.
  • 각 클래스의 IP 주소의 범위 (2진수 / 10진수)

    클래스 B

    • 00000000.00000000.00000000.00000000 ~ 01111111.11111111.11111111.11111111
    • 0.0.0.0 ~ 127.255.255.255

    클래스 B

    • 10000000.00000000.00000000.00000000 ~ 10111111.11111111.11111111.11111111
    • 128.0.0.0 ~ 191.255.255.255

    클래스 C

    • 11000000.00000000.00000000.00000000 ~ 11011111.11111111.11111111.11111111
    • 192.0.0.0 ~ 223.255.255.255

    클래스 D

    • 224.0.0.0 ~ 239.255.255.255

    클래스 E

    • 240.0.0.0 ~ 254.255.255.254
  • 클래스 기반 할당 방식 구체적으로 어떻게 할당될까?
    • 만약, 클래스 A로 12.0.0.0이라는 네트워크를 부여 받았다면?
      • 첫 번째 주소인 12.0.0.0는 네트워크 구별 주소이다.
      • 12.0.0.1 ~ 12.255.255.254까지가 컴퓨터에 부여 가능한 호스트 주소이다.
      • 마지막 주소인 12.255.255.255는 브로드캐스트용 주소이다.
  • 클래스 기반 할당 방식의 단점: 사용하는 주소보다 버리는 주소가 많다는 것이다. IP 주소는 급격히 소진되고 낭비되는 문제가 있었다.
  • 클래스 기반 할당 방식을 개선한 DHCP, IPv6, NAT, CIDR 등의 방식이 등장했다.

3-2. DHCP(Dynamic Host Configuration Protocol)

  • DHCP(동적 호스트 구성 프로토콜)은 IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜이다.
  • 네트워크 장치의 IP 주소를 수동으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소를 할당할 수 있다.
  • 많은 라우터와 게이트웨이 장비에 DHCP 기능이 있으며 이를 통해 대부분의 가정용 네트워크에서 IP 주소를 할당한다.

3-3. NAT(Network Address Translation)

  • NAT(네트워크 주소 변환)이란?
    • NAT은 패킷이 라우팅 장비를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법이다.
    • IPv4 주소 체계만으로는 많은 주소들을 모두 감당하지 못하는 단점이 있는데, 이를 해결하기 위해 NAT으로 공인 IP와 사설 IP로 나눠서 많은 주소를 처리한다.
    • NAT을 가능하게 하는 소프트웨어는 ICS, RRAS, Netfilter 등이 있다.
  • NAT을 사용하는 목적: 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다. 예를 들어 인터넷 회선 하나를 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용할 수 있는데, 이것이 가능한 이유는 인터넷 공유기에 NAT 기능이 탑재되어 있기 때문이다.
  • 위 그림처럼, 내부적으로는 사설(private) IP인 192.168.0.x를 기반으로 PC 1, 2, 3이 각각의 IP를 가지고 있다.
  • 그리고 Router의 NAT을 통해 하나의 공인(public) IP인 150.65.0.1으로 외부 인터넷에 요청할 수 있다.
  • 따라서 하나의 공인 IP를 통해 각각의 다른 IP를 가지는 것처럼 사용 가능하다. 이와 같이 NAT을 통해 사설 IP와 공인 IP를 양방향적으로 변환 할 수 있다.
  • NAT을 이용한 보안: 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기에 내부 네트워크에 대한 어느 정도의 보안이 가능해진다.
  • NAT의 단점: NAT은 여러 명이 동시에 인터넷 접속하게 되므로 실제로 접속하는 호스트 숫자에 따라서 접속 속도가 느려질 수 있다.

cf. 특수 용도 주소

주소 대역용도
0.0.0.0/8자체 네트워크
10.0.0.0/8사설 네트워크
127.0.0.0/8루프백(loopback) 즉, 자기자신
169.254.0.0/16링크 로컬(link local)
172.16.0.0/12사설 네트워크
192.0.2.0/24예제 등 문서에서 사용
192.88.99.0/246to4 릴레이 애니캐스트
192.168.0.0/16사설 네트워크
198.18.0.0/15네트워크 장비 벤치마킹 테스트
224.0.0.0/4멀티캐스트
240.0.0.0/4미래 사용 용도로 예약

Reference.

profile
😸

0개의 댓글