들어가기 전에

사이트에 나가서 IP 클래스 개념과 서브넷 마스크의 정확한 개념을 익히지 못하여 삽집을 한 경험이 있기에…

IP 주소 클래스

IPv4는 초기에 클래스로 나누어서 할당을 하였지만 이 방식이 비 효율적이기 때문에 + IP주소가 모자르게되어서 서브넷 마스크를 도입하게 된다. 비효율 적인 이유는 B class를 사용하면 약 네트워크 ID당 65,536개의 Host ID를 사용할 수 있는데 C class를 사용하면 네트워크 ID당 256개로 극단적으로 줄어들게 된다. 만약 회사에서 네트워크 ID당 1000개의 Host ID가 필요하다면 C class를 사용하기에는 부족하고 B class를 사용하기에는 낭비가 너무 심해집니다.

  • 사견 : IP 클래스에 기본 서브넷이 있지만 새로운 서브넷을 할당하면 할당한것을 우선시한다. 다만 기본 서브넷 범위를 넘어설수 없다?? - 차후 확인 필요

IP Address

Alt text

IP 주소는 4개의 2진수 8자리수 총 32비트로 구성된다. 192.168.0.1 = 1100 0000.1010 1000.0000 0000.0000 0001 와 같이 8비트를 .을 기준으로 구분된다. IP주소는 다시 IP주소클래스에 의해 네트워크 부분과 호스트 부분으로 나뉜다.

평소 우리가 보는 IP 주소는 .을 기준으로 0~255 사이의 숫자로 된 주소이다 .으로 구분되어 각 영역을 octet이라고 하는데 octet은 8개의 비트가 한데 모인것을 의미한다. octet은 실제로 10진수가 아닌 2진수 8bit로 구성되어있다. 각 주소 영역을 왼쪽에서부터 1 옥텟(혹은 옥테드), 2옥텟, 3옥텟, 4옥텟으로 부른다.

  • 브로드캐스팅 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식 ex. 동네 이장님이 마이크로 “동네사람들 반상회가 있으니 모이세요”라고방송하는것 동네 = 브로드캐스트 도메인

IP 주소 간단 예시

IP 주소 서브넷 마스크 네트워크 아이디 호스트 아이디 IP 주소 개수
192.168.10.5 255.0.0.0 192. .168.10.5 2^24개
192.168.10.5 255.255.0.0 192.168. .10.5 2^16개
192.168.10.5 255.255.255.0 192.168.10. .5 2^8개
192.168.10.5 255.255.255.255 192.168.10.5 - 2^0개
0.0.0.0 0.0.0.0 - 0.0.0.0 2^32개

A class

Alt text

2진수로 변환했을때 맨앞의 비트가 0인 경우 (00000000 ~ 01111111 즉 0~127) A클래스가 사용하는 기본 서브넷 마스크는 255.0.0.0 이다 다만 0번 대역폭은 대표 아이피, 127번 대역폭은 가상 인터페이스에 대한 아이피, 10번 대역폭은 사설 아이피이기 떄문에 사용할 수 없다 때문에 실제 사용 가능한 대역폭은 0~128까지 중 0, 10, 127 을 제외한 125개의 네트워크 대역을 사용할 수 있다.

B class

Alt text

맨 앞의 두 비트가 10 을 갖는 경우이다. 10진수로 128~191까지에 해당된다.

C class

Alt text

맨 앞의 세 비트가 110 을 갖는 경우 이다. 10진수로 192~223에 행당된다. 회사나 가정에서 가장 많이 쓰는 대역폭으로 생각된다. 정확하게는 192 대역은 사설 네트워크에 해당되어 C class의 범주에 포함이 안되지만 192 대역과 255.255.255.0 의 서브넷 마스크는 가장 익숙할 것같다.

D class

Alt text

맨 앞의 4개의 비트가 1110 을 갖는 경우이다. 10진수로 224~239에 해당된다. 이 대역폭은 멀티캐스트 주소로 예약이 되어 있으며 서브넷 마스크를 이용한 블락 단위로 동작하지 않기 때문에 서브넷 마스크를 사용하지 않는다.

E class

Alt text

맨 앞의 4개의 비트가 1111 을 갖는 경우이다. 10진수로 240~255에 해당된다. 이 대역폭은 IANA에서 나중에 사용할 주소로 예약을 걸어놓은 주소이기 때문에 설정이 불가능 하다.

