본 글은 '이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 책을 읽고 정리한 글입니다.
이번 글에서는 LAN 간의 통신을 위해 사용하는 기술 중 가장 핵심적인 프로토콜인 IP(Internet Protocol)에 대해 알아보려고 한다.
✔️ IP의 목적과 특징
IP의 목적은 크게 주소 지정과 단편화로 나뉜다.
1. 주소 지정
주소 지정은 네트워크 간 통신 과정에서 호스트를 특정하는 것을 의미하며, IP 주소를 통해 이루어진다. 주소 지정을 위해 필요한 송신지와 수신지의 IP 주소는 IP 패킷 헤더에 포함된다.
IP 주소는 총 4byte(32bit)의 크기로 구성되며, 숫자 당 0~255 범위의 10진수 4개로 표기된다. 각 10진수는 `.`으로 구분하는데, 이때 하나의 10진수를 옥텟이라고 한다.
MAC 주소와 IP 주소를 택배 배송 과정에 빗대어 본다면, MAC 주소는 수신인과 발신인, IP 주소는 수신 주소와 발신 주소라고 할 수 있다. 패킷을 올바르게 전송하기 위해서는 MAC 주소와 IP 주소가 모두 필요하고, 패킷의 송수신 과정에서 MAC 주소보다 IP 주소가 우선적으로 활용된다.
서로 다른 네트워크에 속한 두 호스트가 네트워크 간 통신을 수행할 때, IP 주소를 바탕으로 목적지까지 IP 패킷을 전달하는 네트워크 장비로 라우터가 있다. 라우터는 네트워크 계층에 속한 핵심 장비로, 전달받은 패킷을 목적지까지 전달하는 역할을 한다. 우리가 흔히 알고 있는 라우터로는 공유기가 있다.
2. 단편화
단편화는 데이터를 여러 IP 패킷으로 올바르게 쪼개어 보내는 것을 의미한다. 전송하고자 하는 IP 패킷의 크기가 MTU 보다 클 경우에는 패킷을 MTU 이하의 여러 패킷으로 쪼개어 전송하고, 이는 수신지에서 재조합된다.
*MTU(Maximum Transmission Unit): 최대 전송 단위, 일반적으로 1500바이트 사이즈
IP 패킷 헤더에서 단편화와 관련된 필드는 식별자, 플래그, 단편화 오프셋이다.
- 식별자 : 특정 패킷이 어떤 데이터에서 쪼개진 패킷인지 식별하기 위한 필드. 같은 정보에서 쪼개진 패킷은 같은 식별자를 공유하므로 단편화되어 전송되는 패킷인지 구분할 수 있다.
- 플래그 : 3비트로 구성된다. 첫 비트는 항상 0이고 뒤 2비트는 DF와 MF라는 이름이 붙어있다. DF는 IP단편화를 수행하지 말라, MF는 단편화된 패킷이 더 있다는 표시를 나타내기 위한 비트이다.
- 단편화 오프셋 : 특정 패킷이 초기 데이터에서 얼마나 떨어져 있는지를 명시한 필드로, 재조합할 때 올바른 순서를 나타내는 데 사용된다.
신뢰할 수 없는 통신과 비연결형 통신
IP는 신뢰할 수 없는 프로토콜이자, 비연결형 프로토콜이다.
신뢰할 수 없는 프로토콜이란 패킷이 수신지까지 제대로 전송되었다고 보장하지 않는 프로토콜을 의미한다. 신뢰할 수 없는 프로토콜의 송수신은 신뢰할 수 없는 통신, 신뢰성이 낮은 통신 혹은 최선형 전달이라고 부른다. 최선형 전달은 어떠한 보장도 하지 않는 전송을 말한다.
비연결형 프로토콜은 패킷을 주고받기 전에 사전 연결 과정을 거치지 않는 것을 말한다. 따라서 상대 호스트의 수신 가능 여부를 고려하지 않고 무작정 전송하게 된다.
IP의 이러한 특징은 전송계층 TCP의 등장 배경이 되기도 한다.
✔️ IP 주소의 구조
IP주소는 `.`으로 구분된 4개의 10진수로 이루어지며, 각 10진수는 0~255의 범위에서 정해진다. `ex. 172.16.12.45`
8비트 씩 4개, 총 32비트로 구성된다.
IP주소는 네트워크 주소와 호스트 주소로 나뉘는데, 네트워크 주소는 호스트가 속한 네트워크를 특정하기 위해 사용되며, 호스트 주소는 네트워크에 속한 호스트를 특정하기 위해 사용된다.
* 네트워크 주소 == 네트워크ID, 네트워크 식별자
* 호스트 주소 == 호스트ID, 호스트 식별자
그런데 IP주소에서 네트워크 주소의 크기와 호스트 주소의 크기는 유동적일 수 있다. 이때 네트워크 주소와 호스트 주소에 적당한 공간을 할당하는 것이 중요한데, 이를 위해 생겨난 개념이 IP주소의 클래스다.
✔️ 클래스풀 주소 체계 (Classful Addressing)
클래스는 네트워크의 크기에 따라 유형별로 IP주소를 분류하는 기준으로, 이를 이용해서 네트워크 주소와 호스트 주소의 크기를 알 수 있다. 클래스는 A, B, C, D, E 5가지가 있고 그 중 A, B, C만 IP주소를 네트워크 크기별로 분류하는데 사용된다.
이러한 클래스를 바탕으로 IP주소를 관리하는 주소 체계를 클래스풀 주소 체계라고 한다.
클래스 A, B, C는 이렇게 구성된다.
- A 클래스: 비트 `0`으로 시작, 네.호.호.호
- B 클래스: 비트 `10`으로 시작, 네.네.호.호
- C 클래스: 비트 `110`으로 시작, 네.네.네.호
아래 그림처럼 첫 옥텟의 주소만 보고 어떤 클래스에 속한 IP주소인지 알 수 있다.
클래스풀 주소 체계는 클래스 별로 네트워크 크기가 고정되어 있고 할당 가능한 호스트 IP 주소의 수는 아래와 같다.
- A 클래스: 약 1,600만 개 (24비트)
- B 클래스: 약 6만 개 (16비트)
- C 클래스: 약 254개 (8비트)
만약 클래스풀 주소 체계를 사용하여 300명의 직원이 사용할 컴퓨터를 동일 네트워크로 구성하고 싶다면, C 클래스로는 호스트 주소가 부족하니 B 클래스를 이용해야 한다. 그러면 6만 개 중 300개만 사용하므로 IP주소가 낭비되는 문제가 생긴다.
이러한 문제를 해결하기 위해 클래스리스 주소 체계를 사용한다.
✔️ 클래스리스 주소 체계 (Classless Addressing)
클래스리스 주소 체계는 클래스가 아닌 서브넷 마스크를 이용하여 네트워크와 호스트를 구분하는 방식이다.
서브넷 마스크
서브넷 마스크는 IP주소에서 네트워크 주소를 1로 표기하고, 호스트 주소를 0으로 표기한 비트열이다. 여기서 서브넷이란 서브네트워크의 줄임말로 IP주소에서 네트워크 주소로 구분할 수 있는 네트워크의 부분집합이다.
이처럼 서브넷 마스크를 이용해 원하는 크기로 클래스를 잘게 쪼개어 사용하는 것을 서브네팅이라고 한다.
클래스풀 주소 체계에서 A, B, C 클래스의 기본 서브넷 마스크는 다음과 같이 표현할 수 있다.
서브넷 마스크와 IP주소 간에 AND 연산을 수행하면 IP 주소 내의 네트워크 주소를 알아낼 수 있다.
✔️ 공인 IP 주소와 사설 IP주소
호스트의 IP주소는 명령어 또는 온라인 검색으로 확인할 수 있다.
명령어로 찾으려면 윈도우는 ipconfig/all , 맥OS나 리눅스는 ipconfig로 확인할 수 있다.
나는 맥을 사용하므로 맥 예시만 가져와봤다.
그런데 IP 주소를 명령어로 확인했을 때와 온라인 검색으로 확인했을 때 나오는 값이 다를 수 있는데
그건 고유한 IP 주소도 있고, 고유하지 않은 IP 주소도 있기 때문이다.
여기서 고유한 주소를 공인 IP 주소라고 하고, 고유하지 않은 주소를 사설 IP 주소라고 한다.
공인 IP 주소는 전 세계에서 고유한 IP 주소이다. 인터넷과 같은 네트워크 간 통신에서 사용되는 IP 주소가 바로 공인 IP 주소이다. 공인 IP 주소는 ISP나 공인 IP 주소 할당 기관을 통해 할당받을 수 있다.
사설 IP 주소는 외부 네트워크에 공개되지 않은 사설 네트워크에서 사용하기 위한 IP 주소이다. 사설 네트워크는 공유기(라우터)를 중심으로 구성된 LAN을 말한다.
다음 주소 범위가 사설 IP 주소의 범위이다.
✔️ IP 주소의 할당
호스트에 IP 주소를 할당하는 방식은 정적 할당과 동적 할당 두 가지 방식이 있다.
정적 할당
정적 할당은 수작업으로 IP 주소를 부여하는 방식으로, 정적 할당을 통해 할당된 주소를 정적 IP 주소라고 한다. 설정에서 IP 주소를 수동으로 설정하도록 변경할 수 있다.
정적 IP 주소를 부여하기 위해서 일반적으로 정적 IP 주소를 부여하고자 하는 IP 주소와 서브넷 마스크, 게이트웨이 주소, DNS 주소 등이 필요하다.
- 게이트웨이 : 서로 다른 네트워크를 연결하는 하드웨어적/소프트웨어적 수단
- 기본 게이트웨이 : 호스트가 속한 네트워크의 외부로 나가기 위한 첫 기본 경로, 보통 공유기 주소를 의미한다.
- DNS 주소 : 호스트가 도메인 네임을 토대로 IP 주소를 알아내기 위해 질의하는 서버의 주소
- 도메인 네임 : IP 주소에 대응되는 문자열 (식별용) `ex. google.com`
호스트가 도메인 네임에 대응되는 IP주소를 알아내려면 <도메인 네임, IP 주소> 쌍을 저장하는 DNS 서버에 질의해야 한다.
동적 할당: DHCP
동적 할당은 프로토콜을 통해 자동으로 IP 주소를 부여하는 방식으로, 동적 할당을 통해 할당된 IP 주소를 동적 IP 주소라고 한다. 이때 가장 흔히 사용되는 프로토콜이 DHCP(Dynamic Host Configuration Protocol)이다.
호스트는 DHCP 서버와 메세지를 주고받으며 동적 IP 주소를 할당받을 수 있다. DHCP 서버는 호스트에 할당 가능한 IP 주소 목록을 관리하다가, IP 주소 할당 요청을 받았을 때 할당해주는 호스트다. 일반적으로 라우터(공유기)가 DHCP 서버 역할을 수행한다.
- 동적 IP 주소에는 사용 가능한 기간이 정해져 있다.
- 동적 IP 주소는 할당받을 때마다 다른 주소를 받을 수 있다.
DHCP로 할당받은 IP 주소는 사용할 기간이 정해져 있고, 사용되지 않을 경우 회수되며, 사용 기간이 끝난 IP 주소는 DHCP 서버로 반납된다.
DHCP를 통한 IP 주소의 동적 할당은 ‘IP 주소의 임대’라고 표현을 하기도 한다. 추가로 IP 주소의 임대 기간이 끝나기 전에 기간을 연장할 수도 있는데, 이를 임대 갱신이라고 한다. 기본적으로 임대 갱신은 자동으로 두 차례 수행되고, 두 번의 임대 갱신이 모두 실패하면 그때 IP 주소는 DHCP 서버로 반납된다.
✔️ IP 전송 특징의 보완: ICMP
IP는 신뢰할 수 없는 프로토콜이자 비연결형 프로토콜이라는 특징이 있다고 했다. 이러한 전송 특징을 보완하기 위한 프로토콜로 ICMP가 있다.
ICMP는 IP 패킷의 전송 과정에 대한 피드백 메세지를 얻기 위해 사용되는 프로토콜로, ICMP 메세지를 통해 패킷이 상대방에게 어떻게 전송되었는지를 알려줄 수 있어 IP 전송의 결과를 엿볼 수 있다.
ICMP 메세지는 전송 과정에서 발생한 오류 보고와 네트워크에 대한 진단 정보로 유형이 나뉜다.
✔️ IP 주소와 MAC 주소의 대응: ARP
패킷의 송수신 과정에서 상대 호스트의 IP 주소는 알고, MAC 주소는 모르는 상황이 있을 수 있는데 이때 사용하는 프로토콜이 ARP이다.
ARP는 IP 주소와 MAC 주소를 함께 활용하는 통신 과정에서 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아내는 프로토콜이다.
ARP 동작 과정
IP 주소를 통해 MAC 주소를 알아내는 과정은 ARP 요청 메세지와 ARP 응답 메세지를 통해 이루어진다.
ARP 요청은 네트워크 내에 있는 모든 호스트에게 보내는 메세지로 (브로드캐스트 메세지), 알고싶은 MAC 주소에 대응되는 IP 주소를 포함한다.호스트들은 ARP 요청 메세지에 포함된 IP 주소를 확인하여 자신의 IP 주소일 경우에 ARP 응답 메세지를 전송한다.
ARP를 활용하는 호스트는 ARP 테이블이라고 해서 <IP 주소, MAC 주소> 쌍을 저장하는 테이블에 정보를 유지한다.
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 2. 물리 계층과 데이터 링크 계층 (1) | 2025.05.15 |
---|---|
[네트워크] 1. 네트워크 기본 (5) | 2025.05.07 |