*IP
- host를 구분하는 주소. 인터넷에서 유일해야한다.
- 32bit(4Byte)로 구성되어있다.
- IP는 단독으로 설정되지 않으며, 언제나 netmask(subnetmask), gateway와 함께 구성된다.
*Bogon IP
- 특수목적을 지녀 사용이 불가한 IP
- Zero add: 특수 목적으로 예약된 IP. 0.0.0.0~0.255.255.255
- Network add Direct broadcast add: 네트워크 첫번째 IP와 마지막 IP
- Local broadcast add: 인터넷 전체의 broadcast add, host=255.255.255.255
- Multicast add: D 클래스. Multicast를 위해 할당함.
- Loopback add: 자기자신을 의미하는 IP. 127.0.0.0~127.255.255.255
- Zero Configuration: AHCP나 RARP서버가 없는 P2P 혹은 Wireless 환경에서 자동설정 되는 IP. 169.254.0.0~169.254.255.255
- 사설 IP: A~C클래스.
▶A 클래스: 10.0.0.0~10.255.255.255
▶B 클래스: 172.16.0.0~172.31.255.255
▶C 클래스: 192.168.0.0~192.168.255.255
*Netmask(Subnetmask)
- IP 주소 내에서 network 범위와 host 범위를 구분해주는 역할.
- IP는 netmask 없이 host 범위를 구별할 수 없다.
※ 서브넷 마스크는 연속된 숫자들로만 이뤄져있음. 255.255.240.5<같은 것은 불가능. 무조건 범위를 알려주는 정보이기 때문에, 이진수화 했을 경우 11111111.11111111.11111100.00000000의 형태만 가능하고, 11111111.11111111.11111100.00000101 이런 형태는 불가하다. (중간에 0과 1이 섞일 수 없음)
* Netmask의 표현법
- 255. 255. 255. 0 / 255. 255. 0. 0 / 255. 0. 0. 0 (IP 형태)
- xxx.xxx.xxx.xxx /24 (CIDR 기법)
CIDR 기법에서 /24란건 IP형태로 표현했을때 255. 255. 255. 0 이란 것이며, 곧 이진수화 했을때 1이 24개 선행하고, 이어진 0이 8개란 뜻이다.
*Class Oriented Netmask
- IP에 따라 Netmask를 자동으로 할당하는 것. 기본적으로 Netmask는 0과 255로만 이루어져있다. ( 255.0.0.0 / 255.255.0.0 / 255.255.255.0)
- 그러나 네트워크 범위를 지정하고, 그 범위를 분할할 경우 255가 아닌 수도 Netmask가 될 수 있다.
*Bitmasking을 이용한 네트워크 분할
- Netmask는 연속된 1과 0으로만 이루어져있다. 이는 곧 네트워크의 범위를 의미한다.
- 분할 종류

