IP 주소와 MAC 주소
인터넷 작업에서 데이터는 복수의 네트워크를 경유해서 최종 수신 컴퓨터까지 도달한다. 이때 경유하는 지점을 알고 있어야 한다. 예를 들어 어떤 네트워크 A에서 B를 경유해서 C에 간다고 할 때, A에서 나온 데이터그램은 B로 들어가고, 이어서 C로 들어가는데, B로 들어간 시점에서 'C로 중계해줄 어딘가'의 장소, 최종 수신처인 C에 도착하기 위한 다음 수신처로 가야한다는 의미이다. 이를 MAC 주소로 지정해서 '다음으로 보낼 장소'를 결정한다.
MAC 주소로 '다음에 보낼 장소'를 지정하고 거기에 도달하면 다시 MAC 주소로 '다음에 보낼 장소'를 지정한다. 이것을 반복해서 최종 수신처에 도달한다. MAC 주소는 '다음 수신처'이기 때문에 계속 변하지만, IP 주소는 데이터의 최종 수신처이기 때문에 변하지 않는다.
=> MAC 주소는 같은 네트워크 내에서 수신처를 결정하고, IP 주소는 수신처의 컴퓨터를 결정한다. 즉, IP 주소가 데이터의 최종 수신처가 되고, MAC 주소가 그 다음 정의되는 수신처가 된다.
경로
IP 주소와 MAC 주소에서 배운 바에 따르면, MAC 주소로 '다음 수신처'를 지정하고, IP 주소로 '최종 수신처'를 지정해서 최종 수신처까지의 경로가 만들어진다. 이때 라우터가 이 경로를 결정하는 역할을 한다. 다만 라우터는 실제로 '경로를 결정'하지 않는다. 기본적으로 라우터는 자신의 위치에서 수신처까지 가기 위해 다음에 어디로 보내야 할 지를 결정할 뿐이다(홉 바이 홉, Hop-by-Hop). 즉, 라우터는 '송신처에서 수신처'까지의 모든 길을 이해하고 있지 않다.
라우터는 네트워크의 경계상에 배치되어 전송받은 데이터그램을 라우팅해서 다음 수신처를 결정한다. 이때 말하는 다음 수신처는 수신처에 가기 위한 다음 라우터를 의미한다. 다만, 수신처가 라우터와 접한 네트워크 내에 있는 경우에는 수신처의 컴퓨터 자체가 다음 수신처가 된다.
중요한 것은, 라우터가 없거나 설정되어 있지 않다면 다른 네트워크에 데이터그램을 보낼 수 없다는 점이다. 왜냐하면 라우터가 라우팅함으로써 다른 네트워크까지의 경로가 생기는데, 라우터가 없으면 경로가 생기지 않아 다른 네트워크에 도달할 수 없기 때문이다. 만약 같은 허브에 두 대의 컴퓨터가 연결되어 있더라도, 두 대의 컴퓨터가 서로 다른 네트워크에 소속되어 있다면 데이터그램이 전달되지 않는다. 왜냐하면 컴퓨터는 같은 네트워크에 수신처가 있는 경우에는 수신처가 직접 송신하지만, 다른 네트워크에 수신처가 있는 경우에는 라우터로 송신하기 때문이다.
이처럼 라우터가 설정되어 있지 않다면 다른 네트워크에 대한 데이터 전송 자체가 불가능하기 때문에 컴퓨터가 지칭하는 라우터를 디폴트 게이트웨이(Default Gateway)라고 한다.
라우터란?
인터넷 작업 과정에서 라우터의 역할을 알아보자.
- 어떤 네트워크에서 다른 네트워크에 데이터그램을 보내는 역할을 수행한다.
- 라우터는 네트워크 경계상에 있기 때문에 복수의 네트워크를 연결한다.
- '네트워크와 네트워크의 경계상'에 배치되기 때문에 복수의 인터페이스를 가질 수 있다. 이때 라우터의 각 인터페이스는 각각의 네트워크에 소속되어 있는 형태다.
- 전송받은 데이터그램에 조건을 붙여 해당 데이터그램을 파기하는 필터링(Filtering)을 수행한다.
- 필터링을 통해 라우팅하는 데이터를 분류할 수 있다.
라우터의 동작
라우터는 라우팅 테이블이라는 최적 경로 지도를 가지고 있다. 라우팅 테이블에는 수신처 네트워크까지의 거리, 다음에 도달하는 라우터, 해당 라우터에 연결되어 있는 자신의 인터페이스 등이 기재되어 있다. 이때 다음에 도달하는 라우터는 최장일치의 룰(Longest Match)에 따라 결정된다.
(배경지식) 실제 데이터그램 송신처 IP 주소로부터 라우팅 테이블의 수신처 네트워크 주소를 결정해서 다음 라우터랑 송신 인터페이스를 결정하한다. 최장일치의 룰은 수신처 IP 주소와 수신처 네트워크 주소를 비교할 때 사용하는 규칙으로, IP 주소의 비트열과 네트워크 주소의 비트열을 앞에서부터 순서대로 비교해서 가장 많이 일치하는 것부터 선택하여 최장일치라고 한다.
라우터 동작
- 호스트로부터 패킷을 수신받는다.
- 수신처 IP 주소로부터 수신처 네트워크를 결정한다.
- 라우팅 테이블에서 다음 중계할 라우터, 송신할 인터페이스가 결정된다.
- 결정된 인터페이스로부터 패킷을 송신한다.
브로드캐스트 도메인
브로드캐스트는 라우터를 넘어서 전송할 수 없다. 이는 라우터가 네트워크를 나누기 때문에 브로드캐스트가 다른 네트워크에 송신되지 않기 때문이다. 이때 이 브로드캐스트가 도달하는 범위를 브로드캐스트 도메인(Broadcast Domain)이라고 한다. 즉, 라우터는 브로드캐스트 도메인을 나눌 수 있다. (충돌 도메인은 스위치가 구분, 브로드캐스트 도메인은 라우터가 구분, 허브는 도메인을 나누는 데 영향을 미치지 않음)
ARP와 라우터
수신처의 MAC 주소를 알아내기 위해서는 ARP를 사용한다. ARP는 브로드캐스트를 사용하기 때문에 수신처가 라우터 너머에 있는 경우 수신처까지 도달하지 않는다. 때문에 수신처의 MAC 주소를 알 수 없다. 이를 해결하고자 디폴트 게이트웨이를 사용한다. ??????? 디폴트 게이트웨이 또한 라우터의 역할을 하며 네트워크의 출입구가 된다.
디폴트 게이트웨이
때문에 다른 네트워크로 데이터를 전송하고 싶은 호스트는 일단 디폴트 게이트웨이로 데이터를 보내서 다른 네트워크로 전송한다. 즉, 컴퓨터가 최초로 데이터를 보내는 수신처는 디폴트 게이트웨이가 된다. 이는 컴퓨터가 다른 네트워크에 데이터를 송신할 경우, 수신처는 반드시 디폴트 게이트웨이의 MAC 주소가 된다는 것을 의미한다.
지금까지 배운 것을 정리하면, 컴퓨터는 다른 네트워크에 데이터를 송신할 때 디폴트 게이트웨이로 ARP를 수행하며, 때문에 컴퓨터에는 디폴트 게이트웨이의 IP 주소를 미리 설정하고, 그 설정은 수동으로 진행하거나 DHCP를 이용한다고 정리할 수 있다.
라우팅 테이블
라우팅 테이블은 간단히 말하면, 수신처 네트워크, 중계지점, 메트릭, 수신처의 출구가 기재되어 있는 표이다. 최장일치의 룰에 따라, 라우터는 수신처 네트워크 주소나 라우팅 테이블을 비교해서 경로를 찾아낸다. 만약 라우팅 테이블에 수신처 네트워크가 없을 때는 수신처 불명으로 데이터그램을 파기한다. 이를 통해 스위치는 수신처를 모를 경우 플러딩하지만 라우터는 파기한다는 사실을 알 수 있다.
2개의 라우팅
경로에서 라우터는 자신의 위치에서 수신처까지 가기 위해 다음에 어디로 보내야 할 지를 결정할 뿐이라고 배웠다. 이는 라우터가 송신처에서 수신처까지 모든 경로를 알지 못함을 의미한다. 하지만 라우터는 수신처 네트워크로 향하는 최적의 경로를 찾기 위해 다른 네트워크 경로를 최대한 많이, 되도록 모두 알아야 할 필요가 있다. 라우터가 다른 네트워크의 모든 경로를 알아내는 방법에는 정적 라우팅과 동적 라우팅 방법이 존재한다.
정적 라우팅의 경우 수동으로 입력한 경로를 사용할 수 없게 되는 경우가 발생할 수 있다. 이때는 관리자가 수동으로 경로를 다시 갱신해야 한다. 하지만 이를 위해서는 언제 발생할 지 모를 장애를 대비하기 위해 관리자가 라우터에 항상 신경을 써야한다는 단점이 있다. 때문에 라우터가 자동으로 정보를 서로 교환해서 경로를 알아내는 동적 라우팅을 사용한다.
동적 라우팅의 경우 라우터가 서로 정보를 교환하면서 경로를 알아내기 때문에 노력이 덜 든다는 장점이 있지만 여러 단점도 가지고 있다.
- 라우터끼리 정보를 교환한다는 것은 데이터를 서로 주고받는 다는 것이다. 라우터끼리 정보를 교환하면서 데이터 전송에 사용할 분량이 줄어들어 회선 전송을 압박한다.
- 서로 교환한 정보를 가지고 최적의 경로를 계산해야 하므로, 라우터가 이를 처리할 수 있을 정도의 처리능력을 가지고 있어야 한다. 능력이 부족한 라우터의 경우, 경로 계산에 치우쳐 데이터그램의 전송 처리가 늦어질 수 있다.
- 모든 라우터가 동일한 정보를 가져야 한다(Convergence, 컨버전스).
보통은 네트워크에 어떤 장애가 발생하면 패킷 전송을 할 수 없기 때문에 우회로를 만드는 등 중복성* 유지를 위해 동적 라우팅을 사용한다. 중복성 유지를 위해 라우터는 동적 라우팅을 실현할 라우팅 프로토콜(Routing Protocol)을 사용할 수 있도록 되어 있다. 라우팅 프로토콜이란 근접해 있는 라우터 간의 네트워크 정보를 서로 교환하기 위한 규칙이다. 라우팅 프로토콜에 따라 네트워크 정보를 교환하고, 교환한 정보를 근거로 라우팅 테이블을 변경한다.
*중복성(Redundancy) : 여분이나 중복이 있다는 것을 말함. 네트워크에서는 여분을 가지고 있어서 장애 등에 대응할 수 있는 것을 가리킨다.
자율화 시스템(배경지식)
자율화 시스템(Autonomous System)이란 하나의 관리 단체에 의해 관리되는 네트워크 집합체를 말한다. 라우팅에서는 AS가 한 개의 범위로써 취급된다. 왜냐하면 인터넷에는 너무 많은 네트워크가 존재하기 때문에 같은 조직이 관리하는 복수의 네트워크를 AS로 통합하여 큰 단위의 라우팅을 수행하기 때문이다.
라우팅 프로토콜의 종류
라우팅 프로토콜은 AS를 기준으로 AS 간 라우팅용과 AS 내부 라우팅용 이렇게 두 가지가 있다. 각각 EGP(Exterior Gateway Protocol), IGP(Interior Gateway Protocol)라고도 부른다. 이때 EGP와 IGP는 특정 프로토콜을 가리키는 것이 아니라 라우팅 프로토콜의 종류를 나타내는 말이다.
종류
|
라우팅 프로토콜
|
동작
|
EGP
|
EGP(Exterior Gateway Protocol)
|
디스턴스벡터
|
|
BGP(Border Gateway Protocol)
|
경로벡터
|
IGP
|
RIP(Routing Information Protocol)
|
디스턴스벡터
|
|
OSRF(Open Shortest Path First)
|
링크상태
|
|
IS-IS(IntermediateSystem to IntermediateSystem)
|
링크상태
|
|
EIGRP(Enhanced Interior Gateway Routing Protocol)
|
하이브리드
|
라우팅 프로토콜의 역할
라우터는 근접해있는 라우터와 네트워크 정보를 서로 교환한다. 이 과정에서 정보교환을 언제 할지, 어떻게 할지, 누구에게 전송할지, 어떤 정보를 전송할지 같은 것을 라우팅 프로토콜이 결정한다. 교환한 경로 정보를 기준으로 최적의 경로를 라우팅 테이블에 기재하면, 항상 최적의 경로를 사용할 수 있게 된다.
메트릭(배경지식)
최적의 경로를 결정할 때의 판단기준을 메트릭(Metric)이라고 한다. 중계하는 라우터 수, 회선의 속도, 정체상태, 에러 발생률 등의 판단기준에 따라 라우팅 프로토콜에 의해 결정된 값을 계산해서 그 중 최소 값을 갖는 것을 최적의 경로로 결정한다.
RIP(배경지식)????
라우터가 다른 라우터와 교환하는 정보를 RIP에서는 라우팅 업데이트(Routing Update)라고 부른다. RIP에서는 이것을 서로 교환하는데 이때, 라우팅 테이블을 그대로 교환한다.
=> 즉, RIP는 간단히 말해서 업데이트를 수신하면, 자기가 모르는 네트워크를 테이블에 추가하는 것이다. 이때, 업데이트를 보내 온 라우터를 그 앞의 네트워크에의 중계 라우터로, 업데이트를 받은 인터페이스를 그 앞의 네트워크에의 송신 인터페이스로 정한다.
RIP는 정보를30초에 1번 주기로 보내고, 이 업데이트를 6번 수신 받지 않으면 그 라우터에는 장애가 발생했다고 간주하여 그 라우터를 사용하는 경로들을 파기한다.
RIP는 메트릭에서 홉 수를 사용하는데, 홉 수라는 것은 수신처 네트워크까지 통과하는 라우터 수를 의미한다.
RIP의 동작
- 자신에게 접속해 있는 네트워크를 포함해서 인접하고 있는 라우터 정보가 RIP에 의해 라우팅 테이블에 추가된다.
- 다음 갱신에서 방금 전 갱신된 정보가 송수신된다. 이것으로 컨버전스가 된다(일관성을 유지한다).
RIP에서는 이미 테이블에 존재하는 네트워크에 대해서 새로운 정보가 업데이트되어 새로운 경로 쪽이 메트릭이 작으면 그쪽을 테이블에 기재한다.
ICMP
ICMP(Internet Control Message Protocol), 직역하면 '인터넷 제어 메시지 프로토콜', 의역하면 '에러 보고 프로토콜'이라 할 수 있다. ICMP는 IP 데이터그램에 ICMP 메시지를 넣음으로써 네트워크의 제어 · 관리 등을 수행하는 프로토콜이다.
ICMP 메시지란 ICMP에서 사용되는 정보로, 이 정보를 IP 데이터그램의 페이로드에 넣는다. 보통 IP 데이터그램의 페이로드에는 TCP 세그먼트라든지 UDP 데이터그램이 들어가는데 이것들 대신에 ICMP 메시지를 넣어서 보낸다.
일반적인 IP 패킷
ICMP 패킷
ICMP 메시지
타입
|
코드
|
체크섬
|
옵션
|
데이터
|
1옥텟
|
1옥텟
|
2옥텟
|
4옥텟
|
~64옥텟
|
ICMP의 종류
ICMP에는 크게 나눠서 Query 메시지와 Error 메시지로 구분할 수 있다.
Query 메시지는 상태를 조사하기 위해 사용되는 메시지이고, Error는 에러를 통지하기 위한 메시지이다.
또한 Query 메시지와 Error 메시지 각각에는 여러 가지의 타입이 존재한다. 타입은 총 11가지 존재한다.
ICMP 타입
데이터
|
데이터
|
데이터
|
데이터
|
0
|
Echo Reply
|
Echo 응답
|
Query
|
3
|
Destination Unreachable
|
수신처 도달 불가
|
Error
|
4
|
Source Quench
|
전송 제어 지시
|
Error
|
5
|
Redirect
|
최적 경로 통지
|
Error
|
8
|
Echo Request
|
요청
|
Query
|
11
|
Time Exceeded
|
시간 초과에 의한 패킷 제거
|
Error
|
12
|
Parameter Problem
|
잘못된 파라미터에 의한 에러
|
Error
|
13
|
Timestamp Request
|
타임 스탬프 요청
|
Query
|
14
|
Timestamp Reply
|
타임 스탬프 응답
|
Query
|
15
|
Information Request
|
(미사용)
|
Query
|
16
|
Information Reply
|
(미사용)
|
Query
|
Destination Unreachable : 수신처에 도달할 수 없는 경우 라우터 또는 호스트가 타입3인 Destination Unreachable을 보낸다. 이 과정에서 도달할 수 없는 이유를 코드에 넣는다.
타입
|
타입
|
타입
|
0
|
Net Unreachable
|
네트워크에 도달 불능
|
1
|
Host Unreachable
|
호스트에 도달 불능
|
2
|
Protocol Unreachable
|
그 프로토콜은 사용할 수 없다.
|
3
|
Port Unreachable
|
대상 포트가 닫혀있다.
|
4
|
Fragmentation Needed and DF Set
|
ᅟIP 패킷을 분할하고 싶지만
분할이 불가능하도록 되어있다.
|
TTL
TTL(Time To Live) : 생존시간, IP 데이터그램의 생존시간을 의미한다. IP 데이터그램은 TTL은 라우터를 경유할 때마다 1만큼씩 줄어들고, 0이 되면 그 데이터그램은 파기된다.
TTL이 존재하는 이유 : 라우팅에서 경로 정보에 오류가 일어날 수도 있는데, 예를 들어, 정적 라우팅 테이블에서 수동으로 경로를 입력할 때 중계 라우터를 틀리는 경우가 있다. 이렇게 되면 TTL이 없을 시, 수신처에 도달하지 않고 어딘가로 가버리든지 또는 같은 장소를 빙글빙글 계속해서 돌게 된다. 때문에 TTL을 도입해 일정한 시간이 경과되면 파기하도록 한다.
Linux에서는 64, Windows에서는 128개인 경우가 대부분이다.
Echo
Echo는 Echo를 요청하고 Echo를 응답하기 때문에 Echo라는 이름을 가짐(메아리처럼 돌아옴)
=> 즉, 송신측에서 에코 요청(Echo Request, 타입 8)을 보내면, 그것을 수신한 컴퓨터는 에코 응답(Echo Reply, 타입 0)을 돌려 보내는 구조를 의미한다.
'Echo' 개념을 이용한 ping이라는 임의의 수신처에게 Echo 요청을 보내는 소프트웨어가 있다. 이를 이용해 송신처와 수신처 간의 데이터를 송수신할 수 있음을 확인할 수 있다. 또한 에코의 요청과 응답에 걸리는 시간을 측정함으로써, 네트워크 상태를 조사할 수 있다.
Time Exceeded
TTL은 끊어진 패킷을 파기하는데, 이때 파기한 것을 통지하는 메시지가 Time Exceeded(타입 11)이다.
이 타입 11을 이용한 traceroute라는 네트워크의 체크용 소프트웨어가 있는데
Traceroute는 수신처까지의 경로를 가르쳐 주는 소프트웨어로, 정확히 말하면, 수신처에 도달하기까지 경유하는 라우터를 가르쳐 준다. 하지만 이는 악용될 수 있기 때문에 관리자는 ICMP 운용에 주의할 필요가 있다. Traceroute를 통해 IP 주소를 알면 거기를 공격할 수 있고, 그로 인해 이상이 생기면 네트워크에 광범위하게 영향을 끼치게 된다.
Traceroute
- TTL=1에서 수신처에 패킷을 보내면, 첫 번째 라우터에서 Time Exceeded를 보낸다.
- 다음은 TTL=2에서 수신처에 패킷을 보내고, 두 번째 라우터에서 Time Exceeded를 보낸다.
- 이후부터 TTL을 1씩 늘려가고 수신처까지 패킷을 전달한다.
- 수신처까지 데이터가 도달해 응답 패킷을 수신하면, 지금까지 Time Exceeded를 보내온 라우터를 표시한다. 그것이 수신처까지의 경유 라우터C의 라우터 일람표가 된다.
'독서 > (하루 3분)네트워크 교실' 카테고리의 다른 글
(하루 3분)네트워크 교실 5장 - 커넥션과 포트 번호 (0) | 2022.12.08 |
---|---|
(하루 3분)네트워크 교실 3장 - IP 어드레싱 (0) | 2022.12.05 |
(하루 3분)네트워크 교실 2장 - 신호의 전송과 충돌 (0) | 2022.12.02 |
(하루 3분)네트워크 교실 1장 - 네트워크 기초 지식 (2) | 2022.12.01 |