오래 못 할 짓 하지 않기

[ 네트워크 ] 18. Network layer : IP Addressing / NAT(Network Address Translation) 본문

3학년 2학기/네트워크 (Network)

[ 네트워크 ] 18. Network layer : IP Addressing / NAT(Network Address Translation)

쫑알bot 2024. 11. 18. 14:08
728x90

IP Addressing

- IP Address

(IPv4 기준)  8bits * 4(IPv4) = 32bits 로 이루어져 있고

이를 이용하여 각각의 Host나 Interface를 identify한다.

 

- Interface

Router/Host 간의 직접적인 연결

* 주로 하나의 Router는 주고 받기 위해 여러 Interface에 연결되어 있다.


- Subnet

= Router가 끼어드는 거 없이 Physical 하게 서로 연결되어있는 Device Interface.

 

 

- Subnet 찾는 법 : 위 그림과 같이 파란색 섬을 만들고,

                           Router를 지웠을 때(Detach) 몇 개의 섬이 나오는가

 

 

예제

 


Classless InterDomain Routing
(CIDR)

주소 할당 방식 중 하나다.

a.b.c.d/x 로 나타내는데 이는 여기에선 "시작부터 x비트만큼은 subnet address 부분이다" 라는 걸 알려준다 

 

아래 예시로 본다면 200.23.16.0/23 일 때

시작부터 23비트만큼은 subnet의 주소고, 그 뒤에가 본인의 주소임을 알 수 있다.

 

예제

 

subnet은 223.1.17/24 주소 체계를 가지고 있다.

- Subnet 1은 62개의 Interface를

- Subnet 2은 106개의 Interface를

- Subnet 3은 15개의 Interface를

 

할당받으려고 한다.

 

풀이:

더보기

[ Subnet 2 ]

얘가 가장 크니까 이거 먼저 지원해줘보자
106개의 Interface → 나타내려면 2^7 = 7bits가 필요함.

그럼 그냥 남더라도 2^7개 만큼 Subnet한테 줘버림


223.1.17.0 - 223.1.17.127

00000000 ~ 0111 1111 --> 223.1.17.0/25  

 

그럼 앞 24bits는 같고, 그 뒤에 1비트까지 0으로 같으므로 25bits가 subnet address 부분이라고 할 수 있다.

 

 

[ Subnet 1 ]

62개의 Interface → 나타내려면 2^6 = 6bits가 필요함.

223.1.17.128 - 223.1.17.191    (191-128 = 63+1)
lower 6bits만 다름 = 10000000 ~ 1011 1111 -> 223.1.17.128/26

 

그럼 앞 24bits는 같고, 그 뒤에 2개 비트까지 10으로 같으므로 25bits가 subnet address 부분이라고 할 수 있다.

 

 

[ Subnet 3 ]

15개의 Interface → 나타내려면 2^4 = 4bits가 필요함.

223.1.17.192 - 223.1.17.207

lower 6bits만 Variation 을 주면 된다.
1100 0000 ~ 1100 1111 --> 223.1.17.192/28

 

앞 24개bits는 같고, 그 뒤에 4개 비트까지 1100으로 같으므로 28bits가 같다.

 

여기까지 오면 2개의 질문을 풀어야 한다.

 

Q1. Host는 Network에서 어떻게 IP주소를 얻을 수 있는가? ▶ DHCP

Q2. Network는 자신의 IP주소를 어떻게 받는가?                 ▶ Provider ISP's 가 할당받은 주소 안에서 여유 공간을 받는다.

 


Dynamic Host Configuration Protocol
(DHCP) 

: Host가 Network에 Join할 때 Network Server로부터 IP를 할당받는 것

 

* Addresses 를 reuse할 수도 있다.

 

- 통신 과정

 

1) Host가 Broadcast를 통해 DHCP Discover Message를 보낸다.

2) DHCP Server가 DHCP Offers 로 Response한다.

3) Host가 IP Address를 요청한다. = DHCP Request

4) DHCP Server가 Address를 (할당해)준다. = DHCP ACK

 

 

