네트워크

[TCP/IP] 인터넷 계층

2023. 4. 22. 15:14

OSI 7-Layer / TCP/IP


인터넷 계층의 역할

네트워크 인터페이스 계층의 역할은 물리적으로 직접 연결된 컴퓨터 간에 데이터를 전송하는 것이다. 다음 그림의 1번과 2번사이, 3번과 4번 사이는 물리적으로 연결되어있으므로 통신이 가능하지만, 1번과 4번 사이에 통신을 하려면 인터넷 계층의 통신이 필요하다. 인터넷 계층의 통신은 인터 네트워킹(Inter networking), 즉 서로 다른 네트워크를 연결하여 네트워크 간에 데이터를 전송하는 역할을 한다. 이때 서로 다른 네트워크 간에 데이터를 전송하는 장비인 라우터가 인터넷 계층의 역할을 구현하는 핵심 네트워크 장비이다.

그림1

 

IP 프로토콜

IP프로토콜은 인터넷 계층에서 데이터가 수많은 라우터를 거쳐 수신지를 찾아갈 때, 길을 잃지 않고 정확한 목적지에 도달할 수 있도록 한다.

IP프로토콜은 IP 주소(최종 목적지 결정)라우팅(목적지까지 경로 결정)으로 기능을 구현한다.

 

IP 주소

그림1에서 1번 컴퓨터가 4번 컴퓨터와 통신하기 위해선 4번 컴퓨터가 네트워크 B에 있다는 장소정보가 필요하다. 이때 장소 정보를 얻기 위해 IP주소를 사용하게 된다. 네트워크 인터페이스 계층에서 사용하던 MAC주소는 장비를 식별하기 위한 주소(물리 주소)일 뿐, 장소를 특정하지 않으므로 인터넷 계층에서는 사용하지 않는다.

 

IP주소는 네트워크 부와 호스트 부로 나뉜다. 네트워크 부는 어떤 네트워크에 속해 있는지, 호스트 부는 해당 네트워크 안에서 어떤 컴퓨터인지를 나타내기 때문에 중복으로 할당되지 않는다. 또한 IP주소는 어디에 있는 컴퓨터라는 것을 나타내기 때문에, 컴퓨터의 장소가 바뀌어 접속하는 네트워크가 바뀌면 IP주소도 변경된다(논리 주소).

 

라우팅

라우팅은 네트워크 내에서 데이터를 전송할 때 최적의 경로를 선택하는 과정이다. 라우터는 자신의 위치에서 최종 목적지까지 가기 위해 자신이 다음에 어디로 데이터를 보내야 할지 여부를 결정한다. 따라서 라우터가 결정하는 것은 ‘경로의 일부’이지 송신지에서 수신지까지의 모든 경로를 이해하는 것이 아니다.

그림2 라우팅

그림2에서 네트워크 A에 속한 1번 컴퓨터가 네트워크 G에 속한 2번 컴퓨터에 데이터를 전송하기 위한 경로는 A→B→F→G, A→B→C→G, A→D→E→C→F등 이 있다. 최종 목적지인 2번 컴퓨터의 IP주소에 도달하기 위해 각 라우터는 자신이 알고있는 최적의 경로로 가까운 라우터에 데이터를 전송한다. 그 결과 라우팅에 의해 A→B→F→G 경로로 데이터를 전달하고있는 것을 볼 수 있다.

 

인터페이스와 IP주소의 할당

위에서 설명한 IP주소는 컴퓨터 뿐아니라 라우터에게도 할당된다. 호스트와 라우터를 링크로 연결한 네트워크에서, 라우팅은 IP 주소를 기반으로 호스트-라우터, 라우터-라우터, 라우터-호스트의 경계를 따라 링크를 연결한다. 이러한 각각의 경계를 인터페이스라고 하며, 각 인터페이스가 IP주소를 가지고 있어야 라우팅을 할 수 있다. 예를들어 위의 그림2에서 네트워크 B에 있는 라우터는, 네트워크 A, C, E의 라우터와 연결되는 각각의 인터페이스 마다 IP주소가 할당된다.

 

라우팅 테이블

인터넷 계층의 모든 호스트와 라우터는 라우터와 네트워크를 기록한 라우팅 테이블을 사용하여 라우팅을 한다.

그림3 라우팅 테이블

 

IP 프로토콜에 의한 패킷 전송 과정

그림4 IP 프로토콜과 IP 주소에 의한 패킷 전송

