네트워크 계층

고성인·2025년 11월 13일

CS

목록 보기
15/17

네트워크 계층

LAN을 넘어서 다른 네트워크와 통신하기 위해서는 네트워크 계층을 이용해야 한다.
네트워크 계층에서는 IP주소를 이용해 송수신지 대상을 지정하고, 라우팅을 통해 다른 네트워크와 통신한다.

인터넷 프로토콜

인터넷 프로토콜은 IP라고 불리며, v4와 v6 두 버전이 존재한다.

IP주소 형태

IP주소는 4바이트로 주소를 표현할 수 있고, 숫자당 8비트로 표현되기에 0~255범위 안에 있는 네 개의 10진수로 표기된다.

IP의 기능

IP의 기능에는 크게 다음과 같은 두 가지가 있다.

  • IP 주소 지정: IP 주소를 바탕으로 송수신 대상을 지정하는 것
  • IP 단편화: 전송하고자 하는 패킷의 크기가 MTU라는 최대 전송 단위보다 클 경우 이를 MTU크기 이하의 복수 패킷으로 나누는 것

MTU란 한 번에 전송 가능한 IP 패킷의 최대 크기로 일반적으로 1500바이트이다.

IPv4

IPv4 패킷은 다음과 같이 헤더와 페이로드로 나뉜다.

해당 패킷 헤더에서 핵심 부분은 식별자, 플래그, 단편화 오프셋, TTL, 프로토콜, 송신지 IP 주소, 수신지 IP 주소 총 7가지이다.

  • 식별자: 패킷에 할당된 번호로 IPv4패킷이 여러 조각으로 전송되었다면 이들을 재조합할 때 사용된다.
  • 플래그: 총 세 개의 비트로 구성된 필드로, 첫번째 비트는 항상 0으로 현재는 사용되지 않는다.
    나머지 두 개의 비트 중 하나는 DF라는 이름의 비트로 1로 설정될 경우 IP 단편화를 수행하지 않는다.
    나머지 하나의 비트는 MF로 단편화된 패킷이 더 있는지를 나타낸다
  • 단편화 오프셋: 패킷이 단편화되기 전 패킷의 초기 데이터에서 몇 번째로 떨어진 패킷인지 나타내며, 패킷이 순서대로 도착하지 않을 수 있기 때문에 사용되어진다.
  • TTL: Time To Live의 약어로 패킷의 수명을 의미한다.
    패킷이 호스트 또는 라우터에 한 번 전달되는 것을 홉 이라고 하며, TTL은 홉마다 1씩 감소한다.
  • 프로토콜: 상위 계층의 프로토콜이 무엇인지 나타내는 필드이다.
  • 송신지, 수신지 IP 주소: 송수신지의 IPv4주소를 나타낸다.

IPv6

IPv4 주소는 이론적으로 약 43억개 할당 가능하기 때문에 절대적인 수가 부족하다.
그렇기 때문에 IPv6가 등장하게 되었다.
IPv6 주소는 16바이트로 주소를 표현할 수 있고 : 으로 구분된 8개 그룹의 16진수로 표기된다.
IPv6의 패킷은 다음과 같이 구성된다.

  • 다음 헤더: 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가리킨다.
  • 홉 제한: IPv4패킷의 TTL과 비슷하게 패킷의 수명을 나타낸다.
  • 송신지, 수신지 IP 주소: 송수신지의 IPv6주소를 나타낸다.

ARP

ARP는 동일 네트워크 상에서 상대 호스트의 IP주소는 알지만 MAC주소는 알지 못하는 상황에서 사용하는 프로토콜이다.
다음과 같은 과정을 통해 IP주소를 통해 MAC주소를 알아낼 수 있다.

  1. ARP 요청: 네트워크 내 모든 호스트에게 브로드캐스트 메시지를 보낸다.
  2. ARP 응답: 해당하는 IP를 가진 호스트는 자신의 MAC주소를 담은 메시지를 유니캐스트로 전송한다.
  3. ARP 테이블 갱신: ARP 테이블에 IP주소와 MAC주소를 매핑시켜 저장한다.

