TCP/IP 의 핵심인 인터넷 계층의 IP 프로토콜
인터넷 계층과 IP 프로토콜
인터넷 계층의 필요성과 라우터의 역할
앞서 살펴본 네트워크 인터페이스 계층의 역할은 어디까지나 물리적으로 직접 연결된 컴퓨터 간에 데이터를 전송하는 데 있습니다. 따라서 네트워크 인터페이스 계층의 기능으로 <그림 1>에서 직접 연결된 ①번과 ②번 컴퓨터 간에, ③번과 ④번 컴퓨터 간에는 통신이 가능하지만, 직접 연결되지 않은 ①번과 ④번 컴퓨터 간에는 통신이 불가능합니다.
네트워크 인터페이스 계층의 역할 자세히 ⇒ 네트워크 인터페이스 계층과 이더넷
직접 연결된 컴퓨터의 범위를 넘어서 멀리 떨어진 컴퓨터에 데이터를 전송하기 위해서 필요한 계층이 인터넷 계층입니다. 인터넷 계층은 인터 네트워킹(Inter Networking, 즉 네트워크와 네트워크를 연결해서 네트워크 간에 데이터를 전송하는 역할을 합니다. 서로 다른 네트워크 간에 데이터를 전송하는 라우터가 인터넷 계층의 역할을 구현하는 핵심 네트워크 장비입니다. <그림 1>에서 라우터가 네트워크 A와 네트워크 B를 연결하여 직접 연결되지 않은 ①번과 ④번 컴퓨터 간에 데이터 전송이 가능해집니다. 따라서 라우터의 역할이 곧 인터넷 계층의 역할이라고 해도 과언이 아닙니다.
<그림 1> 인터넷 계층의 필요성
IP 프로토콜
수많은 네트워크가 연결된 인터넷에서 데이터가 송신지를 출발하여 수신지에 도착하기까지 수많은 라우터를 통과하게 됩니다. 그 과정에서 데이터가 길을 잃지 않고 정확한 목적지에 도착할 수 있도록 기능하는 것이 IP 프로토콜입니다. IP 프로토콜에 따라 네트워크에 연결된 컴퓨터는 물리적 연결이나 거리에 상관없이 통신이 가능하기 때문에 인터넷을 지탱하는, TCP/IP 계층 모델에서 가장 중심이 되는 프로토콜입니다.
IP 프로토콜은 ① IP 주소(최종 목적지 결정)와 ② 라우팅(목적지까지 경로 결정)으로 그 기능을 구현합니다.
IP 주소
위 <그림 1> 에서 ①번 컴퓨터가 ④번 컴퓨터와 통신을 하기 위해선 ④번 컴퓨터가 네트워크 B에 위치한다는 장소 정보가 필요합니다. 네트워크 인터페이스 계층에서 사용했던 MAC 주소는 장비를 식별하기 위한 주소일 뿐 장소를 특정하진 않기 때문에 인터넷 계층에서는 사용하지 않습니다.
인터넷 계층에서는 네트워크에 접속하고 있는 컴퓨터의 장소를 식별하기 위해 개개의 컴퓨터에 부여하는 IP 주소를 사용합니다.
IP 주소는 어느 네트워크의 어느 컴퓨터라는 것을 식별하는 주소입니다. 따라서 IP 주소는 ① '네트워크 번호(또는 네트워크 부, Network Part)'와 ② '컴퓨터 번호(또는 호스트 번호, 호스트 부, Host Part)'를 조합하여 만들어집니다. 네트워크 번호는 접속되어 있는 모든 네트워크 중에서, 컴퓨터 번호는 그 컴퓨터가 속한 네트워크 내에서 유일한 번호를 할당하여 중복을 허용하지 않습니다.
MAC 주소는 랜카드같은 네트워크 인터페이스가 만들어질 때 주민등록번호처럼 할당되는 고유한 주소이기 때문에 랜카드를 장착한 컴퓨터나 네트워크 장비가 위치한 장소가 바뀌더라도 변하지 않아 물리 주소라고도 합니다. 반면 IP 주소는 어디에 있는 어느 컴퓨터라는 것을 지칭하기 때문에 컴퓨터가 위치한 장소가 바뀌어 접속하는 네트워크가 변경된 경우 IP 주소도 변경됩니다. 즉, IP 주소는 컴퓨터가 네트워크에 접속할 때마다 인터넷에서 식별할 수 있는 유일한 번호로 할당되기 때문에 '논리 주소'라고도 합니다. 쉽게 말하면 사람이 이사를 가더라도 주민등록번호는 바뀌지 않지만 집주소는 변경되는 것처럼, 컴퓨터가 어느 장소에 있든 MAC 주소는 바뀌지 않지만, 컴퓨터가 있는 장소가 변경되면 IP 주소도 변경됩니다.
인터페이스와 IP 주소의 할당
IP 주소는 호스트 역할을 하는 컴퓨터뿐만 아니라 라우팅을 하는 라우터에도 할당됩니다. 호스트와 라우터를 링크로 연결한 네트워크에서 라우팅은 IP 주소를 기반으로 호스트와 라우터, 라우터와 라우터, 라우터와 호스트의 경계를 넘나들며 링크를 연결하는 과정입니다. 각각의 경계를 인터페이스라고 하며 각 인터페이스가 IP 주소를 갖고 있어야 라우팅을 할 수 있습니다. 따라서 IP 프로토콜은 각 호스트와 라우터의 인터페이스가 IP 주소를 갖도록 요구합니다. 한 링크로부터 IP 패킷을 수신하여 다른 링크로 IP 패킷을 전달하는 역할을 하는 라우터는 2개 이상의 링크와 연결된 인터페이스가 필요하기 때문에 인터페이스의 개수만큼 IP 주소를 갖습니다. 예를 들어 위 <그림 2>에서 네트워크 B에 있는 라우터는 네트워크 A, C, E의 라우터와 연결되는 각각의 인터페이스마다 IP 주소가 할당됩니다.
라우팅
라우팅은 네트워크 내에서 데이터를 전송할 때 최적의 경로를 선택하는 과정입니다. 최적의 경로란 가장 짧은 거리나 가장 적은 시간 내에 데이터를 전송할 수 있는 경로를 말합니다. 라우터는 IP 주소를 보고 데이터의 최종 목적지가 어느 네트워크에 접속해 있는지 판단해서 그 네트워크와 연결된 네트워크의 라우터 중 최적의 경로 상에 위치한 라우터로 데이터를 전송합니다.
따라서 하나의 라우터가 결정하는 것은 '경로의 일부'입니다. 라우터는 자신의 위치에서 최종 목적지까지 가기 위해 자신이 다음에 어디로 데이터를 보내야 할지 여부를 결정하는 것이지 송신지에서 수신지까지의 모든 경로를 이해하고 있는 것은 아닙니다. 라우터에서 라우터로 이동하면서 라우터가 찾는 경로의 일부가 차례로 연결되어 송신지에서 최종 목적지까지의 경로가 결정되는 것입니다. 이렇게 라우터에서 라우터로 최종 목적지가 속한 네트워크까지 최적의 경로를 찾아가는 반복적인 과정이 라우팅입니다.
<그림 2> 에서 네트워크 A에 속한 ①번 컴퓨터가 네트워크 G에 속한 ②번 컴퓨터에게 데이터를 전송하기 위한 경로는 A → B → C → G, A → B → F → G, A → D → E → C → G 등 여러 개가 있습니다. 데이터의 최종 목적지인 ②번 컴퓨터의 IP 주소를 바탕으로 각각의 라우터는 자신이 알고 있는 경로 중 네트워크 G로 가는 최적의 경로를 찾아 그 경로에 상에 있는 가까운 라우터에게 데이터를 전송합니다. 그 결과 라우팅에 의해 선택된 경로인 A → B → F → G에 따라 ①번 컴퓨터에서 ②번 컴퓨터로 데이터가 전송됩니다.
<그림 2> 라우팅
라우팅 테이블
라우팅이 가능한 것은 모든 호스트와 라우터가 라우팅 테이블이라는 경로 정보를 갖고 있기 때문입니다. 네트워크 인터페이스 계층의 스위치가 포트 번호와 MAC 주소를 기록한 MAC 주소 테이블에 따라 데이터를 전송하는 것처럼, 인터넷 계층의 호스트와 라우터는 라우터와 네트워크를 기록한 라우팅 테이블(또는 경로 제어표)을 사용하여 라우팅을 합니다.
<그림 3> 라우팅 테이블
IP 프로토콜에 의한 패킷 전송 과정
IP 프로토콜은 IP 주소를 기반으로 데이터를 전송하기 때문에 인터넷 계층에서 IP 프로토콜에 따라 데이터를 처리하기 위한 가장 중요한 정보가 IP 주소입니다. 따라서 상위 계층(전송 계층)으로부터 패킷(TCP 세그먼트)을 넘겨받은 송신지 인터넷 계층은 수신지 IP 주소와 송신지 IP 주소를 담은 IP 헤더를 추가한 IP 패킷을 만들어 네트워크 인터페이스 계층으로 넘깁니다.
송신지 네트워크 인터페이스 계층을 거쳐 프레임으로 변환된 IP 패킷은 인터넷에서 수많은 라우터의 라우팅을 거쳐 수신지 네트워크 인터페이스 계층에 도착합니다.
수신지 네트워크 인터페이스 계층으로 부터 IP 패킷을 넘겨받은 수신지 인터넷 계층은 IP 헤더에서 수신지 IP 주소를 읽고, 자신의 IP 주소와 일치하는지 비교하여 자신에게 온 데이터가 맞는지 확인합니다. 자신에게 온 데이터가 맞으면 IP 패킷에서 IP 헤더를 삭제한 데이터(TCP 세그먼트)를 상위 계층(전송 계층)으로 넘깁니다.
<그림 4> IP 프로토콜과 IP 주소에 의한 패킷 전송
네트워크 인터페이스 계층과 인터넷 계층의 관계
전송 계층이 데이터를 분할하여 만든 패킷(세그먼트)은 인터넷 계층과 네트워크 인터페이스 계층의 협력으로 송신지 호스트에서 수신지 호스트로 전송됩니다.
인터넷 계층은 어떻게 하면 멀리 떨어져 있는 최종 목적지까지의 패킷을 잘 전송할 수 있을까에 초점을 맞추고 IP 주소를 사용합니다. 반면 네트워크 인터페이스 계층은 어떻게 하면 물리적으로 인접하여 연결된 네트워크 기기까지 데이터를 잘 전송할 수 있을까에 초점을 맞추고 MAC 주소를 사용합니다. IP 주소와 MAC 주소를 모두 갖고 있는 컴퓨터와 라우터는 이 두 주소를 어떻게 구분하고 사용하면서 데이터를 전송하는 것일까요?
송신 호스트의 인터넷 계층은 IP 프로토콜에 따라 수신 호스트의 IP 주소를 헤더에 담아 IP 패킷을 만듭니다. 인터넷 계층에서는 IP 주소의 네트워크 번호를 보고 수신 호스트가 속한 네트워크를 식별하여 도착 가능한 최적의 경로상에 있는 라우터를 찾아냅니다. 즉, IP 주소의 네트워크 번호를 이용해 경로 제어, 즉 라우팅을 하는 것입니다. 인터넷 계층은 네트워크 인터페이스 계층으로 IP 패킷을 넘기면서 라우팅을 통해 찾아낸 라우터까지 IP 패킷의 물리적인 전송을 의뢰합니다.
네트워크 인터페이스 계층은 IP 주소를 알지 못하고 MAC 주소를 사용해서 패킷을 전송하기 때문에 인터넷 계층이 네트워크 인터페이스 계층에 전송을 의뢰할 때는 수신지 라우터의 IP 주소가 아닌 MAC 주소를 알려줘야 합니다. 이 때 인터넷 계층에서 IP 주소를 MAC 주소로 변환하는 역할을 하는 ARP(Address Resolution Protocol, 아프) 프로토콜이 사용됩니다.
ARP 프로토콜에 따라 IP 패킷을 전송할 MAC 주소를 받은 네트워크 인터페이스 계층은 MAC 주소를 이더넷 헤더에 담은 프레임 형태의 패킷을 만들어 라우터로 전송하는 것입니다.
프레임 형태의 패킷을 전송받은 라우터는 IP 헤더에서 수신지 IP 주소를 보고 다음에 어느 라우터로 패킷을 전송할지를 결정합니다. 라우팅으로 결정된 다음 라우터에게 패킷을 건네 주기 위해 라우터의 IP 주소를 ARP 프로토콜을 사용해 MAC 주소로 변환합니다. 변환해서 알아낸 MAC 주소를 사용해 이더넷 헤더를 교체합니다. 새로운 MAC 주소를 IP 헤더에 담은 IP 패킷을 다음 라우터로 전송하게 됩니다.
이렇게 라우터를 통과할 때마다 패킷의 최종 목적지인 IP 주소는 변하지 않지만, 라우팅 결과 선택된 경로에 따라 패킷의 다음 전송지인 MAC 주소가 변경되는 과정이 반복됩니다. 라우팅을 통해 MAC 주소가 변경되면서 물리적인 패킷 전송이 이어지고, 수많은 라우터를 거쳐 수신지 호스트와 직접 연결된 라우터를 통해 최종 목적지인 수신지 호스트에 IP 패킷이 전송되는 것입니다.
<그림 5> 네트워크 인터페이스 계층과 인터넷 계층의 관계
라우팅에서 MAC 주소와 IP 주소의 관계
프레임에 기록된 MAC 주소는 데이터를 전송하기 위한 최종 목적지 주소가 아니라, 물리적으로 연결된 바로 다음 목적지의 MAC 주소를 가리킵니다. 스위치로만 연결된 유선 LAN에서는 다음 목적지의 MAC 주소가 최종 목적지의 MAC 주소와 일치합니다. 그러나 네트워크과 네트워크가 연결된 인터넷에서는 최종 목적지에 도착하기 전에 반드시 라우터를 거쳐야 하므로 다음 목적지의 주소가 라우터의 MAC 주소가 됩니다. 따라서 라우터가 최종 목적지가 속한 네트워크에 도착하기 위해 수많은 라우터를 거쳐가면서 프레임은 다음 목적지 MAC 주소로 계속 교체됩니다. 데이터를 최종 목적지까지 전달하기 위한 경로 중 최적의 경로 상에 있는 라우터를 찾아 다음 전송 목적지로 정하고, 다음 전송 목적지로 수신지 MAC 주소를 변경해서 데이터를 전송하는 과정을 라우팅이라고 합니다.
인터넷에서의 패킷 전송
인터넷을 통해 패킷이 전송되는 과정을 통해 지금까지 살펴 본 것을 정리해 보겠습니다.
송신 호스트
아래 <그림 6>에서 송신 호스트가 인터넷을 통해 수신 호스트에게 데이터를 전송하기 위해선 먼저 송신 호스트의 애플리케이션이 만든 데이터(메시지)를 전송 계층에서 패킷이라는 작은 단위(세그먼트)로 분할하여 인터넷 계층으로 넘깁니다.
인터넷 계층에서는 IP 프로토콜에 따라 최종 목적지를 수신 호스트의 IP 주소로 지정하고 전송 계층에서 받은 패킷에 IP 헤더를 붙여 IP 패킷을 만듭니다. 인터넷 계층은 수신 호스트의 IP 주소의 네트워크 번호로 수신 호스트가 네트워크 D에 있다는 것을 읽고, 네트워크 D까지 도착하기 위한 최적의 경로 상에 위치한 라우터 A가 IP 패킷을 전송할 다음 수신지라는 것을 알아냅니다. 인터넷 계층은 네트워크 인터페이스 계층에 IP 패킷을 넘기면서 라우터 A의 IP 주소를 ARP프로토콜을 사용해 MAC 주소로 변환합니다.
네트워크 인터페이스 계층은 IP 패킷에 라우터 A의 MAC 주소를 담은 프레임이라는 패킷을 만들어 네트워크로 내보냅니다(보다 정확히는 랜카드가 이 프레임을 전기 신호로 변환한 후 랜 케이블을 통해 네트워크로 전송합니다).
<그림 6> 인터넷에서의 패킷 전송
스위치
송신 호스트와 연결된 ①번 포트로 프레임을 수신한 스위치는 프레임의 전송할 수신지 MAC 주소가 라우터 A의 MAC 주소인 것을 확인하고, MAC 테이블을 이용하여 라우터 A와 연결된 ② 번 포트로 프레임을 전송합니다.
이처럼 스위치는 MAC 주소를 읽고 단순히 프레임 전송을 중계하는 역할을 하기 때문에 MAC 주소도, IP 주소도 할당되지 않는 것입니다. 반면 라우터는 일단 패킷을 수신하고 수신한 패킷을 전송할 주소를 지정해 송신하는 역할을 하기 때문에 수신지와 송신지로서 MAC 주소와 IP주소가 할당되는 것입니다.
라우터 A와 B
스위치로부터 프레임을 전송받은 라우터 A는 이더넷 헤더의 MAC 주소를 읽고 자기에게 온 프레임이 맞는지 확인한 후, IP 헤더에서 수신 호스트의 IP 주소를 읽고, 어느 라우터로 패킷을 전송할지 라우팅합니다. 최적의 경로 상에 위치한 라우터 B로 다음 수신지를 결정한 라우터는 ARP 프로토콜을 사용해 라우터 B의 IP 주소를 MAC 주소로 변환합니다. 라우터는 스위치로부터 전달받은 프레임의 이더넷 헤더를 버리고, 라우터 B의 MAC 주소를 다음 수신지로 한 새로운 이더넷 헤더를 붙여 라우터 B로 전송합니다.
라우터 B도 라우터 A와 같은 방식으로 라우터 C로 패킷을 전송합니다.
라우터 C와 스위치
패킷을 받은 라우터 C는 IP 헤더에서 수신 호스트의 IP 주소의 네트워크 번호를 읽고 수신 호스트가 자신과 같은 네트워크 D에 속한 호스트라는 것을 알아 내고 다음 패킷의 수신지를 수신 호스트로 결정합니다. 수신 호스트의 IP를 ARP 프로토콜을 사용해 MAC 주소로 변환하고, 수신 호스트의 MAC 주소를 이더넷 헤더에 담아 수신 호스트로 패킷을 넘깁니다. 이 패킷은 라우터와 연결된 스위치의 ③ 번 포트로 전송되고 스위치의 패킷 중계 기능으로 수신 호스트와 연결된 ④ 번 포트를 통해 수신 호스트에 도착하게 됩니다.
참고 자료
다케시타 다카후미 외 3인, 이영란 역, 「마스터링 TCP/IP 입문편」, 성안당, 2019.
ANK CO., Ltd., 이영란 역, 「TCP/IP가 보이는 그림책」, 성안당, 2019.
강환수 외 3인, 「컴퓨터 개론」, 인피니티북스, 2019.
진혜진, 「네트워크 개론」, 한빛아카데미, 2019.
삼성SDS 기술사회, 「정보통신」, 한울아카데미, 2019.
정진욱 외 4인, 「컴퓨터 네트워크」, 생능출판사, 2018.
김현정, 「소프트웨어 개념사전」, 궁리, 2019.
이영호 외 1인, 「당신이 지금 알아야 할 AWS」, 비제이 퍼블릭, 2019.
김종훈, 「소프트웨어 세상을 여는 컴퓨터 과학」, 한빛아카데미, 2018.
Gene, 김성훈 역, 「그림으로 배우는 네트워크 원리」, 영진 닷컴, 2020.
Ryuji Kitami, 이영란 역, 「그림 한 장으로 보는 최신 네트워크 용어 해설」, 정보문화사, 2016.
미즈구치 카즈야, 이승룡 역, 「모두의 네트워크」, 2018.
리브로웍스, 신상재 역, 「TCP/IP 쉽게, 더 쉽게」 , 제이펍, 2016.
Gene, 진솔 역, 「손으로 익히며 배우는 네트워크 첫걸음」, 한빛미디어, 2017.
아미노 에이지, 김현주 역, 「하루 3분 네트워크 교실」, 영진닷컴, 2016.
김석준, 「문과생을 위한 ICT 이야기 」, 커뮤니케이션즈북스, 2019.
James F. Kurose외 1인, 「컴퓨터 네트워킹 」, 퍼스트북, 2017.
Tsutomu Tone, 이도희 역, 「성공과 실패를 결정하는 1%의 네트워크 원리 」, 성안당, 2018.
출처: https://better-together.tistory.com/114?category=887984 [변계사 Sam의 테크 스타트업!]
'⚡네트워크' 카테고리의 다른 글
[Wireshark] 네트워크 패킷 필터 A to Z (0) | 2022.04.07 |
---|---|
SNMP 란? (0) | 2022.01.12 |
네트웍의 기초 - 서브넷팅 계산하기 (0) | 2021.02.22 |
VMware Network Editor 통한 가상머신 네트워크 정의 (0) | 2021.02.19 |
DNS에서 CNAME과 A 레코드의 차이 (0) | 2021.01.30 |