- 원리 및 증명
▶ 예를 들자면 1.1.1.0 ~ 1.1.1.255 범위의 Subnetmask는 255.255.255.0 이다. 그러나 이것을 분할하고자 하면, 요구하는 분할 개수에 따라 마지막 블록(0)의 숫자가 달라진다.
▶ "네트워크 범위에 속한 비트가 다르다"="동일 네트워크가 아니다" 이므로, 네트워크 분할은 네트워크 범위에 해당하는 IP 비트의 0과 1 여부에 따라 이뤄진다. 따라서 네트워크 범위가 각각 동일하다는 가정하에서의 네트워크 분할 개수는 무조건 2 ^ n(2의 n승, n>8)만이 가능하다.
만일 네트워크를 3개로 분할을 원한다면 4개로 분할 후 1개를 사용하지 않는 것만이 가능하다.
※ 왜 3분할이 불가능한가?
IP 프로토콜(규약)에서 정해진 IP주소의 표기법은 (편의상 10진법을 이용해 표기하기도 하지만) 2진법이다. IP 주소가 2진법으로 표기되는 이상 완벽한 3분할은 불가하다. 3분할을 가능케 하려면 IP주소의 표기법을 바꿔야하고, 그러면 한 블럭에 할당될 수 있는 host의 최대개수도 달라질 것이다. 그렇게 되면 다수의 이미 존재하는 프로토콜들이 기능을 다하지 못하게 된다. 따라 네트워크 분할 기법은 IP 주소를 2진법으로 표기하자는 약속(규약, 프로토콜)에서부터 시작된 것이니 3분할 등 2^n(n>8)개가 아닌 분할은 이미 만들어진 네트워크 프로토콜을 전부 변경할 것이 아니라면 불가능하다.
마찬가지로 5개의 호스트만 필요하다는 이유로 7(5+2)개짜리 IP주소만 존재하도록 네트워크 범위를 만들 수 없다. (32분할-IP 주소 8개로 네트워크 범위 설정하고 1개는 사용하지 않는 것만 가능하다.)
※ 분할될 네트워크 범위가 각각 동일하지 않다면?
다만 3분할의 각 범위가 서로 다르다면(ex. 100ea , 50ea, 50ea 씩 호스트 배정이 필요) 분할이 가능하다. 이런 식으로 네트워크를 분할하는 것을 VLSM(Variable Length Subnet Masks)이라 한다.
IP주소의 낭비를 일부 막을 수 있으나, IP 주소 낭비로 인해 발생하는 문제들을 해결하지는 못한다.
▶ 증명과정(왜 2^n개인가)
예를 들어 2개로 분할을 원할 경우, 해당 블럭(이미지에선 4번째 블럭)을 0(xxxxxxx)/1(xxxxxxx)의 2개로 나눈다.
나뉘어진 범위 중 네트워크 범위의 비트가 0인 것의 첫번째 주소 블럭은 0(00000000)이 되고, 마지막 블럭은 127(01111111)이 된다.
네트워크 범위의 비트가 1인 것의 첫번째 주소 블럭은 128(10000000)이 되고, 마지막 블럭은 255(11111111)이 된다.

이때의 서브넷 마스크는 255.255.255.128(=xxx.xxx.xxx.xxx/25)이 된다. 128이 해당 블럭에서 네트워크 범위가 8비트중 1개만 차지하고 있기 때문에 2^1(2)개로 분할이 가능한 것이다.
※ 정리
1.1.1.0 ~ 1.1.1.255 범위의 네트워크 2분할 시
서브넷 마스크: 255.255.255.128 로 고정
IP주소 범위
1) 1.1.1.0 ~ 1.1.1.127
2) 1.1.1.128 ~ 1.1.1.255
이하는 네트워크 4/8/16 분할의 증명과정이다.
▶ 네트워크 4개 분할
서브넷 마스크: 255.255.255.192 로 고정
IP주소 범위
1) 1.1.1.0 ~ 1.1.1.63
2) 1.1.1.64 ~ 1.1.1.127
3) 1.1.1.128 ~ 1.1.1.191
4) 1.1.1.192 ~ 1.1.1.255

▶ 네트워크 8개 분할(길어져서 이후는 텍스트로 정리하지 않는다. 이미지를 참고하라.)

▶ 네트워크 16개 분할