만약 다른 네트워크에 속한 호스트의 MAC주소를 알기 위해서는 네트워크 외부로 나가기 위한 라우터의 MAC주소를 알아낸 뒤 해당 라우터가 ARP요청을 반복하여 알아낼 수 있다.

IP 주소

하나의 IP 주소는 네트워크 주소와 호스트 주소로 이루어진다.
네트워크 주소는 호스트가 속한 네트워크를 식별하는 역할, 호스트 주소는 네트워크 내에 특정 호스트를 특정하는 역할을 한다.

네트워크 주소와 호스트 주소

IP 주소에서 네트워크 주소화 호스트 주소를 구분하는 범위는 유동적일 수 있다.
이때 호스트 주소 공간을 크게 할당하면 할당되지 않은 IP 주소가 낭비될 수 있고, 너무 작게 할당하면 호스트가 사용할 IP 주소가 부족해질 수 있다.

클래스풀 주소 체계

클래스는 네트워크 크기에 따라 IP 주소를 분류하는 기준으로, 클래스를 기반으로 IP 주소를 관리하는 주소 체계를 클래스풀 주소 체계라고 한다.
대표적으로 A, B, C클래스가 존재한다.

클래스리스 주소 체계

클래스풀 주소 체계는 클래스별 네트워크의 크기가 고정되어 있기 때문에 다수의 IP주소가 낭비될 가능성이 크다.
그렇기 때문에 더 유동적이게 네트워크를 구획할 수 잇는 클래스리스 주소 체계가 등장하게 되었다.

서브넷 마스크

클래스리스 주소 체계의 IP주소상에서 네트워크 주소와 호스트 주소를 구분짓기 위해 사용한다.
IP주소상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열을 의미한다.
비트 AND 연산을 통해 네트워크 주소와 호스트 주소를 구분짓는다.

서브넷 마스크는 255,255,255,0과 같이 10진수로 표기하는 방법과 IP주소/서브넷 마스크상의 1의 개수로 표기하는 CIDR 표기법이 존재한다.

공인 IP 주소와 사설 IP 주소

공인 IP 주소

공인 IP 주소는 전 세계에서 고유한 IP 주소이다.

사설 IP 주소와 NAT

사설 IP 주소는 사설 네트워크에서 사용하기 위한 IP주소이다.
다음과 같은 범위에 속하는 IP주소는 사설 IP주소로 약속되어 있다.

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

사설 IP주소의 할당 주체는 일반적으로 라우터이며, 해당 호스트가 속한 사설 네트워크상에서만 유효한 주소이므로 다른 네트워크의 사설 IP주소와 중복될 수 있다.

사설 IP주소를 사용하는 호스트가 외부 네트워크와 통신하기 위해 NAT라는 기술을 사용해야 한다.
NAT는 IP주소를 변환하는 기술로, 사설 IP주소를 공인 IP주소로 변환하는데 사용된다.

정적 IP주소와 동적 IP주소

호스트에 IP주소를 할당하는 방법에는 정적 할당과 동적 할당 두 가지 방법이 존재한다.
정적 할당은 수동으로 이루어지며, 동적 할당은 DHCP라는 프로토콜을 통해 이루어진다.

정적 할당

호스트에 직접 IP주소를 부여하는 방식으로, 이렇게 할당된 IP주소를 정적 IP주소 라고 부른다.
하지만 정적 할당은 호스트의 수가 많아질 경우 관리가 불편할 수 있다.

동적 할당

IP주소를 직접 부여하는 것이 아닌 자동으로 할당되는 것으로, 이렇게 할당된 IP주소를 동적 IP주소 라고 부른다.

동적 IP주소는 사용되지 않을 경우 회수되고, 할당 때마다 다른 주소를 받을 수 있다.