1. [ DHCP Discover  도착한 Broadcast방식을 사용하여 67번 Port로 보낸다. 

    → 여기에 DHCP Server 있음?

    → 응답 : ㅇㅇ 있음

 

2.  [ DHCP Offer ] 68번 Port로 전달해준다.

    yiadder = 223.1.2.4

 

3.  [ DHCP Request ]  Broadcast 방식으로 Offer로 전달받은 IP를 요청한다

    → 나 그럼 그거 쓸게

    → OK 보내줌

 

4.  [ DHCP ACK ]  Client가 요청한 IP를 제공해준다.

 

이렇게 Client가 ACK를 받으면 연결이 끊기고, 정해진 기간동안 할당된 IP를 사용할 수 있다.

 

 

DHCP는 IP할당 주소 외에도 추가적인 정보를 더 줄 수도 있다.

- Client가 다음으로 router의 주소 = Address of First-Hop router

- DNS server 이름/IP

- Network mask

 

- DHCP Request Message가 UDP , IP , Eternet 에서 Encapsulation된다.

- DHCP Server는 DHCP에 [ Client IP, IP addr of first-hop router for clnt , Name&IP addr addr of DNS ]

 


Q2. Network는 자신의 IP주소를 어떻게 받는가?                 ▶ Provider ISP's 가 할당받은 주소 안에서 여유 공간을 받는다.

 

ISP : 내가 20비트까진 잘 받아왔어!! 그 밑에는 너네 상황에 맞게 내가 나눠줄게

 

만약에 ISP가 8Block에게 주소를 할당해줘야한다고 하자

8개의 Block을 나누기 위해선 3bits가 필요하다.

 

 

 


Hierarchical Addressing : Route Aggregation

 

만약 아래와 같이 잘 나눠져 있는 곳에서

Organization 1을 다른 곳으로 옮기려고 한다.

 

이렇게 바꿨다고 생각해보자.

그럼 ISPs-R-US 쪽으로 들어갈 때 얘를 찾으려면 추가적으로 더 필터를 해줘야 한다.

이 때 Longest-prefix를 이용하여 해당 IP에 접근한다.

 

 

 

 

 

 

 

 


 

Network Address Translation
(NAT) 

 

호스트가 Subnet으로부터 IP를 할당받을 때, 네트워크가 너무 커져버리면 할당 가능한 범위를 초과할 수 있다.

이런 경우를 막기 위하여 Network Address Translation  방식으로 주소를 할당한다.

 

라우터 작동 방식을 보자.

 

- Internet을 통해 라우터에 들어오거나 나올 땐 Public IP를 사용한다. (Port Number는 각각 다르다)

- 라우터 안에서 Local Network를 사용할 땐, Private IP를 사용한다.

 

그럼 라우터를 통해 Server와 Local Network에 있는 Host가 어떻게 소통하는가?

ex) 138.76.29.7 ↔ 10.0.0.1 의 소통은..?

 

 

1. Host가 128.119.40.186 주소로 80 Port를 통해 Datagram을 보낸다.             > src = 10.0.0.1

2. NAT Router가 Datgram을 전달하면서 Src 주소를 본인들의 집주소로 바꾼다. > src = 138.76.29.7

    그렇게 하고, NAT Translation Table을 업데이트 한다.

 

3. Datagram을 수신한 측에서 다시 보낸다. dest는 사실 10.0.0.1이지만, 그런 거 상관없이 이걸 보낸 집으로 다시 보낸다.

   dest = 138.76.29.7  / Port= 5001

 

4.  NAT Router가 받은 정보를 가지고 Table과 비교하여 올바른 Host에게 보내준다.

    dest = 10.0.0.1

 

 

- 장점

 

1) ISP Provider 에게는 1개의 IP주소만 필요하다. 

    ( 그 안에서 Local하게 나눠버리니까 ISP에게만 할당해도 훨씬 더 많은 Host에게 Service가 가능하다)

 

2) Host의 address를 바꿀 땐 Outside Network에게 알리지 않아도 된다

 

3) Local Device가 직접적으로 외부에서 주소로 매핑되지 않기 때문에 한 단계 안전하다.

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

(출처)

한동대학교 컴퓨터 네트워크