이론상 예시 범위의 네트워크(1.1.1.0~1.1.1.255)는 최대 256개로 분할이 가능하나, 한 네트워크에는 1개의 Network ID(첫번째 주소와 동일)와 Broadcast Address(마지막 주소와 동일)를 필수적으로 포함해야 사용이 가능하다. 그러므로 네트워크에서 호스트에게 배정가능한 IP는 사실상 2^6(64)개까지 가능하다. 해당 사실은 위에 첨부한 "Netmask 분할" 이미지에서 확인이 가능하다.
*Network ID
네트워크 식별자. 네트워크를 구분/식별하기 위해 사용되며, 기타 기능은 존재하지 않는다. 해당 용도로 예약되어있기에 호스트에게 배정되지 않는다.
해당 네트워크에서, 네트워크의 호스트 범위에 해당하는 비트가 전부 0인 IP 주소를 의미한다(=해당 IP 범위의 첫번째 주소).
*Broadcast Address
해당 네트워크 내의 모든 호스트에게 동시에 패킷을 전달할 때 사용되는 주소이다. 해당 용도로 예약되어있기에 호스트에게 배정되지 않는다.
해당 네트워크에서, 네트워크의 호스트 범위에 해당하는 비트가 전부 1인 IP 주소를 의미한다(=해당 IP 범위의 마지막 주소).
*Gateway
- host는 인터넷 상 모든 다른 host와 통신이 가능하다, 직접 패킷을 보내는 대상은 동일 네트워크 내의 host까지로 제한된다. 그렇기에 다른 네트워크 범위의 host에게 패킷을 보내고 싶다면 네트워크 내 외부와 연결된 시스템이 필요한데, 이를 Gateway라고 한다.
- 일종의 통로. 네트워크의 출입구라고 이해하면 된다.
- 다중 게이트웨이는 존재하긴 하나, 디폴트 값을 반드시 1개 지정해야한다. 최근에는 다중 게이트웨이를 고려하지 않고 네트워크 설계를 하는 경우가 절대다수이다. (인터넷 인프라의 발전으로 Backup라인의 중요도가 낮아졌으므로. 백업통로가 필요할 정도로 위태롭지 않다.)
- 게이트웨이의 역할은 라우터 혹은 공유기가 담당한다.
*Network 범위 연산
1) Subnetmask를 이진수화해 호스트 범위를 파악한다.
2) 호스트 범위가 시작되는 블럭의 IP주소를 이진수화한다.
* 1이 이어지는 범위가 네트워크 범위, 0이 최초로 등장하는 범위가 호스트 범위이다. 255.255.255.0은 곧 24로도 표기가 가능한데, 이진수로 11111111.11111111.11111111.00000000 형태이므로 네트워크 범위(1이 연속되는 범위)인 24로 기입한다. 호스트범위는 32에서 0을 뺀 범위인 8(=0이 연속되는 범위)이다.
3) 해당 블럭의 IP주소와 Subnetmask의 이진수를 AND 연산한다. 이것이 해당 IP주소가 속한 네트워크 범위의 첫번째 주소가 된다.
4) 도출해낸 첫번째 주소에, 2)에서 구한 호스트범위 부분을 1로 치환한다. 즉, 첫번째 주소의 마지막 8자리를 전부 1로 변환하는 것이다. 그러면 해당 IP주소가 속한 네트워크 범위의 마지막 주소를 도출해낼 수 있다.
ex)
제공된 IP주소: 172.17.100.213
서브넷: 255.255.240.0
1) Subnetmask를 이진수화해 호스트 범위 파악
위 이진수에서 1이 끝나는 범위 혹은 0이 시작되는 범위가 네트워크 범위와 호스트 범위의 경계이다.
1이 20개가 연속되었으므로, 호스트 범위는 12이 된다.
CIDR 기법으로 표기하면 해당 주소는 172.17.100.213 /20로 제공되었을 것이다.
2) IP주소 이진수화 진행
IP주소는 전부 이진수화하는 것이 기본이나, 사실 서브넷 마스크의 네트워크 범위가 끝나는 블럭(255가 아니게 되는 최초의 블럭)만 이진수화해도 무방하다. (이어질 AND연산의 단순계산을 위해)
IP주소: .01100100.
서브넷: 11111111.11111111.11110000.00000000
3) AND 연산 진행
서브넷 이진수가 1인 부분은 IP 이진수와 동일하게 내려온다.
서브넷 이진수가 0인 부분은 무조건 0이 된다.
따라서 첫번째 주소는 172.17.(?).0의 형식을 띄게 된다.
3번째 블럭을 AND 연산하면, 01100000으로, 2의 6승+2의 5승, 즉 64+32인 96이다.
(해당 IP주소가 속한 네트워크 범위의) 첫번째 주소: 172.17.96.0
4) 첫번째 주소에, subnetmask의 호스트 범위를 1로 치환한다.
해당 과정을 거치게 된다면 마지막 주소는 172.17.(?).(?)의 형식이 되는데, 마지막 8비트가 전부 1이라면, 10진수일때 255이다.
172.17.(?).255의 형식을 도출해낸 후, 세번째 블럭의 뒤 4번째를 1로 바꾸면 01101111이 되므로, 이를 10진수화 하면 64+32+8+4+2+1, 111이 된다.
(해당 IP주소가 속한 네트워크 범위의) 마지막 주소: 172.17.111.255
따라서 선행된 계산을 통해 해당 IP주소가 속한 네트워크의 범위는
172.17.96.0~ 172.17.111.255
임을 알 수 있다.
*Router(라우터)
- 패킷의 이동 경로(어느 포트로 나갈지)를 지정해주는 장치. 라우터 간 통신(Routing Protocol)을 통해 목적지까지 패킷의 전달 루트를 지정한다.
- 라우터 간 통신 기능이 없을 때, 라우터는 Routing Table에 없는 목적지로 발송되는 패킷은 전부 폐기한다(인터넷으로 나가기도 함). 이때는 수동지정(Stating Routing, 게이트웨이 혹은 IP를 지정)을 통해 패킷의 폐기를 방지할 수 있다. 다만 라우팅 프로토콜을 사용하는 쪽이 간편하다.
- 라우터는 패킷을 쪼개는 역할을 수행하기도 한다. 네트워크가 감당 가능한 용량에 비해 패킷용량이 클 때, 라우터는 패킷을 쪼개서 나눠보낸다. 이 과정에서 패킷의 헤더가 변경되기도 한다.
* 데이터 통신 과정