동적 할당에 사용되는 대표적인 프로토콜을 DHCP프로토콜이라 하며, 다음과 같은 단계를 거쳐 호스트와 DHCP서버 간에 메시지를 주고받음으로써 이루어진다.
1. DHCP Discover(클라이언트 -> DHCP서버): 클라이언트는 해당 메시지를 통해 DHCP서버를 찾는다. 이때 송신지 IP주소는 0.0.0.0으로 설정되며 브로드캐스트로 전송된다.
2. DHCP Offer(DHCP서버 -> 클라이언트): DHCP서버는 메시지를 받은 뒤 클라이언트에게 제안할 IP주소, 서브넷 마스크, 임대 기간 등을 포함한 DHCP Offer메시지를 보낸다.
3. DHCP Request(클라이언트 -> DHCP서버): DHCP Offer에 대한 응답으로, 브로드캐스트를 통해 전송된다.
4. DHCP ACK(DHCP서버 -> 클라이언트): 최종 승인과 같은 메시지로, 클라이언트는 임대 기간동안 할당받은 IP주소를 사용한다.

라우팅

라우터의 핵심 기능은 패킷이 이동할 최적의 경로를 설정한 뒤 해당 경로로 패킷을 이동시키는 것인데, 이를 라우팅이라 한다.

라우터

멀리 떨어져 있는 호스트 간의 통신 과정에서 패킷을 전달하는 네트워크 계층의 장비이다.

라우팅 테이블

특정 수신지까지 도달하기 위한 정보를 명시한 표와 같은 정보이다.
대표적으로 다음과 같은 정보가 포함된다.

  • 수신지 IP주소와 서브넷 마스크: 최종적으로 패킷을 전달할 대상
  • 다음 홉(게이트웨이): 최종 수신지까지 가기 위해 거쳐야 할 호스트의 IP 주소나 인터페이스
  • 네트워크 인터페이스: 패킷을 보낼 통로
  • 메트릭: 해당 경로로 이동하는 데 드는 비용

테이블에 없는 경로로 패킷을 전송해야 할 경우 기본적으로 패킷을 내보낼 경로를 설정하여 패킷을 내보낼 수 있는데, 이 기본 경로를 디폴트 라우트라고 한다.

정적 라우팅과 동적 라우팅

라우팅 테이블을 만드는 방법에는 정적 라우팅과 동적 라우팅 두 가지 방법이 존재한다.

정적 라우팅

사용자가 수동으로 입력한 라우팅 테이블을 토대로 라우팅 되는 방식

동적 라우팅

자동으로 라우팅 테이블을 만들고 이를 토대로 라우팅 되는 방식
라우터끼리 서로 자신의 정보를 교환하며 라우팅 테이블을 만드는데, 이 때 사용되는 프로토콜을 라우팅 프로토콜이라 한다.

AS

라우팅 정책으로 운용되는 라우터들의 집단 네트워크
한 AS내에는 다수의 라우터가 존재하며, 라우터들은 AS내부에서만 통신을 할 수도 있고 AS 외부와 통신할 수도 있다.
AS외부와 통신을 할 경우 AS경계에서 AS내외로 통신을 주고받을 수 있는 라우터를 AS 경계 라우터라 한다.

라우팅 프로토콜

라우터끼리 자신들의 정보를 교환하며 패킷이 이동할 최적의 경로를 찾기 위한 프로토콜이다.
라우팅 프로토콜은 AS내부 혹은 외부에서 수행되는 위치에 따라 IGP, EGP로 나눌 수 있다.

IGP

AS내부에서 수행되는 라우팅 프로토콜로, 대표적으로 RIP와 OSPF가 있다.
RIP는 거리 벡터를 사용하며 OSPF는 링크 상태를 사용한다.

EGP

AS외부에서 수행되는 라우팅 프로토콜로, BGP가 존재한다.
BGP는 AS간의 통신이 가능하며 AS내부 통신 역시 가능하다.

0개의 댓글