[Computer Network] IP Address
📝IP Address
"IP 주소는 네트워크에서 호스트와 라우터의 각 인터페이스마다 할당되어 있는 식별 번호이다."
📌 설명
- IP는 네트워크에서 호스트와 라우터의 각 인터페이스마다 할당되어 있는 식별 번호이다.
- 인터페이스 : 호스트와 물리 링크 사이의 경계
- IP주소는 네트워크 주소와 호스트 주소로 나뉜다.
- IP에는 두 가지 버전이 존재한다.
IPv4
- IPv4 주소는 32비트 이진수로 구성된다.
11000001 00100000 11011000 00001001
- 일반적으로 다음과 같이 8비트 단위로 끊어서 4부분으로
10진수
와.
으로 표기한다.193.32.216.9
IPv6
-
IPv6 주소는 128비트 이진수로 구성된다.
-
다음과 같이 16비트 단위로 끊어서 8부분으로
16진수
와:
으로 표기한다.2004:2ba8:13aa:0011:0000:0000:0000:abaa
📌 IPv4 데이터 그램 단편화(MTU)
- 링크 계층 프레임이 전달할 수 있는 최대 데이터 양을 MTU(Maximum Transmission Unit)라고 한다.
-
네트워크의 각 링크는 다른 링크 계층 프로토콜을 사용할 수 있고, 각 프로토콜마다 MTU는 다를 수 있다.
-
예를들어 4000바이트(IP헤더 20바이트 + 페이로드 3,980 바이트)인 데이터그램이 라우터에 도착하고 이 데이터그램은 MTU가 1,500바이트인 링크로 전달되어야 하는 상황을 가정해보자.
-
이때 3,980 바이트인 원본 데이터그램을 3개의 분리된 조각 (fragment, 단편)으로 나눠서 보내야한다.
- 분리된 조각은 데이터그램이다.
-
목적지에서는 3개의 데이터그램을 다시 재조립해서 원본 데이터그램으로 만들어야한다.
-
단편화와 재결합을 위해 IP 헤더에 아래와 같은 옵션이 존재한다.
- 식별자(ID) : 하나의 데이터그램에서 단편화된 데이터그램들은 같은 식별자를 갖는다.
- 플래그(flag) : 어디까지가 단편화된 데이터그램인지 구분하기 위해 맨 마지막 단편화 데이터그램의 플래그는 0으로 다른 모든 조각의 플래그는 1로 설정된다.
- 단편화 오프셋 : 순서대로 올바르게 재결합하기 위해 데이터그램내 조각의 위치를 명시하는 용도다. byte 단위다.
-
다시 예제를 살펴보자 (오른쪽 그림 참고)
-
크기가 4000바이트인 데이터그램을 쪼개야한다. 단순히 1500 바이트씩 쪼개는게 아니라 각 조각의 IP 헤더 크기 20바이트도 고려해야한다.
-
페이로드인 3980바이트를 1480바이트씩으로 쪼개고 각 조각마다 20바이트의 헤더를 붙여야한다.
단위 : byte 원본 데이터그램 : 4000(헤더 20 + 페이로드 3980) MTU : 1500 3980 = 1480 + 1480 + 1020 첫 번째 조각 : 20(헤더) + 1480(페이로드) // ID : x, fragflag : 1, offset : 0(byte) // 첫 조각이므로 offset는 0이다. 두 번째 조각 : 20(헤더) + 1480(페이로드) // ID : x, fragflag : 1, offset : 185(byte) // 두 번째 조각이므로 offset은 185(1480/8)다. 세 번째 조각 : 20(헤더) + 1020(페이로드) // ID : x, fragflag : 0, offset : 370(byte) // 세 번째 조각이므로 offset은 370((1480+1480)/8)이다.
-
📌 Subnet & Subnet Mask
- 서브넷은 네트워크의 부분망이다. 위 그림에서 파란색으로 표시된 3개의 서브넷을 볼 수 있다.
- 각 서브넷의 각 IP주소의 왼쪽 24비트는 동일함을 볼 수 있다.
- 위 그림에서 서브넷 마스크는 24이다. 이는 32비트 주소의 왼쪽 24비트가 서브넷 주소라는 것을 가리킨다.
- 즉 왼쪽 24비트는 네트워크 주소 나머지 8비트는 호스트 주소이다.
- 각 서브넷에서 2^8 - 2 개의 호스트 IP가 존재할 수 있음을 알 수 있다.
- 왜 2의 8 제곱에서 2를 뺄까? 바로 브로드 캐스트 주소와 네트워크 주소로 사용되기 때문이다.
- 호스트 주소
11111111
는 브로드 캐스트 주소로 사용된다. (브로드 캐스트 주소는 255.255.255.255 이다. 호스트가 브로드캐스트 주소로 패킷을 보내면, 같은 서브넷에 존재하는 모든 호스트들에게 패킷이 전송된다.) - 호스트 주소
00000000
는 네트워크 주소로 사용된다.
📌 클래스 주소체계
- IP Class 는 A, B, C, D, E Class로 나누어 IP의 네트워크 주소와 호스트 주소를 구분한다.
- 파랑색은 네트워크 주소, 초록색은 호스트 주소다.
A Class
- 처음 8비트(1바이트)가 네트워크 주소, 나머지 24비트(3바이트)가 호스트 주소로 사용된다.
- A 클래스는 0으로 시작한다.
- 0xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
- 최대 네트워크 주소 개수 : 128개 (
0 ~ 2^7
) - 최대 호스트 주소 개수 : 16,777,214개 (
2^24 - 2
)
B Class
- 처음 16비트(2바이트)가 네트워크 주소, 나머지 16비트(2바이트)가 호스트 주소로 사용된다.
- B 클래스는 10으로 시작한다.
- 10xx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
- 최대 네트워크 주소 개수 : 16,384개 (
2^14
) - 최대 호스트 주소 개수 : 65,534개 (
2^16 - 2
)
C Class
- 처음 24비트(3바이트)가 네트워크 주소, 나머지 8비트(1바이트)가 호스트 주소로 사용된다.
- C클래스는 110으로 시작한다.
- 110x xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
- 최대 네트워크 주소 개수 : 2,097,152개 (
2^21
) - 최대 호스트 주소 개수 : 254개 (
2^8 - 2
)
D Class, E Class
-
D Class : 멀티캐스트용
- E Class : 미래에 사용하기 위해 남겨둠
- 실질적으로 D와 E Class는 사용되는 경우가 거의 없다.
📌 CIDR(Classless Interdomain Routing)
-
CIDR는 클래스 주소보다 더 유연하게 IP 주소를 나눠주는 라우팅 기법이다.
-
IPv4 주소를 보다 효율적으로 사용하게 해준다.
-
32 비트 IP 주소를 아래와 같이 두 부분으로 나눈다.
- a.b.c.d / x
- x는 처음 나오는 주소 부분의 비트 수를 의미한다. 이를 해당 주소의 prefix라고 한다.
-
그렇다. x는 네트워크 주소부다.
📌 DHCP(Dynamic Host Configuration Protocol, DHCP)
-
호스트가 IP주소를 할당받는 방법은 두 가지다.
- 수동으로 IP주소를 직접 할당한다.
- DHCP을 사용하여 동적으로 할당받는다. (일반적)
-
DHCP는 클라이언트-서버 프로토콜이다.
-
DHCP는 새로운 호스트가 도착하면 IP를 할당해준다.
-
위 그림을 참고하며 DHCP 동작과정을 살펴보자.
- DHCP 서버 발견
- 새롭게 네트워크에 도착한 호스트는 DHCP에게 발견 메세지를 보낸다.
- 호스트는 자신이 접속될 네트워크의 IP주소를 알지 못하고, 해당 네트워크의 DHCP 주소도 모른다.
- 따라서 브로드캐스팅을 통해 DHCP에게 메세지를 보낸다.
- DHCP 서버 제공
- DHCP 발견 메세지를 받은 DHCP 서버는 DHCP 제공 메세지를 호스트로 응답한다.
- DHCP 요청
- 호스트는 DHCP 제공 메세지에 대해 DHCP 요청 메세지로 응답한다.
- DHCP ACK
- 서버는 DHCP 요청 메세지에 대해 요청된 파라미터를 확인하는 DHCP ACK 메세지로 응답한다.
- DHCP 서버 발견
📌사설 IP
- 공인 IP 주소가 공개형이라면 사설 IP 주소는 폐쇄형이다.
- 즉, 사설 IP주소는 외부에 공개되지 않아 외부에서 검색, 접근이 불가능하다.
- 사실 IP 주소는 인터넷 유무선 공유기를 사용할 때 흔히 접하게 된다.
- 인터넷 유무선 공유기의 IP주소를 공유하여 여러대의 컴퓨터가 인터넷에 접속되게 하려면 사설 IP 주소가 필요하기 때문이다.
- 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용해서 인터넷에 접속하기 위해 사용한다.
- 사설 IP는 사설망 안에서만 의미 있는 주소이다.
- 사설 IP 주소는 주소 대역이 3개로 고정되어 있다.
- 192.168.xxx.xxx
- 172.10.xxx.xxx
- 10.xxx.xxx.xxx
- 예를 들어 인터넷 공유기 IP 주소가 100.100.100.100 이고, 공유기에 연결된 컴퓨터에는 192.168.0.10 등과 같은 사설 IP 주소가 할당된다.
📌 사설 IP와 네트워크 주소 변환(NAT)
네트워크 주소 변환(NAT)
-
NAT는 공인 IP와 사설 IP를 변환해주는 기술이다.
- 위 그림을 보자 IP주소 138.76.29.7을 갖는 라우터(또는 공유기)에 3대의 컴퓨터가 속해있다.
-
10.0.0.4 라는 사설 IP 주소를 갖는 서브넷에 10.0.0.1, 10.0.0.2, 10.0.0.3 3개의 사설 IP주소를 갖고있는 컴퓨터가 속해있다.
-
그림을 보며 단계적으로 살펴보자. 사설 IP 10.0.0.1를 갖는 호스트가 IP 128.119.40.186인 웹 서버(포트80)에게 웹 페이지를 요청한다고 가정하자.
- 호스트는 자신의 IP와 출발지 포트번호 3345와 함께 패킷을 전송한다.
- NAT 라우터는 패킷을 받아서 패킷에 대한 출발지 포트번호 5001를 생성한다. 인터넷으로 연결되는 라우터 인터페이스 공인 IP 138.76.29.7으로 출발지 IP 주소를 변경하고 새롭게 생성한 출발지 포트번호 5001로 포트번호를 바꾼다.
- 웹 서버는 NAT 라우터 IP 138.76.29.7 와 5001 포트번호에 대해 응답한다.
- 패킷이 NAT 라우터에 도착했을때 라우터는 사설망 IP 주소 10.0.0.1 포트번호 3345로 응답 패킷을 보낸다.
📌 네트워크 주소와 브로드캐스트 주소 구하기
예제
상황 : 192.168.51.111/20이라는 IP가 소속되어 있는 네트워크가 있을 때 아래 질문에 답을 하시오.
**Q1. 192.168.60.211은 같은 네트워크에 소속되어 있지 않다. **
-
아니다. 같은 네트워크에 소속된다.
- 192.168.51.111과 192.168.60.211는 같은 네트워크 주소(서브넷)를 갖는다.
- 그리고 192.168.xxx.xxx 대역을 보아 사설 IP임을 알 수 있다.
- 192.168.51.111(
1100 0000 1010 1000 0011
0011 0110 1111
) - 192.158.60.211(
1100 0000 1010 1000 0011
1100 1101 0011
)
Q2. 192.168.63.255로 IP를 할당 할 수 있다.
- 아니다. 할당할 수 없다.
- 192.168.63.255는 해당 네트워크의 브로드 캐스트 주소다.
Q3. 192.168.51.111/20의 네트워크 마스크는 255.255.255.0이다.
- 아니다. 답은 255.255.240.0이다. 앞에서부터 20비트가 prefix다. 이진수로 표현하면 아래와 같다.
1111 1111. 1111 1111. 1111 0000. 0000 0000
Q4. 192.168.48.1은 해당 네트워크의 게이트웨이가 될 수 있다.
- 맞다. 네트워크 주소와 브로드캐스트 주소를 제외한 나머지 IP는 게이트웨이로 가능하다.
Q5. 해당 네트워크의 주소는 192.168.48.0이다.
- 맞다. 이진수로는 아래와 같다.
1100 0000 1010 1000 0011 0000 0000 0000