인터넷 계층에서 통신하기 위한 IP 프로토콜은 IP주소를 기반으로 데이터를 전송한다. 따라서 상위 계층(전송 계층)으로부터 패킷(TCP 세그먼트)를 넘겨받은 송신지 인터넷 계층은 송수신지 IP주소를 담은 IP헤더를 데이터에 추가하여 IP패킷을 만들어 네트워크 인터페이스 계층으로 넘긴다. 송신지 네트워크 인터페이스 계층을 거쳐 프레임으로 변환된 IP패킷은 수많은 라우터의 라우팅을 거쳐 수신지 네트워크 인터페이스 계층에 도착한다. (네트워크 인터페이스 계층 내에서 라우팅을 하나….? → 바로 아래 주제에서 다루고 있다.)

 

수신지 네트워크 인터페이스 계층에서 수신지 인터넷 계층에 IP패킷을 넘겨주면 IP헤더의 수신지 IP주소와 자신의 IP주소가 일치하는지 확인한다. 일치하면 IP 패킷의 IP헤더를 삭제한 데이터(TCP 세그먼트)를 상위 계층(전송계층)으로 넘긴다.

 

네트워크 인터페이스 계층과 인터넷 계층의 관계

그림5 네트워크 인터페이스 계층과 인터넷 계층의 관계

송신 호스트의 인터넷 계층은 송신측과 수신측의 IP 주소를 헤더에 담아 IP 패킷을 만든다. 인터넷 계층에서는 IP주소의 네트워크 부를 보고 수신 호스트가 속한 네트워크를 식별하여 라우팅을 통해 최적의 경로를 찾아낸다. 인터넷 계층은 네트워크 인터페이스 계층으로 IP패킷을 넘기면서 라우팅을 통해 찾아낸 라우터까지의 IP 패킷의 물리적인 전송(네트워크 인터페이스 계층의 통신방식)을 의뢰한다.

 

인터넷 계층이 네트워크 인터페이스 계층에 전송을 의뢰할 때는 수신지 라우터의 MAC 주소를 알려줘야 한다. 이 때 인터넷 계층에서 IP 주소를 MAC 주소로 변환하는 역할을 ARP(Address Resolution Protocol) 프로토콜이 한다.

 

ARP 프로토콜에 따라 IP 패킷을 전송할 MAC 주소를 받은 네트워크 인터페이스 계층은 MAC 주소를 이더넷 헤더에 담은 프레임 형태의 패킷을 만들어 라우터로 전송한다.

 

프레임 형태의 패킷을 전송받은 라우터는 IP 헤더에서 수신지 IP를 보고 다음에 어느 라우터로 패킷을 전송할지 결정한다. 라우팅으로 결정된 다음 라우터에게 패킷을 전달하기 위해 라우터의 IP 주소를 ARP 프로토콜을 사용해 MAC 주소로 변환한다. 변환해서 알아낸 MAC 주소를 사용해 이더넷 헤더를 교체한다. 새로운 MAC 주소를 이더넷 헤더에 담은 프레임을 다음 라우터로 전송한다.(프레임에 기록된 MAC 주소는 데이터를 전송하기 위한 최종 목적지 주소가 아니라, 물리적으로 연결 된 바로 다음 목적지의 MAC 주소를 가리킨다.) 라우팅 반복… (IP 헤더의 송수신지 IP 주소는 값이 변하지 않고 그대로 가나? 이더넷 헤더의 내용만 계속 바뀌면서 전달되는 것인가?)

 

이렇게 라우터를 통과할 때마다 패킷의 최종 목적지 IP주소는 변하지 않지만, 라우팅 결과 선택된 경로에 따라 패킷의 다음 전송지인 MAC 주소가 변경되는 과정이 반복된다. 라우팅을 통해 MAC 주소가 변경되면서 물리적인 패킷 전송이 이어지고, 수많은 라우터를 거쳐 최종 목적지인 수신지 호스트에 IP 패킷이 전송된다. (그럼 라우터들끼리는 물리적으로 연결되어있다고 보는 건가? → 그렇다고한다.)

 

라우팅에서 MAC 주소와 IP 주소의 관계

라우팅 과정에서 프레임에 기록되는 수신지 MAC 주소는 최종 목적지가 아니라, 물리적으로 연결된 바로 다음 목적지의 MAC 주소를 가리킨다. 네트워크 인터페이스 계층(유선 LAN)에서는 다음 목적지의 MAC 주소가 최종 목적지의 MAC 주소와 (항상)일치한다. 하지만 네트워크와 네트워크가 연결 된 인터넷 계층에서는 최종 수신지가 포함된 네트워크에 도착하기 위해 많은 라우터들을 거치면서 프레임은 다음 목적지 MAC 주소로 계속 교체된다. 데이터를 최종 목적지까지 전달하기 위한 경로들 중 최적의 경로 상에 있는 라우터를 찾아 다음 전송 목적지로 정하고, 다음 전송 목적지로 수신지 MAC 주소를 변경해서 데이터를 전송하는 과정을 라우팅이라고 한다.

 

인터넷에서의 패킷 전송 (전체과정)

그림6 인터넷에서의 패킷 전송

 

1. 송신 호스트

인터넷 계층의 상위 계층인 전송계층에서 데이터를 작은 단위(세그먼트)로 분할한 패킷을 전달한다.

 

송신측의 인터넷 계층에서는 IP 프로토콜에 따라 송신 호스트의 IP 주소와 수신 호스트의 IP 주소를 담은 IP 헤더를 만들어 데이터에 붙여 IP 패킷을 만든다. 인터넷 계층은 수신 호스트의 IP 주소를 확인하여 수신 호스트가 네트워크 D에 속해있다는 것을 읽고, 해당 네트워크 대역으로 가기 위한 최적의 루트에 있는 다음 라우터인 라우터 A가 IP 패킷을 전송할 다음 수신지라는 것을 알아낸다. 인터넷 계층은 네트워크 인터페이스 계층으로 IP패킷과 송신 호스트의 IP, 라우터A의 IP주소를 함께 전달하면서 IP 주소들을 ARP 프로토콜을 사용해 MAC주소로 변환한다.

 

네트워크 인터페이스 계층은 IP패킷에 송신 호스트의 MAC, 라우터 A의 MAC주소를 담은 이더넷 헤더를 만들어 이더넷 프레임을 만든다.

 

2. 스위치

스위치가 송신 호스트의 MAC과 연결된 1번 포트로 프레임을 수신한다. 스위치는 MAC address table을 확인 후 목적지 MAC주소(라우터 A)의 포트인 2번 포트에 프레임을 전달한다. 프레임은 2번 포트와 연결된 라우터 A에 도착하게 된다.

 

이처럼 스위치는 MAC 주소를 읽고 단순히 프레임 전송을 중계하는 역할을 하기 때문에 MAC 주소와 IP 주소가 할당되지 않는다. 반면 라우터는 패킷을 수신하고, 패킷을 전달할 주소를 지정해 송신하는 역할을 하기 때문에 수신지와 송신지로서 MAC 주소와 IP주소가 할당되는 것이다.

 

3. 라우터 A와 B

라우터 A에서 패킷을 전달받은 후, 이더넷 헤더의 MAC 주소와 자신의 MAC 주소와 일치하는지 확인한다. 일치한다면 전달받은 이더넷 헤더를 제거한다. 라우팅에 의해 IP 헤더에서 수신 호스트의 IP주소를 읽고, 최종 목적지까지의 루트 중 가장 최적의 루트에 있는 라우터중 라우터 B를 다음 목적지로 설정한다. 라우터 B의 IP 주소를 ARP 프로토콜을 사용해 MAC 주소로 변환한 후, 라우터 B의 MAC 주소를 다음 수신지로 한 새로운 이더넷 헤더를 포함한 이더넷 프레임을 만든다. 네트워크 인터페이스 계층에서 라우터 A에서 라우터 B로 프레임을 전송한다. (동일한 방법으로 라우터 C까지 전송)

 

4. 라우터 C와 스위치

라우터 C에서 패킷을 전달받은 후, IP헤더의 수신 호스트 IP의 네트워크 부 읽고 자신(라우터C)이 속한 네트워크 D에 속한 호스트라는 것을 확인한 후, 패킷의 다음 목적지를 수신 호스트로 결정한다. 수신 호스트의 IP를 ARP 프로토콜을 사용해 MAC 주소로 변환해 이더넷 프레임을 만들어 전송한다. 이 프레임은 라우터 C에 해당하는 스위치의 3번 포트로 전송되고, 스위치의 MAC address table에서 목적지 MAC에 해당하는 4번 포트와 연결된 수신 호스트로 도착하게된다.


(출처: https://better-together.tistory.com/114)

본 내용은 제가 네트워크 공부를하며 위 블로그를 참고해 정리한 내용이어서 스스로가 이해하기 쉽도록 말을 길게 풀어 쓴 구간이 많습니다. 위 블로그에서 깔끔하고 상세하게 설명을 잘 하고 있기 때문에 공부를하는 분들은 위 블로그로 확인해보시는것도 추천드립니다~