[이것이 취업을 위한 컴퓨터 과학이다] : 네트워크 계층 - IP

 

물리 계층과 데이터 링크 계층에 속한 기술은 대부분 LAN을 위한 기술이다. 
LAN에 넘어서 다른 네트워크와 통신을 주고받으려면 네트워크 계층 이상의 기술이 필요하고 여기서 중요하게 사용되는 기술이 네트워크 계층의 핵심적인 프로토콜 IP 이다. 

IP의 목적과 특징

IP 의 본래 목적은 크게 주소 지정과 단편화, 2가지로 나뉜다. 

주소 지정은 네트워크 간의 통신 과정에서 호스트를 특정하는 것을 의미하고,

단편화는 데이터를 여러 IP 패킷으로 올바르게 쪼개어 보내는 것을 의미한다. 

 

✔️ 주소 지정

주소 지정은 IP 주소를 통해 이루어지며, IP 패킷 헤더를 통해 알 수 있다. 

송신지 IP 주소, 수신지 IP 주소 : 하나의 IP 주소는 총 4바이트의 크기로 구성되고, 숫자당 8비트로 표현되므로 0 ~255범위의 10진수 4개로 표기된다. 각각의 10진수는 . 으로 구분된다. 여기서 구분되는 하나의 10진수를 옥텟이라고 한다. 

 

MAC 주소는 택배 배송과정의 수신인과 발신인, IP 주소는 수신 주소와 발신 주소에 빗댈 수 있다.

택배 배송과정에서 수신인 발신인 정보(받을 사람이 누구인지)보다 수신 주소와 발신 주소(집주소가 어디인지)를 우선적으로 활용하는 것 처럼 패킷의 송수신 과정에서도 MAC 주소 보다 IP 주소를 우선적으로 활용한다. 

 

서로 다른 네트워크의 두 호스트가 통신을 수행할 때, IP 주소를 바탕으로 목적지까지 IP 패킷을 전달하는 네트워크 장비로 라우터 가 있다.

전달 받은 패킷을 목적지까지 전달하는 역할을 수행한다.

이때 전달 받은 패킷을 최적의 경로로 내보내는 과정을 라우팅이라고 한다. 

 

 

✔️ 단편화

단편화를 이해하기 전 MTU를 이해하면 좋다.

MTU는 최대 전송 단위를 의미한다. 전송하고자 하는 IP 패킷의 크기가 MTU 단위보다 크면 패킷을 MTU이하의 여러 패킷으로 쪼개서 전송하고, 이 패킷들은 수신지에서 재조합된다.  일반적인 MTU 크기는 1500 바이트이다. 따라서 MTU는 프레임으로 통해 주고 받을 수 있는 최대 페이지로드의 크기라고 보아도 무방하다.

ip 패킷 헤더에서 단편화와 관련된 필드

  • 식별자: 특정 패킷이 어떤 데이터에서 쪼개진 패킷인지를 식별하기 위해 사용되는 필드이다. 
  • 플래그: 3비트로 구성된 필드로, 첫 비트를 제외한 나머지 2개의 비트는 각각 DF와 MF라는 이름이 붙어있다. 
    첫 비트는 오늘날 사용되지 않으며, DF 는 단편화를 사용하지말라, MF는 단편화된 패킷이 더 있다 라는 표시를 남기기위한 비트이다.
  • 단편화 오프셋: 특정 패킷이 초기 데이터에서 얼마나 떨어져있는지가 명시된 필드이다. 

 

✔️ 신뢰할 수 없는 통신, 비연결형 통신 

IP 는 신뢰할 수 없는 프로토콜이다. 보통 비연결형 프로토콜이라고 이야기 한다. 

TCP, UDP의 존재 목적과도 직결된다. 

 

신뢰할 수 없는 프로토콜이란 패킷이 수신지까지 제대로 전송되었다고 보장하지 않는 프로토콜을 의미한다. 

이를 최선형 전달 이라 부른다. 

 

IP 는 비연결형 프로토콜이기도 한데, 패킷을 주고 받기전 연결과정을 거치지 않는다는 의미이다. 

 

❓ IP 단편화 피하기

