[Network] Network layer

bin1225·2024년 6월 23일
0

Network

목록 보기
4/7

KOCW 컴퓨터네트워크-이석복 강의를 수강하며, 해당 내용을 바탕으로 배운 점들을 정리하였다.

네트워크 계층구조를 나눈 이유

Network에서 데이터로 전송하는 과정에서 수많은 작업이 이루어진다.
이러한 통신 과정에서 일어나는 데이터의 흐름을 한 눈에 파악하고, 문제가 발생했을 때 어떤 부분에서 발생하였는지 명확히 파악하기 위해 네트워크는 계층구조로 정의된다.

이 계층구조 중 Application layer -> Transport layer를 거친 후 생성된 TCP/UDP 새그먼트를 실제 다른 네트워크 상의 receiver에게 전달하는 작업을 하는 것이 Network layer이다.

IP주소와 라우팅 알고리즘을 통해서 경로를 설정하고 패킷을 전달한다.

네트워크에서 datagram을 전달하는 방식

각 layer에서 보내는 데이터에 대한 명칭이 있는데, network layer에서는 datagram이라고 칭한다.

sender와 receiver 사이에는 수 많은 라우터들이 존재한다.
sender가 보내는 datagram은 이 많은 라우터들을 거쳐서 최종적으로 receiver에게 도달한다.

라우터

라우터는 크게 두가지 역할을 한다
1. Routing
datagram의 이동 경로를 설정한다.
2. Fowarding
적절한 출구로 datagram을 전송한다.

라우터는 datagram의 목적 IP를 보고 해당 datagram이 가야할 경로로 전달한다.

Longest prefix matching

라우터는 Datagram fowarding table를 이용해 특정 datagram이 가야하는 output link를 결정하고 해당 output으로 fowarding을 수행한다.

하지만 만약 모든 IP 주소에 대해서 각각 output을 지정해둬야한다면 엄청난 메모리 공간이 낭비된다.

따라서 사용하는 방식이 Longest prefix matching 방식이다.

IP주소를 datagram table에 존재하는 IP주소 목록 중 가장 많이 일치하는 것과 매칭된 Output link로 보내는 것이다.

IP (Internet Protocol)

IP Adress

현재 사용하는 IP Adress는 IPv4이다.
32bit로 구성되어 약 40억개의 주소값을 표현할 수 있다.

설계 당시에는 40억개면 차고 남을 정도로 충분할 것이라 생각했지만, 현재 IP주소가 부족하여 문제가 있다.

해결 방안으로는 크게 두가지 방식이 제안된다.

  • IP주소를 64bit 체계인 IPv6로 전환한다.

  • NAT(Network Address Translation)를 이용한다.

서브네팅

IP주소는 32bit 중 Network를 표현하는 부분화 Host를 표현하는 부분으로 나뉜다.

이것은 브로드캐스트 도메인이 크면 네트워크 자원이 낭비되기 때문에 이를 방지하기 위함과 동시에, IP Adress를 효율적으로 사용하기 위함이다.

서브넷 마스크

IP주소에서 네트워크 부분만을 추려내기 위해 사용한다.
AND연산을 통해 호스트 부분을 제외한 네트워크 IP Adress를 확인한다.

CIDR (Classless Inter-Domain Routing)

기존에는 Network를 표현하는 부분이 8bit단위로 증가하며 구성되었다.

  • Class A: Network 8bit/ Host 24bit
  • Class B: Network 16bit/ Host 16bit
  • Class C: Network 24bit/ Host 8bit

하지만 이런식으로 구성했을 때 낭비되는 IP Address가 많기 때문에 등장한 것이 CIDR이다.

CIDR은 IP 주소와 함께 몇 bit가 네트워크를 표현하는지 함께 표시한다.

NAT (Network Address Translation))

라우터에서 Address를 변환해주는 작업이다.
즉 라우터에서 외부로 나갈 때는 고유한 IP를 사용한다. 하지만 내부에서는 Local Network에서만 고유하다면 이미 사용중인 IP주소값도 사용할 수 있다.

SubNet에서는 임의의 IP를 사용해 통신하다가 라우터를 거쳐 외부 네트워크와 통신하는 경우에는 라우터가 가진 고유한 IP를 사용해 통신한다.

어떤 Host에서 보내고 받는지는 Port번호로 구분하는데, 이러한 부분에서 한계가 있다.

NAT의 한계점

  • 라우터가 IP Address를 변경하기 위해 패킷 내부를 열고 변경한다는 점에서 기존 라우터의 영역을 넘어선다.

  • Port번호를 이용해 Host를 구분하기 때문에 Port번호 자체의 목적에 맞게 사용할 수 없다. 외부 장치가 로컬 내트워크 내의 장치에 대한 연결을 시작하는 것을 어렵게 만든다.

DHCP (Dynamic Host Configuration Protocol)

동적으로 IP 주소를 할당해주는 프로토콜이다.
한 서브넷에서 여러 기기가 네트워크를 이용할 때, 각 Host에게 IP주소를 할당해준다.

DHCP 장점

DHCP서버에서 나머지 Host의 IP를 관리함으로써, IP주소를 효율적으로 관리할 수 있다.

예를 들어 만약 Subnet에 존재하는 Host의 IP주소를 모두 변경해야하는 경우 DHCP서버만 변경해주면 된다. 또 접속하지 않은 Host는 IP주소를 회수했다가 접속할때 다시 할당해주기 때문에 IP 주소도 효율적으로 사용한다.

수동으로 IP주소를 할당해야한다면, 번거로움과 동시에 충돌 위험성이 있는데 이것도 DHCP서버를 이용함으로써 방지할 수 있다.

DHCP 작동 방식

DHCP서버는 보통 따로 존재하지 않고 게이트웨이 라우터에서 해당 기능을 수행한다.

작동 순서는 다음과 같다.

  1. client가 broadcast를 통해 subnet전체에 요청을 보낸다. (client에 IP주소가 할당되지 않은 상태이며, DHCP server의 주소도알 수 없기 때문에)

  2. 요청을 받은 DHCP서버는 IP주소를 할당한다.

  3. client가 할당받은 IP 주소를 사용한다는 요청을 보낸다.

  4. DHCP서버가 해당 요청에 대한 ACK를 보낸다.

한 서브넷에 DHCP서버가 한개 이상일 수도 있기 때문에 할당 후에도 client가 해당 IP주소를 사용할 것인지 확인하는 절차가 필요하다.

IP fragmentation, reassembly

네트워크 상에서 라우터들은 각각 MTU(Max.transfer size)를 가진다.

만약 MTU보다 더 큰 크기의 datagram이 들어온다면 어떻게 할 것인가?

라우터는 하나의 datagram을 여러개로 쪼갠뒤 다시 합치는 작업을 수행한다. 이러한 정보는 Header에 저장하고 사용한다.

ICMP (Internet control message protocol)

사실상 네트워크를 이동하고 있는 datagram들을 확인해보면 대부분 속이 비어있는 껍데기가 많다. 이것이 ICMP이다.

ICMP를 이용해서 네트워크를 컨트롤하기 위한 메시지를 주고 받는다.
특정 목적지까지 거쳐가는 라우터의 경로도 알 수 있다.

0개의 댓글