티스토리 뷰

ARP

  • ARP는 3계층의 프로토콜 (정확히 하면 2.5계층 프로토콜, 연관이 없는 계층 사이에서 징검다리 역활을 해주는 프로토콜)
  • 데이터가 전달되어야 할 목적지 장비의 3계층 주소(IP)를 가지고 있는 중계 장비가 2계층의 서비스를 이용하려면 해당 목적지의 2계층 주소를 알아야 가능하다.
  • 이때 2계층 주소를 알아내는 것이 ARP의 주요 기능이다.
  • 2계층 주소를 이용해서 3계층 주소를 알아내는 것을 RARP라고 한다.

 

Q. 3계층 주소와 2계층 주소를 다르게 한 이유는?

Q. 하나의 주소로 두 계층의 기능을 모두 수행하지 않는 이유는?

 

A. 각 계층별로 맡은 임무에 따라 주소의 역활이 다르기 때문이다.

  • 2계층은 좁은 지역 (수백 m) 내에서 상대적으로 한정적인 수의 장비 간 데이터 전달이 목적
  • 3계층은 넓은 지역 (국가 간), 광범위의 인터넷의 임의의 From 지점, To 지점까지 최적의 경로를 찾고 수많은 라우터를 거쳐서 데이터를 전달하는 것이 목적
  • 3계층의 주소는 해당 주소값을 가지고 특정한 위치를 추측할 수 있다. 또한 MSB bit가 같은 주소를 가지는 주소끼리는 물리적으로 가까이 위치하게된다.
  • 반면 2계층 주소는 48bit의 MAC주소 중 한 비트만 달라져도 지구 반대편에 위치할 수 있다.

IP 배정 : IANA -> 국가 기관 -> ISP

 


2계층 주소 MAC address

Data Link LayerLogical Link Control (LLC)Medium Access Control (MAC) 두계층으로 나눌 수 있다. 여기서 MAC 주소가 생겼다. MAC 주소는 네트워크에 접속하는 모든 장비가 통신을 위해 사용하는 물리적인 주소이다.

 

MAC 주소 체계

[00:00:00]:[00:00:00]

    OUI        |      UAA

48bit (6byte) 구조이며, 16진수 12자리로 표현한다.

  • 앞 3byte는 OUI로 IEEE가 제조 회사에 할당한 값이며 뒤 3byte는 UAA로 제조업체별 일련 번호이다.

 

2계층에서 Frame 전달

  • 기본적으로 LAN은 bus topology를 상정
  • MAC Address Table에 없는 주소라면 하나의 Host가 보내는 frame은 모든 다른 Host에 전달된다. (Broadcast)
  • 전달 받은 Host는 Destination Address (DA)를 보고 폐기하거나 올려보낸다.

 

2계층의 Multicast, Unicast, Broadcast

  • MAC 주소의 첫번째 byte의 LSB는 Multicast, Unicast를 구분하는 용도로 사용된다.
    • DA의 첫 byte의 마지막 bit 1 : 멀티캐스트 (1 : N 전송, 다수의 특정 노드)
    • DA의 첫 byte의 마지막 bit 0 : 유니캐스트 (1 : 1 전송)
  • DA의 모든 비트가 1인 경우 : 브로드캐스트 (1 : 그룹 내 모든 노드)

Q. 4A:30:10:21:1O:1A 인 경우 캐스트 방식은?

A. 4A중 A를 확인 -> 10 -> 1010 -> 0이므로 유니캐스트 (짝수면 무조건 유니캐스트, 홀수면 확인)

 


3계층 주소 IP address

IPv4 주소는 호스트나 장비의 인터페이스에 할당된 32bit의 주소이다. 하나의 IP주소는 같은시간대에 다른 인터페이스에 할당될 수 없다 .

즉, 글로벌적으로 유일한데 이러한 특성을 Global uniqueness (전역 유일성)라고 한다.

 

하지만 특정 인터페이스가 항상 같은 주소를 가지지는 않는다. IP주소가 일정 기간 동안 특정 인터페이스에 할당 되었다가 다른 인터페이스에 할당 되기도 한다. 이를 Dynamic assignment라고 한다.

 

10진수로 주로 표현하며 8bit씩 4개의 옥탯으로 나뉜다. 하나의 옥택의 표현 가능 범위는 0~255 (2^8)이다.

 

클래스

IP 주소 2진 표기법의 첫 4bit를 이용해서 전체 주소 공간을 나눈다.

 

A 클래스

  • 전체주소의 절반을 표현한다.
  • 0으로 시작하는 주소, 0 to 127
  • prefix가 8bit, suffix가 24bit

B 클래스

  • 1로 시작하는 주소 중 절반, 전체 주소의 25%
  • 11로 시작하는 주소, 128 to 191
  • prefix가 16bit, suffix가 16bit