오늘날 네트워크는 사실 IP 단편화가 잘 일어나지 않는다. 
단편화는 되도록이면 발생하지 않는 것이 좋기 때문이다. 
따라서 주고받을 수 있는 경로 MTU를 구하고 해당 크기만큼만 송수신하여 IP 단편화를 회피하는 기술을 경로 MTU발견이라고 한다.

 

IP 주소의 구조

IP 주소는 네트워크 주소와 호스트 주소로 이루어져 있으며, 네트워크 주소는 네트워크 ID 또는 네트워크 식별자 등으로 불린다.

호스트 주소는 호스트 식별자 등으로 불린다. 

 

네트워크 주소, 호스트 주소 모두 크기가 유동적일 수 있다는 것이다. 아래의 그림을 보면 이해가 쉽다.

 

✔️ 클래스풀 주소 체계

위에서 네트워크 주소와, 호스트 주소가 유동적일 수 있다고 했는데 그럼 적당한 크기는 무엇일까 -> 상황에 따라 다르다. 

이를 해결하는 개념이 클래스 이다. 

 

클래스는 네트워크의 크기에 따라 유형별로 IP 주소를 분류하는 기준이다. 

A, B, C, D, E 총 5개의 종류로 나뉜다. 이러한 클래스를 바탕으로 IP주소를 관리하는 체계가 클래스풀 주소 체계이다.

클래스별 IP 주소 표현 가능 범위

A 클래스 : 비트 0으로 시작해 1옥텟으로 구성되며, 호스트 주소는 3옥텟으로 구성된다. 상대적으로 가장많은 호스트를 할당할 수 있다.

B 클래스 : 네트워크 주소는 비트 10 으로 시작해 2옥텟으로 구성되고, 호스트 주소도 2옥텟으로 구성된다.

C 클래스 : 네트워크 주소는 비트 110 으로 시작해 3옥텟으로 구성되며, 호스트 주소는 1옥텟으로 구성된다. 

 

✔️ 클래스리스 주소 체계와 서브넷 마스크

클래스별 네트워크 크기가 고정되어 있다면, 고정된 크기 이외에 다른 크기의 네트워크를 구성할 수 없어 IP 주소가 낭비될 수 있다.

이를 해결하는 것이 클래스리스 주소 체계이다. 

 

클래스리스 주소 체계에서는 네트워크와 호스트를 구분하는 수단으로 서브넷 마스크를 이용한다. 

 

서브넷 마스크란 -> IP 주소상에서 네트워크 주소를 1로 표기하고, 호스트 주소를 0으로 표기한 비트열이다.

 

서브넷 마스크와 IP 주소를 AND 연산하면 네트워크의 주소를 알아낼 수 있다. 

 

공인 IP와 사설 IP 주소

IP 주소는 고유할 수도 고유하지 않을 수도 있다.  이 두 종류의 IP주소는 함께 사용되는 경우가 많은데 

고유한 주소는 공인 IP 주소라고 하고, 고유하지 않은 주소는 사설 IP 주소라고 한다. 

 

공인 IP 주소는 전세계에서 고유한 주소이다. 구글이나 네이버 등의 검색 사이트의 서버와 패킷을 주고 받으려면 호스트가 속한 네트워크 밖에서 사용할 공인 IP 주소를 사용해야 하기 때문이다. 공인 IP 주소는 ISP 나 공인 IP 주소 할당 기관을 통해 할당받을 수 있다. 

 

사설 IP 주소는 사설 네트워크에서 사용하기 위한 IP 주소이다. 사설네트워크는 외부 네트워크에 공개되지 않은 네트워크이다. 

일반적으로 라우터를 통해 할당되기 때문에 공유기(라우터)를 중심으로 구성된 LAN 대부분은 사설 네트워크에 해당한다.

사설 IP 주소로 사용하도록 특별히 예약된 IP 주소공간

IP 주소의 할당

정적 할당과 동적할당 2가지 방법이 있다. 

정적 할당은 보통 수작업을 통해 이루어지고 동적 할당은 대체로 DHCP라는 프로토콜을 이용해 이루어진다. 

 

✔️ 정적 할당

수작업으로 IP 주소를 할당하는 방식으로 이를 통해 할당된 주소를 정적 IP 주소 라고 한다.

