https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-a-subnet/

 

  1. 서론
    • 서브넷이 등장하기 이전,. 초기의 네트워크는 모든 장치가 하나의 네트워크로 이루어져 있었습니다 네트워크가 커질수록 네트워크 관리하기가 까다로워졌습니다. 이를 해결하기 위해 서브넷이란 개념이 등장하였고, 서브넷을 활용해 네트워크를 논리적으로 분할하여 효과적으로 관리할 수 있게 되었습니다. 
    • 이 글에서는 서브넷의 개념과 서브넷을 어떻게 활용하는지에 다루고자 합니다. 
  2. 들어가기 앞서
    • 서브넷의 개념에 대해 알고 싶다면, IP 주소에 대해 알아야 합니다.
    • IP 주소(IP Address)란?
      • IP(Internet Protocol)은 네트워크에서 장치들이 서로 통신을 할 수 있게 하는 프로토콜입니다.
      • 각 장치는 고유한 IP 주소를 할당받아, IP주소를 통해 호스트를 구분하여 데이터를 주고받습니다. 네트워크 주소와 호스트 주소로 구성되어 있으며, 일반적으로 32비트로 구성된 IPv4와 128비트로 구성된 IPv6 두 가지 버전을 가지고 있습니다.
      • IP 주소는 A, B, C, D, E 클래스로 나누며, 이에 따라 네트워크 ID와 호스트 ID를 구분합니다.
      • A클래스는 8비트의 네트워크 ID와 24비트의 호스트 ID로 구별되며, 첫 옥텟은 0~127(2^7 - 1), 호스트 ID는 2^24 - 2 만큼 가질 수 있습니다. 
      • B클래스는 16비트의 네트워크 ID와 16비트의 호스트 ID로 구별되며, 첫 옥텟은 128~191(2^6 - 1), 호스트 ID는 2^16 - 2 만큼 가질 수 있습니다. 
      • C클래스는 24비트의 네트워크 ID와 8비트의 호스트 ID로 구별되며, 첫 옥텟은 192~223(2^5 - 1), 호스트 ID는 2^8 - 2 만큼 갖을 수 있습니다. 
      • 예시로 192.168.1.1의 IPv4 주소를 기준으로 설명할 때,  첫 옥텟이 192이므로 C클래스 이며, 네트워크 영역은 192.168.0.0이며 호스트 영역은 1입니다. 
  3. 서브넷 개념
    • 서브넷(Subnet)은 하나의 큰 네트워크를 여러 개의 작은 네트워크로 논리적 분할하는 기술입니다. 
    • 서브넷IP 주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크로 표현할 수 있습니다. 네트워크를 나누기 위한 방법인 서브넷팅서브넷팅을 하기 위해 사용하는 서브넷 마스크이 있습니다.
    • IP 주소가 구성되는 방식을 통해 인터넷 라우터는 대상의 네트워크를 찾을 수 있습니다. 그러나 클래스 A 네트워크에는 수많은 연결된 장치가 있을 수 있으며 라우터가 대상의 장치를 찾는 데 시간이 걸릴 수 있습니다.
    • 서브넷은 IP 주소를 장치 범위 내에서 사용하도록 좁혀, 빠르고 간단하게 대상의 장치를 찾을 수 있습니다.
    • IP 주소는 네트워크 및 장치 주소를 나타내는 것으로 제한하므로 IP 주소를 사용하여 IP 패킷이 이동해야 하는 서브넷을 나타낼 수는 없습니다. 네트워크 내의 라우터는 서브넷 마스크라는 것을 사용하여 데이터를 하위 네트워크로 정렬합니다.
  4. 서브넷과 관련된 개념
    • 서브넷 마스크는 IP 주소에서 네트워크 ID와 호스트 ID를 분리하는 역할을 합니다.
    • CIDR(Classless Inter-Domain Routing)은 IP주소 할당 방법 중 하나로, IP 주소와 함께 서브넷 마스크를 사용하여 IP 주소 공간을 세밀하게 사용하기 위해 도입되었습니다. ex) 192.168.1.0/24
  5. 서브넷의 예시와 필요성   
    • 예시로, 당신이 ISP를 운영하고 있습니다. A라는 회사가 IP 주소 100여 개를 요청했습니다. 서브넷이 없다면 당신은 C 클래스의 IP 주소 하나를 A 회사에게 할당해야 합니다. ex) 192.168.1.x. 네트워크 주소와 브로드캐스트 주소를 제외한 192.168.1.1부터 192.168.1.255까지 100여 개만 필요한 A회사에게 모두 할당해야합니다. 
    • 이를 해결하기 위해서는 서브넷의 개념을 도입해야합니다. 위의 사례를 예시로 192.168.1.x에 100여 개 호스트를 할당하기 위해서는 서브넷 마스크를 지정해야 합니다.
    • 192는 C클래스임으로 24개의 네트워크 ID를 지정해야 하며, 100여 개의 호스트를 등록하고자 한다면 0 또는 1의 네트워크 ID를 추가할 수 있습니다. 만약 0부터 127번까지 A회사에 할당하고자 한다면 24개의 네트워크 ID를 구성해야 하며, 128부터 255까지 할당하고자 한다면 25개의 네트워크 ID를 구성해야 합니다. 이때 24 개의 네트워크 ID를 구성할 경우 0은 네트워크 주소, 127은 브로드캐스트 주소로 총 128 - 2개의 주소를 할당할 수 있습니다.
    • 서브넷을 이용해 각 클래스로 나눠진 네트워크를 서비스의 규모에 맞게 유연하게 분할하여 낭비되는 IP 주소를 최소화하며, 브로드 캐스팅에 사용되는 디바이스의 수를 최소화해 성능의 저하를 예방할 수 있습니다. 
  6. 서브넷 마스크의 원리와 설명  
    •  간단하게 설명하자면 서브넷팅은 서브넷 마스크의 bit 수를 증가시킵니다. 네트워크 ID의 비트 수를 추가할 때마다 네트워크 ID 수는 2배가 증가하고, 호스트 수는 2배 감소합니다.
    • 192.168.1.0/24을 기준으로 할당 가능한 호스트 ID의 수는 2^8 - 2 = 254개를 할당할 수 있습니다.
    • 192.168.1.0은 IPv4이며 C클래스임으로, 서브넷 마스크는 1111 1111. 1111 1111. 1111 1111. 0000 0000.으로 나타낼 수 있습니다. 네트워크 ID는 24개이며, 호스트 ID는 8개입니다. 호스트 ID의 8비트를 사용하여 192.168.1.1부터 192.168.1.254까지 호스트 ID를 할당할 수 있습니다.
    • 만약 192.168.1.0/25로 서브넷 마스크를 변경하게 된다면, 1111 1111. 1111 1111. 1111 1111. 1000 0000.으로 나타낼 수 있습니다. 네트워크 ID는 25개이며, 호스트 ID는 7개입니다. 호스트 ID의 7비트를 사용하여 192.168.1.129부터 192.168.1.254까지 호스트 ID를 할당할 수 있습니다. 
  7. 결론
    • 서브넷은 네트워크를 효율적으로 관리하고 확장 가능한 구조로 만드는 데 중요한 역할을 합니다. IP 주소를 효율적으로 할당하고 네트워크 트래픽을 관리할 수 있으며, 보안을 강화하고 네트워크 성능을 최적화하는 데 도움이 됩니다.. 서브넷을 사용하면 다양한 네트워크 환경에 대응할 수 있으며, 복잡한 네트워크 구조를 구축할 수 있습니다.
    • 서브넷은 네트워크 관리와 보안에 있어서 중요한 요소입니다. 적절한 서브넷 구성은 네트워크 성능을 향상하고 확장성을 높이는 데 도움 됩니다. 
  8. 참고 문헌
    1. https://aws.amazon.com/ko/what-is/cidr/ 
    2. https://ko.wikipedia.org/wiki/%EB%B6%80%EB%B6%84%EB%A7%9D 
    3. https://better-together.tistory.com/118 
    4. https://code-lab1.tistory.com/34
    5. https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-a-subnet/

 

