전공공부/컴퓨터망 (Computer Network) 18

[컴퓨터망] Routing (4) - ICMP, SNMP

1. ICMP 네트워크 계층과 라우팅에 대해 지금껏 공부하면서 알아본 내용은 어떻게 패킷을 출발지로부터 목적지까지 안전하게 운반을 하는가에 대한 내용이었습니다. 그리고 패킷이 실제로 안전하게 운반이 된다면 통신이 제대로 성공한 것이므로 문제가 생기지 않습니다. 하지만 어떠한 문제로 인해 목적지에 패킷을 전달하는 것에 실패한다면 문제가 발생합니다. 인터넷 프로토콜(IP)에는 이러한 에러에 대한 처리 방법이 존재하지 않기 때문입니다. 그래서 IP의 이런 문제점을 보강하기 위해 IP와 함께 사용되는 것이 바로 ICMP(Internet Control Message Protocol)입니다. TTL이 0이 되었거나 목적지에 도착했는데 명시된 포트 번호가 존재하지 않거나, 또 해당하는 호스트가 없거나 하는 다양한 경..

[컴퓨터망] Routing (3) - SDN

앞의 글들에서도 여러 번 언급했지만, 전통적으로 네트워크 장비들은 데이터 평면(Data Plane)과 컨트롤 평면(Control Plane)으로 구성되어 있습니다. 그래서 데이터 평면과 컨트롤 평면이 동등한 위치에서 역할을 수행해왔습니다. 하지만 이러한 구조의 여러 문제점으로 인하여 새로운 방법이 등장하게 됩니다. 이 방법은 바로 컨트롤 평면을 떼내어 더 상위 레벨에 위치시키는 것입니다. 즉, 중앙 집중형으로 설계된 하나의 컨트롤 평면이 네트워크의 라우팅을 담당하는 것입니다. 이러한 방법을 SDN (Software Designed Networking)이라고 합니다. 이러한 네트워크 형태는 중앙 컨트롤 타워 하나에서 여러 라우터들의 관리와 제어가 가능하기 때문에, 라우터 하나하나마다 컨트롤 평면을 위한 네..

[컴퓨터망] Routing (2) - Autonomous Systems, BGP

과연 전 세계의 네트워크를 하나의 시스템으로 통일시킬 수 있을까요? 또는 전 세계의 수많은 라우터들을 라우팅 테이블에 모두 집어넣을 수 있을까요? 당연히 불가능합니다. 결국 네트워크는 작은 네트워크들을 서로 연결한 형태이고, 이 작은 네트워크들은 그 내부의 저마다 다른 프로토콜로 작동하게 됩니다. 이렇게 동일한 프로토콜을 사용하는 한 네트워크, 또는 네트워크 그룹을 자율 시스템 (Autonomous System, AS)라고 합니다. 그리고 이 AS는 종종 라우팅 도메인(Routing Domain)으로 불리기도 합니다. 이 AS는 전 세계적으로 고유한 번호인 ASN(Autonomous System Number)을 부여받아야 합니다. 1. 게이트웨이 AS 내부에서는 자신들의 프로토콜을 이용해 네트워크를 운용..

[컴퓨터망] Routing (1) - Routing Algorithm

네트워크 계층을 공부할 때, 네트워크 계층은 컨트롤 평면(Control Plain)과 데이터 평면(Data Plain), 이렇게 둘로 나누어진다고 공부했습니다. 컨트롤 평면은 출발지로부터 도착지까지 어떤 라우터를 통해 어떤 길로 가야 하는 지를 결정하고, 라우팅 테이블(Routing Table)을 만들어줍니다. 그러면 데이터 평면에서 패킷의 헤더를 확인하고, 라우팅 테이블을 참조하여 어느 인터페이스로 보내주어야 하는지를 실제로 포워딩해주게 됩니다. 이렇게 라우팅 테이블을 만들고 경로를 찾아주는, 컨트롤 평면이 하는 일들을 규약으로 만들어 둔 것을 라우팅 프로토콜(Routing Protocol)이라고 합니다. 라우팅 프로토콜의 목적은 당연히 네트워크 내에서 출발지로부터 도착지까지 가장 좋은 경로를 만드는 ..

[컴퓨터망] Network Layer (8) - IPv6

IP 주소 부족 문제를 해결하기 위한 방법들 중 마지막으로 알아볼 것은 IPv6입니다. 32비트의 IPv4를 가지고는 최대 2^32개(약 42억 개)의 기기에만 주소를 할당해줄 수 있는데, IoT나 모바일 기기들의 발전으로 인해 주소를 할당받는 기기가 기하급수적으로 늘어나며 주소가 부족해질 수밖에 없습니다. IPv6는 128비트로 이루어진 주소 체계입니다. 따라서 2^128개의 IP 주소를 할당해 줄 수 있습니다. 따라서 총 1조 개 이상의 기기에 IP주소를 할당해 줄 수 있습니다. 최종적으로는 IPv4를 대체하기 위해 등장한 IPv6이지만, 현재는 둘 모두 사용되고 있습니다. 그리고 IP주소의 길이가 바뀌기 때문에 IPv6를 탑재한 데이터그램은 헤더의 구성요소와 모양도 IPv4와는 달라지게 됩니다. 1..

[컴퓨터망] Network Layer (7) - NAT