공통 사항

호스트 아이디 전체가 0인 주소를 네트워크 이름이라고 한다. (ex. 4.0.0.0) 호스트 아이디 전체가 1인 주소를 브로드캐스트 주소라고 한다. (ex. 192.168.255.255) 네트워크 아이디와 서브넷 브로드캐스트 주소를 뺀 나머지가 사용 가능한 IP주소이다.

특수 용도 주소

주소 대역 용도
0.0.0.0/8 자체 네트워크
10.0.0.0/8~10.255.255.255/8 사설 네트워크
127.0.0.0/8 루프백, 자기자신
169.254.0.0/16 링크 로컬
172.16.0.0/12~172.31.255.255/12 사설 네트워크
192.0.2.0/24 예제 등 문서에서 사용
192.88.99.0/24 6to4 릴레이 애니캐스트
192.168.0.0/16~192.168.255.255 사설 네트워크
198.18.0.0/15 네트워크 장비 벤치마킹 테스트
224.0.0.0~239.255.255.255 멀티캐스트
240.0.0.0~255.255.255.255 미래 사용 용도로 예약

Prefix 변환 표

/8 255.0.0.0 /9 255.128.0.0 /10 255.192.0.0
/11 255.224.0.0 /12 255.240.0.0 /13 255.248.0.0
/14 255.252.0.0 /15 255.254.0.0 /16 255.255.0.0
/17 255.255.128.0 /18 255.255.192.0 /19 255.255.224.0
/20 255.255.240.0 /21 255.255.248.0 /22 255.255.252.0
/23 255.255.254.0 /24 255.255.255.0 /25 255.255.255.128
/26 255.255.255.192 /27 255.255.255.224 /28 255.255.255.240
/29 255.255.255.248 /30 255.255.255.252 /31 255.255.255.254
  • 255.255.252.0 의 경우 아래의 범위로 구분된다.
    192.168.0.2~192.168.7.254  
    192.168.8.2~192.168.15.254
    이하 생략
    192.168.240.2~192.168.247.254
    192.168.248.2~192.168.255.254
    

Subnetmask

IP 주소의 클래스에서 IP 부족현상을 해결하기 위하여 나온 것이기 때문에 IP 주소의 클래스와는 명확하게 다르다. Prefix - 프리픽스 표기란 서브넷 마스크 맨앞의 비트부터 1의 개수를 표기하는 방식, 서브넷 마스크가 255.255.255.0의 경우2진수로 변환시 1111 1111.1111 1111.1111 1111.0000 0000 이므로 맨앞의 비트부터 1이 24개 이다. prfix 표기로 /24로 표기할 수 있다.

ex. 192.168.11.39/25일 경우 /25는 서브넷 마스크 25bit로 255.255.255.128 이다. 그럼 호스트 IP에 할당할 수 있는 범위가 [0-127], [128-155]가 되고 네트워크는 [192.168.11.0] 과 [192.168.11.128]로 나누어진다. 결국 192.168.11.39/25가 속한 네트워크는 [192.168.11.0/25] 대역에 속하게 되어 통신하고 다른 서브네팅인 [192.168.11.128]과는 라우터를 통해야만 통신할 수 있다.

ex2. 192.168.11.111/26일 경우서브넨 마스크가 255.255.255.192가 된다. 호스트 할당 IP범위는 [0-63], [64-127], [128-191], [192-255]가 된다. 네트워크 ID는 [192.168.11.0], [192.168.11.64], [192.168.11.128], [192.168.11.192]가 된다. 192.168.11.111의 경우에는 [192.168.11.64/26]에 속하게된다.

Alt text

Subnetmask에 따라 네트워크 ID가 구분되어 각 네트워크대역에서만 통신할 수 있다.

Alt text

위의 표 처럼 서브넷 마스크에 의해 나누어진 네트워크 ID가 같은 곳의 Host ID끼리만 통신을 할 수 있다.

Linux Kernel IP routing table