들어가며

 - 용규씨, 네트워크 지식에 대해 아세요?

 - 어... 음, 대학에서 배웠습니다. 

 - OSI 7계층의 3계층에는 무슨 프로토콜이 있나요?

 - 어... 잠시만요... TCP와 UDP입니다.

 - .... 3계층은 네트워크 계층입니다.

 

 사람들은 살면서 많은 착각을 하고는 한다.

나의 경우에는 " 개발 실력만 있으면 충분하지 " 라는 착각이었다. IT에는 수 많은 분야가 있다.

새로운 이론이 정립되고 여러 파생 분야가 나뉘어도, 토대의 학문들과 유기적으로 연결된다.

개념과 원리를 모르고 무작정 갖다 사용하게 된다면 문제가 발생할 때, 누군가에게 의존해야 한다.  

 

 가령 나는 리눅스에 대해 얄팍한 지식을 갖고, 여러 서비스들을 호스팅했다. -

 배포 중 문제가 생길 때는 그 문제에 대한 응급 처치만 했다.

돌이켜보면 그동안 가벼운 문제만 생긴 것은 천운이다. 

만약 응급 처치들이 꼬이고 꼬여, 배포가 불가능한 상황까지 오게 되었다면?

그로 인해 수 많은 이용자와 회사의 피해를 생각하면 아찔하다. 