DHCP 이외에도 32비트 IP 주소체계의 수량 한정에 대한 문제를 해결하기 위한 방법이 또 있습니다. 그중 하나가 오늘 공부할 NAT(Network Address Translation)입니다. 이름 그대로 해석하자면 네트워크 주소 변환이라고 이해할 수 있습니다. NAT은 외부 네트워크와 내부 네트워크를 나누어 사용합니다. 외부 네트워크는 공인 네트워크로, 앞에서 공부했던 일반적인 IP 주소를 할당받아 사용하는 네트워크이고, 내부 네트워크는 사설 네트워크로써, 말 그대로 공인되지 않은 사적으로 만들어진 네트워크라는 뜻입니다. 즉, 할당받은 IP 주소 안에 사설 네트워크를 만들어 마치 밖에서 봤을 때는 하나의 호스트처럼 보이지만 실제로 안에는 여러 대의 호스트가 연결된 형태입니다. 이 방법을 통해 하나의 ..

[컴퓨터망] Network Layer (6) - DHCP

IP 주소를 그냥 기기 당 하나씩 할당을 해주게 되면 IP도 최대 2^32개까지만 할당할 수 있기 때문에 언젠가 고갈이 될 수 있습니다. 2^32개는 약 42억개 정도로 그렇게 많은 수가 아닙니다. 그래서 이를 극복하기 위해 여러가지 방법이 동원됩니다. 바로 앞 게시물에서 공부한 CIDR, 그리고 이번 글에서 공부할 DHCP, 그리고 그 뒤에 알아볼 NAT과 IPv6가 이러한 방법에 포함됩니다. 이번 글에선 이 방법들 중 동적으로 IP를 할당받는 방법에 대해 알아보겠습니다. IP의 동적할당을 위해 DHCP(Dynamic Host Configuration Protocol)라는 방법이 사용됩니다. DHCP에서는 호스트가 현재 속해있는 네트워크의 서버로부터 IP 주소를 할당받습니다. 해당 네트워크와 연결되어 ..

[컴퓨터망] Network Layer (5) - Subnet

IP 주소는 네트워크 계층에서 호스트를 찾기 위해 사용되는 32 비트로 구성된 식별자입니다. 컴퓨터나 라우터 등 네트워크와 연결된 모든 기기들은 이 IP 주소를 가지고 있어야만 합니다. 라우터는 여러 네트워크와 연결되어 있기 때문에 보통 여러 개의 IP 주소를 가집니다. 1. IP 주소의 클래스 (Class) IP 주소는 네트워크 주소와 호스트 주소로 이루어집니다. 한 네트워크 안에 속하는 모든 호스트들의 네트워크 주소는 동일해야 합니다. 송신자가 보낸 데이터는 우선 네트워크 주소를 이용해 목적지가 속한 네트워크를 찾은 뒤, 그 안에서 호스트 주소를 이용해 정확한 수신자를 찾아갑니다. 이 네트워크 주소와 호스트 주소의 길이, 그리고 목적에 따라 A부터 E까지의 클래스로 나누어집니다. 각 클래스들은 가장 ..

[컴퓨터망] Network Layer (4) - IP Datagram Format

네트워크 계층에서의 패킷 즉 데이터그램은 특정한 형식에 맞게 만들어져 있습니다. 이번 글에서는 데이터그램의 형식에 대해 공부해보도록 하겠습니다. 1. 데이터그램의 형식 데이터그램은 헤더 부분과 상위 계층으로부터 받아온 데이터 부분으로 나누어집니다. 데이터 부분은 상위 계층에서 내려보낸 그대로 사용하고, 헤더 부분만 네트워크 계층에서 만들어 데이터 부분과 합쳐줌으로써 데이터그램을 만들어냅니다. 헤더의 형식은 아래와 같습니다. 각 구성요소들에 대해 하나씩 살펴보도록 하겠습니다. 1. VER (Version): IP 프로토콜의 버전을 의미합니다. IP 프로토콜은 IPv4와 IPv6가 현재 사용되고 있으며, 4자리 비트로 이루어져 있기 때문에, IPv4의 경우 0100, IPv6의 경우에는 0110으로 표기됩니..

[컴퓨터망] Network Layer (3) - Buffer Management

라우터의 입력 포트와 출력 포트에는 모두 큐로 구현된 버퍼가 있어서, 패킷이 버퍼에 도착했을 때 먼저 도착한 패킷이 다음 단계로 넘어가지 못했다면, 버퍼에서 대기하며 자신의 차례를 기다려야 합니다. 이때 입/출력 포트들은 모두 버퍼에 대한 관리를 해 주어야 합니다. 1. 입/출력 포트에서의 버퍼 관리 입력 포트에서는 스위치를 통해 출력 포트로 패킷을 보내주는 과정이 모든 도착하는 패킷을 바로 전달해 줄 수 있을 정도로 빠르지 않기 때문에 관리가 필요합니다. 또한, 여러 입력 포트에서 하나의 출력 포트로 패킷을 보내려 한다면, 포트들은 한 번에 하나의 패킷만 받을 수 있기 때문에, 하나의 포트를 제외한 다른 포트들은 한 포트의 전송이 완료될 때까지 대기를 해야 합니다. 이렇게 버퍼의 가장 앞에 있는 패킷이..