2-1: 리소스 위치와 트래픽 라우팅: IPv4(1)

독수리박박·2024년 3월 10일
0

이 글은 go언어를 활용한 네트워크 프로그래밍을 기반으로 작성되었습니다


💻리소스 위치와 트래픽 라우팅💻

효과적인 네트워크 프로그램을 작성하기 위해서는 세 가지를 알아야 한다.

  • 인터넷상에서 어떠한 노드를 식별하기 위해 인간이 읽을 수 있는 이름(도메인 네임)을 사용하는 방법
  • 인터넷상 두 노드 간의 트래픽이 지구 반대편에 있더라도 전달되는 방법
  • 도메인 네임이 네트워크 장치가 사용할 주소로 변환되는 방법

인터넷 프로토콜

인터넷 프로토콜(Internet Protocol)은 네트워크, 특히 인터넷을 통해 전송되는 데이터의 포맷과 규칙들을 정의해 놓은 프로토콜이다. IP주소는 TCP/IP 스택의 인터넷 계층에서 네트워크의 노드를 식별하고, 이를 사용하여 노드 간의 통신을 용이하게 해준다.

예를 들자면 우편 주소와 같은 것이다.
1. 노드는 패킷을 목적지 노드의 IP주소로 전송하여 다른 노드로 패킷을 보낸다.
2. 관습적으로 우편물에 반환 주소를 포함하듯이 패킷의 헤더에도 출발지 노드의 IP 주소를 포함시킨다.
3. 일부 프로토콜(TCP)에서는 성공적인 전달에 대한 승인이 필요하며, 목적지 노드는 출발지 노드의 IP주소를 사용하여 전달 확인을 보낸다.

현재 공용으로 사용되는 IP주소 버전은 IPv4,IPv6 두 가지 버전이 존재한다.


IPv4

IPv4 주소 지정

IPv4는 말 그대로 IP의 네번째 버전이다. IPv4의 주소는 옥텟이라고도 불리는 8비트로 구성된 네 개의 그룹으로 이루어진 32비트 숫자이다.

32비트가 표현할 수 있는 수인 대략 40억개의 주소를 표현할 수 있으며 아래의 그림은 해당 프로토콜의 이진수 및 십진수 표현을 보여준다.

  • 첫 번째 줄은 이진수 그대로의 표현을 보여준다, 하지만 이런 표현은 한눈에 읽기 쉽지 않기 때문에 주소를 표현하거나 코드로 작성할 때에는 더 읽기 쉬운 십진수 형식으로 사용한다.

네트워크 ID와 호스트 ID

IPv4 주소를 구성하고 있는 32비트는 네트워크ID호스트ID 이 두 가지 구성 요소로 나타낸다.

네트워크ID는 패킷이 목적지를 향해 전달되도록 하는 역할을 하는 네트워크 장치에 어느 홉으로 가야 하는지 알려 주는 역할을 한다. 이러한 장치를 라우터라고 한다. 라우터는 장치로 부터 데이터를 수신하고, 목적지 주소의 네트워크 ID를 검사하며, 데이터가 목적지까지 도달하기 위해 전송되어야 하는 위치들을 결정한다. 네트워크ID는 택배의 도로명이나 우편번호라고 생각하면 좋다.

만약 데이터가 라우터가 지정해준 경로를 따라서 목적지에 잘 도착했다면 라우터는 호스트ID를 사용하여 특정 수신자에게 데이터를 전송한다. 호스트ID는 자신이 살고 있는 세부 동,호수로 생각하면 좋다.

아래의 그림은 동일한 네트워크ID를 공유하는 노드 그룹이다.

동일한 네트워크ID 가진 노드들이 네트워크에 노드 그룹을 형성하며 참여하고 있다.

32비트 중 네트워크ID와 호스트ID가 각각 몇 비트를 차지하고 있을지는 네트워크 주소마다 모두 다르다. 아래 그림을 참고하면 쉽게 알 수 있다.

네트워크ID 부분은 항상 가장 왼쪽 부분부터 시작하며 해당 비트의 크기는 해당 주소가 속한 네트워크 크기에 따라 결정된다. 나머지 비트는 호스트ID를 나타낸다.

아래의 예시를 통해서 192.168.156.97이라는 IP 주소의 네트워크ID와 호스트 ID를 얻어보자. 이 IP주소는 16비트의 네트워크ID를 가지고 있다.

네트워크ID의 크기가 16비트이기 떄문에 첫 16비트를 포함하고 나머지 16비트는 0으로 채워넣어서 네트워크ID는 192.168.0.0이 된다. 마찬가지로 호스트ID는 앞 16비트를 0으로 채워넣고 나머지 16비트를 포함하는 0.0.156.97이 되게 된다.


IPv4 주소를 서브넷으로 세분화

위와 같은 특성을 활용하여 40억개 이상의 IPv4 주소를 더 작은 그룹으로 세분화 할 수 있게 된다. 이런 관리는 네트워크를 더욱더 안전하게 관리할 수 있게 해주며 이런 소규모 네트워크는 동일한 네트워크ID를 가지지만 고유한 호스트ID를 갖게 된다. 네트워크의 크기는 호스트ID의 개수를 의미하며, 같은 말로 네트워크 내의 존재하는 모든 IP 주소의 개수가 네트워크의 크기를 의미한다.

서브넷은 다양하게 쓰일 수 있다.

  • 하나의 네트워크를 퍼블릭 서비스용, 프라이빗 서비스용 으로 분할
    ex) 은행 시스템에서 퍼블릭 서비스의 트래픽이 은행 내부 직원용 서비스의 트래픽에 부하를 가하지 못하게 하는 시스템

0개의 댓글