위태로운 줄 위를, 단순한 나무 다리로만 생각하고 있었다.

이제서야 네트워크, 리눅스, 운영 체제에 대해 중요성을 느끼게 되었다.


 

 

 서버를 배포할 때, 가장 중요하다고 생각하는 것은 어떻게 어디로 데이터를 전달하는 지이다.

AMAZON, MS, NAVER 등 간단한 인터페이스 조작을 통해서 공인 IP를 등록하고, 쉽게 서비스를 배포해주기에 간과하는 부분이지만 사설 서버를 다루게 된다면, 대기업이 해주었던 일들을 직접 해야만 한다.

네트워크는 어떻게 데이터를 전달하는 지 뿐만 아니라 데이터 교환 방법, 가용성, 신뢰성, 보안성 등 굉장한 큰 범위를 다루게 된다.

 

 

  1. 네트워크(Network)란? 
    • 컴퓨터나 다른 장치들이 상호 연결되어 데이터를 주고받을 수 있는 구조다. 네트워크는 자원 공유, 통신, 연결성, 자동화를 하기 위해 탄생
  2. 패킷(Packet)이란?
    •  데이터 통신에서 정보를 전송하는 데 사용하는 단위다. 네트워크를 통해 데이터를 주고 받을 때 데이터는 패킷으로 분할되어 전송하며, 수신자는 패킷을 조합하여 데이터를 받는 다. 각 각 암호화 복호화로 통칭한다.
      패킷은 헤더와 페이로드 또는 헤드와 페이로드, 트레일러로 구성되어 있다.
      • 헤더 : 송신자와 수신자의 주소, 데이터 유형, 전송 순서, 오류 검출 코드 등이 포함한다.
      • 페이로드 : 실제 전송되는 데이터이다.
      • 트레일러 : 오류 검출을 위한 코드나 체크섬을 포함한다. 패킷의 오류 검출 코드와의 차이는 위치이며 헤더의 오류 검출 코드는 헤더 부분의 오류 감지, 트레일러의 오류검출 코드는 전체 패킷의 오류를 감지해 무결성을 보장한다.
  3. OSI(Open Systems Interconnection) 7계층이란?
    • 컴퓨터 네트워크의 설계와 통신을 나타내기 위한 참조 모델, 통신 과정을 단계별로 분리하여 복잡성을 줄이고, 계층 간 인터페이스의 상호작용을 편하게 나타낼 수 있다.
      • 물리 계층
        • 데이터를 전송하는 데 케이블이나 전기같은 물리적 성질과 연결 방식, 전송 속도같은 비물리적 성질을 다룬다. 데이터를 전기적 신호를 변환, 물리적인 매체로 전송한다. 주로 이더넷, USB, WI-FI 등의 인터페이스 등이 여기에 구성되어 있다.
          • 전송률 : 실제 단위 시간 당 전달되는 데이터 양, bps로 표시
          • 대역폭 : 물리적을 네트워크에서 전달 가능한 최대 데이터 양을 의미, bps로 표시
          • bps : 초당 비트 단위
      • 데이터 링크 계층 
        • 인접한 네트워크 장치 간의 직접적인 통신을 다룬다. 프레임으로 데이터를 분할하고, 오류 검출 및 수정, 논리적인 주소 할당, 흐름 제어, 접근 제어 등의 기능을 수행한다.
          • 프레이밍 : 데이터를 프레임이라는 작은 단위로 나누어 전송
          • 프레임 : 데이터 링크 계층에서 사용되는 데이터의 전송 단위, 패킷 앞에 프레임 시작 신호(Frame Start Delimiter, FSD)라는 비트 패턴을 추가
          • MAC(Media Access Control) : 네트워크 인터페이스 카드에 할당된 고유한 식별번호로 네트워크 장치들이 서로 식별하고 통신할 때 사용
          • CRC(Cyclic Redundancy Check) : 순환중복 검사로 불리며 송신시 데이터의 비트열에 대해 다항식 연산을 수행해 체크섬을 생성, 수신시 체크섬을 계산후 비교해 데이터 무결성을 보호
      • 네트워크 계층
        • 패킷의 경로 선택, 여러 네트워크 간의 통신을 다룬다. 라우팅 알고리즘을 사용하여 데이터 패킷을 전송하고, 서브넷 관리 및 주소 할당을 수행한다.
          • IP(Internet Protocol) : 컴퓨터와 네트워크 장치를 식별해 네트워크 데이터를 주고 받는 데 사용되는 주요 프로토콜
          • IP주소 : 컴퓨터와 네트워크 장치를 식별, 주소를 32비트를 10진수로 표현하는 IPv4와 128비트를 16진수로 표현하는 IPv6 버전이 존재
          • DHCP(Dynamic Host Configuration Protocol) : 네트워크에 연결된 장치에 IP 주소 및 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소 등 기타 네트워크 구성 정보를 할당하는 프로토콜
            서브넷 마스크(Subnet Mask) : IP주소를 네트워크 ID와 호스트 ID로 식별, 255.255.255.0 기준으로 255.255.255는 네트워크 ID, .0은 호스트 ID
          • 기본 게이트웨이(Default Gateway): : 다른 네트워크나 인터넷으로 가는 경로를 제공, 주로 라우터를 사용
          • DNS 서버 주소(DNS Server Address) : IP주소를 도메인 이름으로 변환하거나 그의 반대를 할 때 사용 (구글 DNS서버 8.8.8.8, 8.8.4.4)
          • IP Suite : IP를 포함한 TCP, UDP, ICMP 등의 여러 프로토콜과 서비스의 집합
            라우터(Router) : 네트워크에서 데이터를 전송하는 장치(공유기 등), 외부 네트워크와 내부 네트워크를 연결 (내부 네트워크 192.168.x.x, 특수 네트워크를 제외한 나머지는 외부 네트워크)
          • 라우팅 : 패킷을 받아 목적지로 전달하기 위한 최적 경로를 결정, 다익스트라나 벨만 포드 알고리즘 사용
          • 서브넷 : 큰 네트워크를 더 작은 네트워크로 나눔. 서브넷 마스크를 이용하여 서브넷 ID와 호스트 ID 분할
      • 전송 계층
        • 종단간 통신을 제어, 데이터의 신뢰성을 다룬다. 데이터의 분할과 재조립, 흐름 제어, 오류 복구, 연결 관리 등을 담당한다.
          • TCP : 신뢰성 있는 데이터 전송을 보장하는 연결 지향적인 프로토콜로, 데이터의 분할과 재조립, 흐름 제어, 오류 복구, 연결 설정 및 해제 등을 담당. 데이터의 손실이 용인되지 않는 경우에 주로 사용됩니다.
          • UDP : 비연결형 프로토콜로, 연결 설정 과정이 없으며 데이터 전송만을 담당. 데이터의 신뢰성은 보장하지 않지만, 전송 속도가 빠르며 영상 전송 등 일부에서 사용
      • 세션 계층
        • 통신의 세션을 관리, 양 끝단 간의 상호 작용의 동기화를 다룬다.데이터의 동기화와 동시성 제어, 오류 복구 및 회복을 수행한다. 양 종점에서 통신의 동기화를 유지
          • 세션 : 
          • 동기화
          • 동시성제어
      • 표현 계층
        • 데이터의 형식을 변환 및 압축, 데이터 암호화와 복호화를 다룬다. 이 계층은 데이터의 구문 분석, 형식 변환, 암호화와 복호화를 수행에 데이터 교환을 지원한다.
          • MIME
      • 응용 계층
        • 응용 프로그램의 인터페이스를 다룬다.
          사용자 인터페이스, 데이터 처리, 데이터 전송에 관한 응용 프로그램 및 서비스에 대한 접근을 지원한다.
          • HTTP
          • FTP
          • SMP
 

 



 

+ Recent posts