C 클래스

  • 11로 시작하는 주소 중 절반, 전체 주소의 12.5%
  • 110으로 시작하는 주소, 192 to 223
  • prefix가 24bit, suffix가 8bit

D 클래스

  • 111로 시작하는 주소 중 절반, 전체 주소의 6.25%
  • 1110으로 시작하는 주소, 224 to 239
  • 멀티캐스트 용도로 사용 (Multicast)

E 클래스

  • 111로 시작하는 주소 중 절반, 전체 주소의 6.25%
  • 1111로 시작하는 주소, 240 to 255
  • 예약되어서 사용되고 있지 않는 주소 (Reserved for futures)

 

이러한 클래스 기반으로 네트워크를 분할하는 것은 블록을 나누는 방식이 너무 비효율적인데, 과거에 사용했던 개념으로 현재는 사용하지 않는다. 현재는 1비트 단위로 네트워크를 상세히 분할하는 방법을 사용한다.

 

서브네팅

A, B, C 클래스의 주소를 이루는 32bit를 netid와 hostid로 나누어 지칭하기도 한다. 이때 netid를 도출하기 위해 IP 주소에 AND 연산을 하는 비트를 mask라고 한다. 서브네팅은 mask를 이용해서 IP 네트워크를 더 쪼개서 사용하는 것이다.

 

A클래스의 mask : 11111111 00000000 00000000 00000000 == 255:0.0.0 == /8

B클래스의 mask : /16

C클래스의 mask : /24

 

이러한 mask를 사용해서 서브네팅을 통해 클래스 기반 대신 가변적인 netid를 사용하게 됐다. -> Class의 구분이 사라졌다.

  • prefix의 길이로 block의 크기를 유추
  • 주소 블록을 정의하기 위해 임의의 주소를 마스크와 함께 명시
  • EX) 23.14.67.92/25

 

12.24.76.8 /8

net id : 12

host id : 24.76.8

첫 주소 = 12.0.0.0 / 8 (host id가 모두 0)

마지막 주소 = 12.255.255.255 /8 (host id가 모두 1)

 

23.14.67.92 /12

net id : 23.0 == 0001 0111 0000

host id : 12.67.92 /12

첫 주소 = 23.0.0.0 / 12

마지막 주소 = 23.15.255.255 /12

 

220.8.24.255 / 25

net id : 220.8.24.127

host id : 128

첫 주소 = 220.8.24.127 /25

마지막 주소 = 220.8.24.255 /25

 

여기서 첫 주소는 network block 전체를 가리키는 주소로 사용되며, 마지막 주소는 network 내 broadcast를 위한 주소이다. 따라서 마지막 주소로 보내면 해당 블럭 내 모든 host에 보내게 된다. (해당 두 주소는 host에 할당하지 않는다)

 


공인 IP, 사설 IP & NAT

인터넷에 접속하려면 필수적으로 IP주소가 있어야하고 이 주소는 전역 유일성을 지녀야한다. 하지만 인터넷에 연결하지 않고 개인적으로 네트워크를 구성한다면 공인 IP 주소 없이도 네트워크를 구축할 수 있다.

 

이러한 IP 주소를 사설 IP라고 한다. 사설 IP로 사용 가능한 주소 또한 IANA에서 정해 주었다.

  • 10.0.0.0 /8
  • 172.16.0.0 /12
  • 192.168.0.0 /16

 

해당 사설 IP주소로는 인터넷에 접속하지 못하지만 개인적인 네트워크를 구축할 수 있다. 이때 NAT (Network Address Transalation)을 통해 사설 IP 주소를 이용해서 인터넷에 접속할 수 있다.

사설 IP 주소를 할당 받은 기관 내 호스트가 외부의 인터넷에 접속하기 위해 사용하는 기술이다. 기관 내 호스트들이 외부로 나가기 위한 길목에서 NAT을 통해 사설 IP 주소와 소수의 공인 IP 주소의 변환이 이뤄진다. 이를 통해 외부 인터넷에서는 기관 내 호스트들이 동일한 공인 IP로 통신을 하고 이후 기관 내 호스트를 사설 IP 주소로 구별해서 전달해 주게 된다.

 

이러한 NAT의 역활은 라우터가 담당한다.

 

NAT의 사설 IP주소와 공인 IP 주소 변환

그렇다면 NAT은 어떻게 그룹 내 Host들을 구분할 수 있을까? 바로 포트번호를 통해 구별하게 된다. 내부 망에서 출발지 : [사설IP, port] 구조로 라우터에게 가게되고, 라우터는 translation table에 해당 출발지에 해당하는 포트번호를 매핑해서 [공인 IP, port]로 인터넷에서 요청이 간다. 응답이 오게 되면 포트번호를 NAT 테이블과 비교해서 맞는 사설 IP에 해당 응답을 전달해준다.

 

반응형
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday