네트워크 계층 역할
네트워크 계층의 역할은 네트워크 간의 통신을 가능하게 하는 것으로
서로 다른 네트워크에 있는 컴퓨터로 데이터 전송이 가능해집니다.
IP란?
컴퓨터는 인터넷을 통해 수많은 컴퓨터들과 연결되어 있습니다.
컴퓨터와 컴퓨터는 데이터를 주고받을 수 있죠.
그런데 어떻게 수많은 컴퓨터 중 특정 컴퓨터로 데이터를 보낼 수 있는걸까요?
IP란 인터넷 세상에서 이 도로명 주소, 동과 호수의 역할을 합니다.
현실에서도 쿠팡으로 물건을 산다고 하면 우리 집의 도로명 주소, 동과 호수가 필요하죠
IP는 다른 컴퓨터들이 접근할 수 있게 가지고 있는 고유한 네트워크 주소이다.
*주의할 건 IP 주소는 컴퓨터의 주소가 아니라 네트워크의 주소입니다.
집에서 개발할 때와 스타벅스에서 개발할 때, 노트북의 IP는 달라집니다.*
IP의 형태?
IP는 8개의 이진수를 4번 반복해 표현하기로 약속합니다.
다만 이진수는 알아보기 어렵기 때문에 십진수로 바꿔서 표현합니다.
각각의 블록은 00000000~11111111, 0부터 255까지 범위를 갖습니다.
IP의 문제점?
IP는 총 몇 개를 만들 수 있을까요?
32개의 이진수를 사용하면 약 43억개의 IP를 만들 수 있습니다.
2023년에 지구에는 약 79억명이 살고 있다고 합니다만
대한민국 기준으로 한 명의 사람은 보통 노트북도 있고, 핸드폰도 있고, 컴퓨터도 있습니다.
단순하게 생각해도 43억개의 IP는 굉장히 모자라 보입니다.
공인 IP, 사설 IP?
이 문제를 해결하기 위해 공인 IP와 사설 IP라는 개념이 도입됩니다.
ex)
도로명 주소는 딱 하나만 존재할 수 있습니다.
판교의 반포 자이는 "서울시 서초구 신반포로 270" 라는 도로명 주소를 갖습니다.
이 주소는 대한민국에서 유일합니다.
그렇지만 101동 202호라는 호수는 반포 자이 뿐 아니라 각 아파트마다 존재할 수 있습니다.
도로명 주소를 통해서 집을 찾아갈 수 있지만, 101동 202호만을 보고 집을 찾아갈 수는 없습니다.
공인 IP는 도로명 주소, 사설 IP는 동과 호수로 바꿔서 생각하면 쉽게 이해가 가능하죠.
공인 IP는 앞서 계속 설명해 온 IP입니다. 인터넷 상에서 유일하게 한 개만 존재할 수 있습니다.
사설 IP는 하나의 사설망 내에서만 사용되는 IP주소입니다.
모든 네트워크마다 동일한 IP를 갖기 때문에 사설 IP는 외부에서 접근할 수 없습니다.
1.0.0.0 ~ 126.255.255.255
128.0.0.0 ~ 191.255.0.0
192.0.0.0 ~ 223.255.255.0
IP가 위의 범위에 해당한다면, 해당 IP는 사설 IP라는 걸 의미합니다.
기존에는 딱 43억개의 IP만을 사용할 수 있었다면,
이제는 공인 IP를 사용해 사설망을 만든 뒤 여러 사설 IP를 사용해 훨씬 많은 IP를 사용할 수 있게 됩니다.
IP 버전?
IPv4와 IPv6가 있습니다.
IPv4 : 32비트로 되어 있어서 IP 주소를 약 43억 개 만들수 있습니다. 만..
인터넷이 널리 보급되면서 IP 주소가 부족해짐으로(스마트폰,노트북,태블릿,IOT등 사용처가 다수 등장)
IPv6 주소가 생겨났습니다.
IPv6 : 128비트로 되어있어 340간 개 즉, 거의 무한대로 만들 수 있습니다.
네트워크 ID, 호스트 ID??
IP는 네트워크 ID, 호스트 ID로 나눌 수 있습니다.
네트워크 ID는 네트워크를 식별하고,
호스트 ID는 네트워크 내에서 어떤 컴퓨터인지 식별합니다.
IP의 첫 번째 블록만 네트워크ID, 나머지 블록은 호스트ID입니다.
200.201.202.203 이라는 IP가 있다면, 200이 네트워크 ID, 201.202.203이 호스트 ID가 됩니다.
클래스??
과거 IP를 나눠줄 때 사용하던 방식입니다.
IP를 할당할 때 각각 필요한 IP의 개수는 다릅니다.
서울시에서 IP를 할당받을 때와 아파트에서 IP를 할당받을 때, 각각 필요한 IP의 개수는 다를 수밖에 없습니다.
효율적으로 IP를 분배하기 위해 IP를 뭉텅이 단위로 나눠뒀다가, 필요할 때마다 건네주는 방식을 사용합니다.
A 클래스는 IP의 첫 번째 블록만 네트워크ID, 나머지 블록은 호스트ID입니다.
200.201.202.203 이라는 클래스 A의 IP가 있다면, 200이 네트워크 ID, 201.202.203이 호스트 ID가 됩니다.
A 클래스는 세 블록을 호스트로 갖기 때문에 하나의 네트워크에서 2의 24승만큼의 IP를 가져갈 수 있습니다.
B 클래스는 앞의 두 블록이 네트워크 ID, 나머지 두 블록이 호스트 ID입니다.
하나의 네트워크에서 2의 16승만큼의 IP를 가져갑니다.
C 클래스는 세 블록이 네트워크 ID, 마지막 한 블록이 호스트 ID입니다.
하나의 네트워크에서 2의 8승만큼 IP를 가져갑니다.
IP를 보고 네트워크와 호스트를 구별하기 위해 과거에는 네트워크마다 범위를 지정해줬습니다.
클래스를 사용하지 않는 이유???
클래스를 사용하면 IP의 낭비가 일어납니다.
소규모 네트워크에 할당하는 C클래스 기준 255개의 IP를 할당해줘야 합니다.
만약 직원 50명의 소규모 회사에서 C클래스 IP를 할당받았다면, 155개의 IP가 낭비되죠.
과거에는 IP가 널널했기 때문에 저렇게 뭉텅이 단위로 제공을 해줘도 됐지만 지금은 IP가 부족합니다.
안그래도 부족한 IP를 낭비할 수 없어 이제는 클래스 개념을 사용하지 않습니다.
더 적절하게 네트워크를 분할하기 위해 서브넷이라는 개념을 사용하게 됩니다.
서브넷 마스크
서브네팅이란? (Subnetting)
서브넷마스크를 알기 위해선 먼저 서브네팅 개념을 이해해야합니다.
서브네팅은 "네트워크 관리자가 네트워크 성능을 향상시키기 위해, 자원을 효율적으로 분배하는 것입니다.
여기서 자원을 효율적으로 분배한다는 것은 네트워크 영역과 호스트 영역을 분할 하는 것이라고 생각하면 됩니다."
네트워크적인 측면에서 말하자면,
너무 큰 브로드캐스트 도메인은 네트워크 환경에서 패킷전송을 느리게하고 성능저하를 발생시킵니다.
따라서 네트워크를 쪼개서 통신 성능을 보장하는 것입니다.
또한 IP는 32자리 2진수로 표현할 수 있는데, 이 말은 결국 최대 2의 32승만큼의 표현만 가능하다는 뜻 입니다.
즉, 자원의 한계가 존재한다는 뜻이고 결국 제한적인 자원으로 인해 주소에 낭비 없이 아껴써야 합니다.
그래서 등장하는 것이 서브넷마스크라는 녀석입니다.
서브넷 마스크는 필요한 네트워크 주소만 호스트 IP로 할당 할 수 있게 만들어 네트워크 낭비를 방지합니다.
이를 전문용어로 서브네팅이라 하며 그 반대는 슈퍼네팅이라고 합니다.
서브넷마스크 (Subnet Mask)
서브네팅을 하기 위해선 서브넷마스크라는 녀석이 필요하다고 했습니다.
예시로, 성형외과에서 코수술을 한다고 했을때, 환자얼굴위에 수술 마스크를 덮습니다.
해당 마스크는 코만 보이고 눈,입,볼 등 코를 제외한 부분은 전부 가려줍니다.
의사가 코에만 집중할 수 있게 말이죠...이와 비슷한 개념입니다.
어느 한 네트워크에서 1~100까지 IP를 할당받을 수 있고
우리가 필요한 IP가 20개정도라고 가정할 때,
굳이 1~100까지 IP를 줄 필요가 없습니다.
최소 1~20까지만 IP를 주면 됩니다.
그럼 나머지 21~100은 사용자가 신경쓰지 않게 끔,
서브넷마스크로 가려버린다 라고 생각하면 조금 이해하기 쉽습니다.
서브넷마스크 표시방법
서브넷마스크는 1과 0으로 이뤄져있고, 1이 연속으로 나와야합니다.
11101 안됩니다. 11001 안됩니다. 무조건 1111000 이런식으로 1을 표현하기 위해선 1이 연속으로 나와야 합니다.
IP주소에서 만약 192.168.0.1/24 라고 하면
이는 C클래스이고
기본 디폴트 마스크는 255.255.255.0 입니다.
디폴트 마스크도 서브넷마스크입니다.
255.255.255.0 은 우리가 알기 쉽게 10진수로 표현했을 뿐 2진수로 바꾸면....
결국 1111 1111.1111 1111.1111 1111.0000 0000 입니다.
여기서 연속으로 1이 24개 있습니다.
IP 뒤에 /24 라는 표현이 1이 24개가 있다는 뜻입니다. 이것을 CIDER라고 부릅니다.
1은 네트워크 영역으로 사용하겠다는 뜻이고 0은 호스트 IP로 사용하겠다는 뜻입니다.
즉 사용자에게 0이 표현된 부분만 호스트 IP를 할당할 수 있게 만들겠다는 뜻입니다.
사이더(CIDR)?
192.13.3.1/24
IP 뒤에 붙는 숫자가 바로 사이더입니다.
IP와 서브넷 마스크를 함께 표현하기 위해 사이더를 사용합니다.
서브넷 마스크 기준 앞에서부터 1의 개수를 적으면 됩니다.
사이더가 24라는 건 최상위 비트로부터 24개가 네트워크 ID라는 의미입니다.
아래 서브넷 마스크와 동일한 의미를 갖습니다.
IP : 11000000.00001101.00000011.00000001
서브넷 마스크 : 11111111.11111111.11111111.00000000
1개 네트워크에서 사용할 수 있는 호스트의 개수?
192.168.0.2/24 가 속한 네트워크는 몇 개의 호스트를 배치할 수 있을까?
256개같지만, 정답은 254개입니다.
하나의 네트워크에서 2개의 IP는 사용이 불가능한데,
네트워크 주소와 브로드캐스트 주소가 디폴트로 고정되어있기 때문입니다.
네트워크 주소의 역할은 전체 네트워크를 대표하는 역할,
브로드캐스트 주소는 네트워크 안에 있는 모든 IP에 응답을 전달하는 역할을 합니다.
네트워크 주소는 네트워크의 첫 번째 IP, 위 예시에서 192.168.0.0가 되고,
브로드캐스트 주소는 네트워크의 마지막 IP, 위 예시에서 192.168.0.255가 됩니다.
추가로 호스트 한 개는 게이트웨이의 역할을 해야 합니다.
고정IP 와 동적IP
고정 IP 주소
고정 IP 주소는 단순히 변경되지 않는 IP 주소입니다.
장치에 할당된 순간부터 네트워크 관리자가 수동으로 변경하거나
전체 네트워크 아키텍처가 변경될 때까지 동일하게 유지됩니다.
여기 에서 Windows 시스템에서 고정 IP를 설정하는 방법을 확인할 수 있습니다.
고정 IP 주소는 다음과 같은 많은 경우에 매우 편리합니다.
웹사이트/서버 호스팅 - 고정 IP 주소가 할당된 장치에서 웹사이트와 서버를 호스팅하는 것이 훨씬 더 쉽습니다.
DNS - 고정 IP 주소를 사용하는 장치/서비스는 DNS가 도메인 이름으로 더 쉽게 변환할 수 있습니다.
더 쉬운 원격 액세스 - 고정 IP 주소가 있는 장치는 SSH,
동적IP 주소
고정 IP 주소와 달리 동적 IP 주소는 변경될 수 있습니다.
동적 IP 주소는 DHCP(Dynamic Host Configuration Protocol)라는 것에 의해 할당됩니다.
고정 IP 주소보다 훨씬 유연하며 거의 모든 수동 작업이 필요하지 않습니다.
동적 IP 주소의 장점:
DHCP - DHCP는 컴퓨터 네트워크의 장치에 IP 주소를 자동으로 할당하는 매우 깔끔한 기술로,
선택할 수 있는 IP 주소 풀(범위)이 있습니다.
더 나은 보안 - IP 주소가 수시로 변경되면 잠재적인 공격자가 장치를 찾기가 훨씬 더 어려워집니다.
제한 없음 - 40억 개 이상의 장치를 처리해야 하는 경우(IPv4에 대해 이야기함)가 아니라면 바로 사용할 수 있습니다.
사용할 수 있는 IP 주소는 매우 많으며, 다 사용하지 않아야 합니다.
DHCP란?
DHCP는 Dynamic Host Configuration Protocol의 약자입니다.
단어 그대로 동적으로 호스트를 설정하는 규약으로,
네트워크 안에 컴퓨터에 자동으로 네임 서버 주소, IP주소, 게이트웨이 주소를 할당해주는 것을 의미하고,
해당 클라이언트에게 일정 기간 임대를 하는 동적 주소 할당 프로토콜입니다.
PC의 수가 많거나 PC 자체 변동사항이 많은 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능하고,
IP를 자동으로 할당해주기 때문에 IP 충돌을 막을 수 있습니다.
하지만, DHCP 서버에 의존하기 때문에 서버가 다운되면 ip 할당이 제대로 이루어지지 않습니다.
라우팅이란?
사전적인 의미로 라우팅, 즉 Routing은 Route를 하는 것을 의미합니다.
Route는 명사로 한 곳에서 다른 곳으로 가기 위한 길, 경로라고 적혀 있죠?
여기서 힌트를 찾아낼 수 있습니다.
정리하면 라우팅은 이런 경로를 설정하고 더 나아가 경로에 따라 무언가를 보내주는 것을 말합니다.
그런데 우리가 지금 이야기하는 주제는 네트워크이므로
"경로를 따라 보내는 무언가"는 "데이터(패킷)"가 됩니다.
라우팅과 라우트 라우팅 프로토콜 각각의 차이점을 설명하면 다음과 같습니다.
라우팅 : 어떤 데이터를 목적지까지 보내기 위한 경로를 선정하는 과정
(← 경로[Route]를 선출하는 과정[-ing])
라우트 : 라우팅에 의한 결과로, 데이터를 보내기 위한 경로
(← 길을 정하는 과정인 라우팅[Routing]에 의해 데이터를 보낼 길[Route]가 만들어짐)
라우팅 프로토콜 : 라우팅을 할 때 어떻게 데이터가 목적지까지 도달할 길을 만들지를 정의한 규칙, 규약
(← 어떤 방식, 어떤 절차를 통해 경로를 선정[Routing] 할 것인가?)
일상생활과 밀접한 "네비게이션 길 찾기"를 통해서도 위 세가지 개념을 비유해 설명할 수 있습니다.
예를 들어 어떤 사람 L이 서울에서 부산까지 가려는 상황을 가정해봅시다.
라우팅 : 지도 어플리케이션을 켜고 서울에서 부산까지 가는 길(방법)을 조회하는 것
라우트 : 최종적으로 선정된 서울에서 부산까지 가는 길(방법)
라우팅 프로토콜 : 지도 어플리케이션으로 무엇을 쓸지(T맵, 구글맵, 네이버 지도, 카카오 지도)
라우팅은 어떻게 이루어질까?
라우팅은 과연 누가 할까요? 라우팅은 바로 라우터(router)라는 전용 장치가 맡아서 하고 있습니다.
라우터가 하는 경로 설정인 라우팅은
네트워크 정보를 담아 경로 선정에 활용하는 라우팅 테이블(routing table)*이란
표를 만들고 이를 공유하는 과정입니다.
네트워크에서 라우팅, 즉 라우팅 테이블을 만드는 과정을 이야기하면
보통은 정적 라우팅(Static Routing)과 동적 라우팅(Dynamic Routing) 두가지를 생각합니다.
*라우팅 테이블 : 라우팅에서 어떤 목적지로 가는 데이터는 어디를 통해 나갈지 등을 적어놓은 표 형식의 데이터!
라우팅의 종류
1. 정적 라우팅(Static Routing)
사람이 수동으로(직접) 미리 경로를 지정하는 방식입니다.
네트워크 관리자가 직접 데이터를 어디로 보낼지 일일이 결정해주는 방식이며,
네트워크에 어떤 변화가 일어난다고 해도 정적 라우팅을 하면 데이터는 늘 설정한 대로만 전송됩니다.
따라서 네트워크 변동에 대해 유연성이 떨어지며, 변경 발생시 정적 라우팅은 수정이나 확인 등이 필요하므로
관리에 더 많은 신경을 써야 하며 관리자가 직접 문제를 해결하지 못하면 그 문제는 계속해서 해결되지 않습니다.
하지만, 한번 라우팅을 설정하면 더이상 네트워크 변경이 없거나 거의 없을 소규모 네트워크나 특수적인 환경에서는
오히려 관리자가 모든 것을 완전히 통제할 수 있어 편리하며, 라우팅 때문에 라우터에 부담이 가는 일은 거의 없습니다.
또한, 오류가 발생한 경우 그 원인을 동적 라우팅 방법에 비해 빠르고 직관적으로 찾아낼 수 있다는 장점도 존재합니다.
2. 동적 라우팅(Dynamic Routing)
사람이 아닌 라우터들끼리 알아서 네트워크 정보를 상호 교환하여 라우팅을 하는 방법으로
상시적으로 라우팅 테이블을 교환하고 유지합니다.
이때 라우팅에 참가하는 라우터들은 사전에 약속된 라우팅 프로토콜을 사용합니다.
따라서 네트워크의 환경이나 변화와 같은 상황 변화에 유연하며 그 가운데서 최선의 길을 찾아가도록 합니다.
그 길을 선정하는 방법이 바로 라우팅 프로토콜이 됩니다.
- 라우팅 프로토콜로는 RIP, IGRP, EIGRP, OSPF, BGP 등이 있습니다.
환경이 변해서 한쪽 길이 막혀도 다른 길을 통해 우회하는 등의 작업이 가능해
문제가 발생해도 잘 대처하는 등 변화 대처가 빠릅니다.
환경이 자주 변하거나 네트워크 규모가 커 관리자가 일일이 관리하기 힘든 경우 적합한 라우팅 방법입니다.
관리자는 라우팅 초반에 초기 설정만 해 주면 됩니다.
라우터가 계속 정보를 주고받고 최적의 길을 연산하기 때문에 라우터에 부담이 가며,
라우팅 프로토콜의 경로 계산 방법과 상황에 따라 "진짜" 최선의 길을 선택하지 않는 경우가 발생할 수도 있습니다.
자동으로 작동하다 보니 라우팅에 문제가 발생하면 일반적으로 원인 찾기가 더 어렵습니다.
동적 라우팅 프로토콜은 각자 나름대로 최적의 길을 산출해내는 방법이 있으며
라우팅을 통해 이때 발생하는 비용*을 매트릭스(matrix)라고 합니다.
매트릭스는 단순히 통과하는 라우터의 개수(hop)가 되기도 하지만,
대역폭, 지연 시간, 혼잡도 등 다양한 변수들을 종합적으로 고려하기도 합니다.
*비용(cost) : 데이터를 보내기까지 소용되는 발생되는 일종의 부담(→비용).
이 비용이 적게 드는 경로일수록 더욱 더 최선의 경로가 됩니다.
일상생활에서, 비싸지만 택시를 타고 빨리 갈지, 싸지만 버스를 타고 느리게 갈지 등을 결정할 때도
각자의 비용을 생각해보는 것과 맥락이 같습니다.
보통 라우팅, 즉 라우팅 테이블을 만들어 서로 교환하는 것은 위 두 방법(정적/동적 라우팅)만 주로 언급되지만
사실 아래와 같이 직접 연결 방식(connected)과 재분배(redistribution)로도 라우팅 테이블이 생겨납니다.
3. 직접 연결 방식(Connected)
직접 라우터끼리 물리적으로 연결된 인터페이스(루트, 경로)를 학습하는 방식입니다.
별다른 설정을 하지 않아도 서로 연결하고 연결된 인터페이스가 활성화(Up)만 된다면 자동으로 학습되어
라우팅 테이블에 알아서 등록됩니다.
4. 재분배(Redistribution)
서로 다른 라우팅 프로토콜은 기본적으로 서로 호환이 되지 않습니다. 그런데 이런 다른 라우팅 프로토콜을 사용하는 다른 네트워크들이 회사 합병, 조직 개편 등으로 하나로 합쳐야 할 때가 생기는데 이때 라우팅 재분배(routing redistribution)이라는 것을 사용해 하나로 합병합니다.
- 라우팅 재분배를 사용해서 두 라우팅 프로토콜 간의 호환성을 유지할 수 있습니다.
각자 서로 자기가 쓰던 라우팅 프로토콜의 방식대로 상대방의 네트워크 정보를 "변환"해서 받아들이고 라우팅하는 것으로, 마치 라우팅 정보를 다시 받는다 하여 재(re)분배(distribution)라고 합니다.
참조 출처:
https://velog.io/@iamtaehoon/IP%EB%9E%80 // iamtaehoon.log
https://limkydev.tistory.com/166 // Limky 삽질블로그
https://inpa.tistory.com/ // InpaDev
https://blog.naver.com/luexr/222281762304 // kn1ght님의 블로그
'기술이론 > CS기초' 카테고리의 다른 글
OSI 7계층 / 물리 계층 (1) | 2024.09.02 |
---|---|
OSI 7계층 / 계층별 개요 (0) | 2024.08.26 |