*NAT(Network Address Translation)
- 공인 IP의 부족현상을 해결하기 위해 고안되었다.
- 외부침입을 비허용하는 특성으로 인해 방화벽으로도 인정된다.
- 해당 기능을 제공하는 기기: 공유기
- 네트워크 내(동일 게이트웨이를 공유) 모든 IP를 하나의 공유 IP로 변환해 인터넷에 접속한다.
*ICMP(Internet Control Message Protocol)
- 인터넷 제어 메시지를 말한다. 네트워크 관리 및 오류 보고를 위해 사용된다.
- IP의 비신뢰성, 비연결성의 단점을 보완하고자 고안 된 IP Suppouted Protocol이다. 특성 프로그램의 호출 시에만 동작한다.
- 현재는 대부분 기능하지 못한다. 동작한 ICMP가 수신자의 방화벽에 의해 Drop되기 때문이다.
- 종류: ping, traceroute(tracert)
*ARP
- 통신 상대의 IP주소를 통해 MAC Address를 알아내는 시스템.
- ARP 메시지의 구성요소: IP주소(발신자), MAC주소(발신자), IP주소(수신자)
- ARP 메시지를 받은 수신자는 발신자에게 ARP 응답메시지를 전송한다. 이는 ARP 스푸핑의 대책으로 고안되었다. 발신자가 ARP를 보낸 것이 맞는지 한번 더 확인한다.
Router
- IP와 같이 Routing이 지원되는 Network Layer Protocol인 경우, router를 이용해 네트워크를 연결하고 분할하는 것이 가능하다. 이는 메모리를 훨씬 효율적으로 이용하게 해준다.
- 처리 지연은 증가하나 전체 성능에 영향을 거의 끼치지 않는다.
- 경로 배정 알고리즘이 포함된다(RIP, OSPF, ...)
*Default Router(초기 라우터)의 통신과정

'이론' 카테고리의 다른 글
TCP 데이터 전송 - rdt (0) | 2025.01.15 |
---|---|
Transport Layer의 TCP/UDP (0) | 2025.01.13 |
Ethernet과 그의 확장 (0) | 2025.01.07 |
네트워크 모델과 Topology (0) | 2025.01.06 |
인터넷과 네트워크 (0) | 2025.01.06 |