오래 못 할 짓 하지 않기
[ 네트워크 ] 18. Network layer : IP Addressing / NAT(Network Address Translation) 본문
[ 네트워크 ] 18. Network layer : IP Addressing / NAT(Network Address Translation)
쫑알bot 2024. 11. 18. 14:08IP 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가 직접적으로 외부에서 주소로 매핑되지 않기 때문에 한 단계 안전하다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(출처)
한동대학교 컴퓨터 네트워크
'3학년 2학기 > 네트워크 (Network)' 카테고리의 다른 글
[ 네트워크 ] 20. Network layer (Control Plane) : Routing Protocol / Algorithm (0) | 2024.11.25 |
---|---|
[ 네트워크 ] 19. Network layer : IPv6 / Routing Protocol (0) | 2024.11.21 |
[ 네트워크 ] 17. Network layer : Router 내부 동작 (0) | 2024.11.14 |
[ 네트워크 ] 중간 2 준비 ( Socket Programming ) (0) | 2024.11.10 |
[ 네트워크 ] 16. Network layer : Data Plane (0) | 2024.11.07 |