일반적으로 정적 할당 을 위해 부여하고자하는 IP 주소와 서브넷 마스크, 게이트웨이 주소, DNS 주소 등이 필요하다. 

여기서 게이트웨이는 네트워크 외부와 연결된 라우터의 주소를 의미하는 경우가 많다.

DNS 주소는 호스트가 도메인 네임을 토대로 IP 주소를 알아내기 위해 질의하는 서버의 주소를 의미한다. 

기본적으로 IP 주소가 사용되지만 모든 호스트의 IP 주소를 기억하기 어렵기 때문에 IP 주소에 대응되는 기억할 수 있는 문자열로 나타낸 것이 도메인 네임 이다.

✔️ 동적 할당 : DHCP

동적 할당은 프로토콜을 통해 자동으로 IP 주소를 부여하는 방식으로, 동적 할당을 통해 할당된 IP 주소를 동적 IP 주소라고 한다.

가장 흔히 사용되는 프로토콜이 DHCP 이다. 수동으로 직접 부여하지 않았다면, 동적으로 할당된 것 이기 때문이다. 

 

IP 주소를 동적으로 할당받고자 하는 호스트는 DHCP서버와 메시지를 주고 받으며 동적 IP 주소를 할당 받을 수 있다.

 

  • 동적 IP 주소에는 사용 가능한 기간이 정해져 있다. 
  • 동적 IP 주소는 할당 받을 때마다 다른 주소를 받을 수 있다.

IP 주소의 임대기간이 끝나기 전에 임대기간을 연장하는 것을 임대 갱신이라고 한다. 

 

IP 전송 특징의 보완: ICMP

IP 는 비연결형 프로토콜이라는 특징이 있고 이를 보완하기 위한 프로토콜이 ICMP 이다. 
하지만 그렇다고 비연결형 프로토콜이 반드시 나쁜 것은 아니다. IP를 사용하는 이유는 성능에 있다. 

 

신뢰성 높은 송수신을 하려면 유실된 패킷, 순서가 어긋난 패킷 등등 점검해야되는 이에 대한 비용이 크다. 따라서 비연결형 프로토콜이 반드시 극복해야할 단점은 아니다. 

 

그럼에도 불구하고 이를 보완해야할 경우가 존재하고 방법은 크게 2가지로 나뉜다. 

  • 신뢰할 수 있는 연결형 통신을 지원하는 상위 계층의 프로토콜을 이용하는것 대표적으로 TCP가 있다. 
  • 네트워크 계층의 프로토콜로 ICMP 을 이용하는 것이다. 이는 IP 패킷의 전송과정에 대한 피드백 메시지를 얻기 위해 사용하는 프로토콜로, ICMP 메시지를 통해 패킷이 상대방에게 어떻게 전송되었는지 알려줄 수 있다. 

✔️ IMCP 메시지

메시지는 크게 전송과정에서 발생한 오류 보고와 네트워크에 대한 진단 정보 로 유형을 나눌 수 있다.

자주 보이는 ICMP 메시지

 

IP 헤더에는 패킷의 수명을 의미하는 TTL 필드가 있고 이는 마다 1씩 감소한다. 

++ 패킷이 호스트 또는 라우터에 한 번 전달되는 것을 이라고 한다.

 

IP 주소와 MAC 주소의 대응: ARP

전달하다 보면 IP 주소는 알고 MAC주소는 모르는 상황이 있을 수 있다. 이때 사용되는 프로토콜이 ARP 이다. 

ARP는 IP 주소와 MAC주소를 함께 사용하는 통신하는 과정에서 IP 주소를 통해 MAC주소를 알아내는 프로토콜이다. 

 

✔️ ARP 의 동작 과정

IP 주소를 통해 모르는 MAC주소를 알아내는 과정은 ARP 요청 메시지와 ARP 응답 메시지를 통해 이루어진다. 

ARP 요청은 브로드캐스트 메시지로 '이 IP 주소를 가진 호스트와 통신하고 싶은데, 이 호스트의 MAC주소는 무엇인가요?'를 외치는 것과 같다. 

모든 호스트들은 자신과 관련이 있으면 응답메시지를 전송하고 아니면 무시한다. 

 

호스트입장에서 ARP 를 이용하는 호스트는 ARP 테이블 이라는 정보를 유지한다.