IP주소 구조와 네트워크 기본 개념 정리
안녕하세요, 오늘은 네트워크의 기본이 되는 IP주소와 관련 개념들에 대해 알아보겠습니다. 이 글을 통해 네트워크의 개념을 이해하실 수 있을 것입니다.
IP 구조
- 해당 예시 주소는 두 부분으로 나눌 수 있습니다.
- 네트워크 ID: 192.168.1 (어느 네트워크인지 식별)
- 호스트 ID: 11 (해당 네트워크 내의 특정 기기를 식별)
A 클래스
A 클래스는 네트워크 주소를 표현하는 부분이 1개의 옥텟, 호스트 주소를 나타낼 수 있는 부분이 3개의 옥텟이기 때문에 2의8승(255) 개의 네트워크와 한 네트워크 당 2의24승(16,777,216)의 호스트 주소를 갖게 됩니다. 앞 옥텟의 주소가 0~127의 범위이면 이 주소는 A클래스입니다. 첫 옥텟을 이진수로 표기했을 때 2진수 8자리 중 맨 앞자리가 0인 주소가 A클래스입니다.
- 2진수로 옥텟이 0 000000 ~ 0 1111111인 주소가 A클래스가 됩니다.
B 클래스
B 클래스는 네트워크 주소를 표현하는 부분이 2개의 옥텟, 호스트 주소를 나타낼 수 있는 부분이 2개의 옥텟이기 때문에 2의16승(65,536) 개의 네트워크와 한 네트워크 당 2의16승(65,536)의 호스트 주소를 갖게 됩니다. 앞 옥텟의 주소가 128~191의 범위이면 이 주소는 A클래스입니다. 첫 옥텟을 이진수로 표기했을 때 2진수 8자리 중 맨 앞자리가 0인 주소가 A클래스입니다.
- 2진수로 옥텟이 10 000000 ~ 10 1111111인 주소가 B클래스가 됩니다.
C 클래스
C 클래스는 네트워크 주소를 표현하는 부분이 3개의 옥텟, 호스트 주소를 나타낼 수 있는 부분이 1개의 옥텟이기 때문에 2의24승(16,777,216) 개의 네트워크와 한 네트워크 당 2의1승(255)의 호스트 주소를 갖게 됩니다. 앞 옥텟의 주소가 192~223의 범위이면 이 주소는 B클래스입니다. 첫 옥텟을 이진수로 표기했을 때 2진수 8자리 중 맨 앞자리가 0인 주소가 A클래스입니다.
- 2진수로 옥텟이 110 000000 ~ 110 1111111인 주소가 C클래스가 됩니다.
클래스풀과 클래스리스
클래스풀
기존에 설명했던 IP주소 체계를 클래스풀이라고 부릅니다. IP 주소 체계를 처음 만들었을 때는 클래스 개념을 도입한 것이 확장성이 있고 주소 낭비가 적은 최적의 조건을 만들 수 있었던 좋은 선택이었습니다. 이 주소 쳬계에서는 네트워크 주소와 호스트 주소를 구분짓는 구분자(서브넷 마스크)가 필요없습니다.
클래스리스
IP 주소 부족과 낭비 문제를 해결하기 위해 3가지 보존, 전환전략을 만들어 냈는데 그 중 첫 번째 단기 대책이 클래스리스, CIDR 기반의 주소 체계였습니다. 현재 우리가 사용하는 주소 체계는 클래스 개념을 적용하지 않는 클래스리스 기반 주소 체계입니다. 클래스리스 네트워크에서는 별도로 네트워크와 호스트 주소를 나누는 구분자를 사용해야 하는데 이 구분자를 서브넷 마스크라고 부릅니다.
서브넷 마스크
서브넷 마스크는 IP 주소와 네트워크 주소를 구분할 때 사용하는데 2진수 숫자 1은 네트워크 주소, 0은 호스트 주소로 표시합니다. 우리가 편하게 받아들일 수 있는 10진수를 사용해 255.0.0.0, 255.255.0.0 255.255.0와 같이 표현합니다. 2진수 11111111을 10진수로 표현하면 255가 되어 255는 네트워크 주소, 0은 호스트 주소 부분으로 구분됩니다.
- A 클래스 : 255.0.0.0
- B 클래스 : 255.255.0.0
- C 클래스 : 255.255.255.0
패킷(packet)
패킷은 컴퓨터 네트워크에서 데이터를 전송하는 기본 단위로, 헤더와 페이로드로 나뉩니다. 패킷의 최대 크기는 MTU (Maximum Transmission Unit)로, 1500바이트입니다. 헤더에는 IP version, 출발지 IP, 목적지 IP, 프로토콜, TTL (Time To Live)등 패킷의 라우팅과 처리에 필요한 정보를 포함합니다. 페이로드에는 우리가 실제 보내는 데이터가 포함되어 있습니다.
- MTU: 1500바이트
- 헤더: 20바이트
- 페이로드: 1480바이트
인캡슐레이션과 디캡슐레이션
인캡슐레이션
애플리케이션에서 데이터를 데이터 플로 계층으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할하는데 이 과정을 인캡슐레이션이라고 부릅니다.
- 과정
- 4계층에서 상위계층의 스트림 데이터를 세그먼트 단위로 쪼개고 4계층의 정보를 헤더에 추가한다.
- 3계층에서 세그먼트를 패킷 단위로 쪼개고 3계층의 정보를 헤더에 추가한다.
- 2계층에서 프레임 단위로 쪼개 2계층의 정보를 헤더에 추가한다.
- 전기 신호로 변환해 수신자에게 전송합니다.
인캡슐레이션하는 과정에서 헤더에 넣는 정보들이 꽤 많아 많은 공부가 필요합니다. 하지만 이런 복잡한 정보들에도 규칙이 있으며 헤더에 두가지 정보는 반드시 포함되어야 합니다.
- 현재 계층에서 정의하는 정보
- 상위 프로토콜 지시자 (부가적인 설명)
- 프로토콜 스택은 상위 계층으로 올라갈수록 종류가 많아집니다. 3계층 프로토콜인 IP는 4계층에서 다시 TCP와 UDP로 나뉘고 그보다 더 상위 계층에서는 FTP, HTTP, SMTP, POP3 등 더 다양한 프로토콜로 다시 나뉩니다.
- 인캡슐레이션 과정에서는 상위 프로토콜이 많아도 문제가 없지만 디캡슐레이션 하는 목적지 쪽에서는 헤더에 아무 정보가 없으면 어떤 상위 프로토콜로 오려보내 주어야 할지 결정할 수 없습니다.
디캡술레이션
- 과정
- 받은 전기 신호를 데이터 형태로 만들어 2계층을 올려 보냅니다.
- 2계층에서는 송신자가 작성한 2계층 헤더에 포함된 정보를 확인합니다. 참고로 데이터 상위 계층은 2계층의 헤더 정보는 필요 없으므로 벗겨내고 보내줍니다.
- 목적지가 자신이 아니라면 자신에게 온 패킷이 아니므로 폐기 처분
- 반대로 맞다면 3계층으로 이 정보를 보내줍니다.
- 3계층에서 헤더 정보를 확인하고 4계층으로 올려보내줍니다.
- 4계층도 2,3계층과 같은 과정으로 상위 계층으로 올려 줍니다.
MSS & MTU(데이터 크기 조절)
네트워크에서 수용할 수 있는 크기를 역산정해 데이터가 4계층으로 내려올 때 적절한 크기로 쪼개질 수 있도록 유도하는데 이값을 MSS(Maximum Segment Size)라고 부릅니다.
- MSS는 4계층에서 가질 수 있는 최대 데이터 값
네트워크에서 한 번에 보낼 수 있는 데이터 크기를 MTU(Maximum Transmission Unit)라고 부르며 일반적인 이더넷에서 수용할 수 있는 크기를 지칭합니다.
- 크기는 1500바이트
- IP 헤더와 TCP 헤더의 표준 헤더 크기는 일반적으로 각각 20바이트 이므로 MSS값을 1460 바이트로 사용합니다.
TTL 및 분할
TTL(Time To Live)은 패킷의 수명을 나타내며, 각 라우터를 통과할 때마다 1씩 감소합니다. MTU 크기 차이로 인해 패킷이 분할될 수 있으며, 이는 수신 측에서 재조립됩니다.
- 예시
- MTU: 1500바이트
- 라우터 MTU: 1400바이트
- 패킷이 분할되어 전송됨
인터넷 설정 자동화를 위한 DHCP
DHCP (Dynamic Host Configuration Protocol)는 네트워크 설정을 자동화하는 프로토콜입니다. DHCP 서버는 클라이언트에게 IP 주소, 서브넷 마스크, 게이트웨이 주소 등을 할당합니다.
- 예시
- DHCP 서버: IP 주소를 할당
- 클라이언트: IP 주소를 수신
- 네트워크 주소: 192.168.0.0/24
- 브로드캐스트 주소: 192.168.0.255
ARP (Address Resolution Protocol)
ARP는 IP 주소에서 MAC 주소를 알아내는 프로토콜입니다. 네트워크 통신을 위해 필요합니다.
- 예시
- IP 주소: 192.168.0.1
- MAC 주소: 00:1A:2B:3C:4D:5E
핑(Ping) 및 RTT
핑(Ping) 유틸리티는 특정 호스트에 대한 RTT (Round Trip Time)를 측정하는 데 사용됩니다. ICMP 프로토콜을 사용하며, 네트워크 연결 상태를 확인하는 데 유용합니다.
- 예시
- 핑 명령어: ping 8.8.8.8
- 결과: RTT = 20ms
이상으로 IPv4 주소 및 네트워크 관련 주요 개념들을 정리해 보았습니다. 네트워크를 이해하는 데 도움이 되길 바랍니다.
Reference
[1] 고재성, 이상훈. "IT 엔지니어를 위한 네트워크 입문." 길벗, 2022.