[root@kjy kjy8901.github.io]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.252.0   U     100    0        0 eth0
  • Destination : 목적지
  • Gateway : 외부 네트워크와 연결하기 위한 게이트웨이 주소
  • Genmask : 목적지 네트워크의 넷마스크 주소,255.255.255.255로 지정되어 있으면 목적지의 호스트주소, 0.0.0.0 으로 지정되어 있으면 기본 게이트 웨이 주소를 의미
  • Flags : 해당 경로에 대한 정보. U(Up) 경로가 살아있는 상태, H(Host) 목적지가 호스트주소, G(Gateway) 게이트웨이를 향하는 경로
  • Metric : 목적지 네트워크까지의 거리
  • Ref : 경로를 참조한 횟수
  • Use : 경로를 탐색한 횟수
  • Iface : 패킷이 오가는데 사용할 네트워크 인터페이스

정적 라우팅 vs 동적 라우팅

정적라우팅이란 출발지에서 목적지까지 여러 가지 경로가 있을 경우 관리자가 경로를 설정하여 그 경로만 이용하도록 하는 경우로 주로 목적지까지의 경로가 단일 경로만 있을 경우에 사용한다. 장점

  • 라우터의 CPU상에 부담이 없다.
  • 대역폭 낭비가 없다
  • 보안성이 높아진다 단점
  • 관리자가 라우터가 어떻게 연결되어 있는지 정확히 알고 있어야 한다.
  • 회선이 추가될 경우 추가된 모든 경로를 설정해야한다. 네트워크 규모가 커지면 설정 및 관리가 복잡하다

동적라우팅이란 라우팅 프로토콜을 이용하여 네트워크 정보를 서로 주고받으며 라우팅 테이블을 상시 자동적으로 생성, ㅅ유지하는 방식이다.

  • 그때그때의 트래픽 변화를 반영할 수 있다.
  • 링크 메트릭으로 계산된 코스트가 가작 적은 경로를 선택한다.

IP route 명령어

라우팅 테이블 확인
ip r
ip route
ip route show
ip route list
라우팅 추가
ip route add 192.168.0.0/24 via 192.168.0.201 dev eth0 # 정적 라우팅 정보 설정
ip route add default via 192.168.0.1 # 디폴트 게이트웨이 설정
라우팅 삭제
ip route del 192.168.0.0/24 # 정적 라우팅 정보 삭제
ip route del default via 192.168.0.1 # 디폴트 게이트웨이 삭제
관련 IP 명령어
ip link set eth0 up # eth0 인터페이스 활성
ip link set eth0 down # eth0 인터페이스 비활성
ip addr add dev eth0 192.168.0.201/24 # eth0 ip 설정
ip addr add dev eth0 192.168.0.201/24 broadcast 192.168.0.255 # eth0 ip & broadcast 설정
ip addr del dev eth0 192.168.0.201/24 # eth0 ip 삭제
ip route change deafult via 192.168.0.201 dev etho # IP경로 변경
ip route replace
ip -s route get 127.0.0.1/32
ip route flush table main # ip main route table 삭제
ip route flush 192.168.0.0/24 # 해당 route 삭제
ip route option

metric NUMBER # 라우터가 목적지로 가는 여러 가능한 경로 중에서 가장 좋은 경로를 선택하도록 도와줌. 메트릭이 가장 낮은 게이트웨이 방향으로 진행 preference NUMBER # 선호하는 라우트, 32비트 숫자
table TABLEID # 라우트를 추가할 테이블을 결정
dev INTERFACE # device name
via # nexthop router
nexthop NEXTHOP # 목적지까지 가기 위한 바로 다음의 라우터 또는 경로
src ADDRESS # 목적지로 보낼때 선호하는 주소
realm REALMID #
mtu # 패킷 또는 프레임의 최대 크기
kernel # 커널 자동구성동안에 라우트가 설치된다
boot # 부팅중에 라우트가 설치된다.
static # 정적라우팅. 관리자가 직접설정한 라우트


참고

https://m.blog.naver.com/PostView.nhn?blogId=hatesunny&logNo=220790654612&proxyReferer=https%3A%2F%2Fwww.google.com%2F
https://ko.wikipedia.org/wiki/IPv4
https://websecurity.tistory.com/94
https://engkimbs.tistory.com/622
http://korean-daeddo.blogspot.com/2016/01/blog-post_26.html
https://thebook.io/006718/part01/ch03/06/02/
https://edushare.tistory.com/62?category=802811