스위치와 라우터는 네트워크에서 패킷을 목적지의 주소로 보내는 공통적인 기능을 수행한다.
라고 이전에 설명했었다.
그러나 당연히 그냥 이동할 수는 없으므로 어디로 가야하는지 확인하는 것이 필요하다.
이때 사용하는 것이 테이블
이다!
그럼 목적지에 도달하는 과정을 설명하기 전에
목적지에 도달하기 위한 과정에서 확인하는 테이블이 만들어지는 과정을 살펴보자.
스위치 테이블은 스위치에서 들어온 패킷이 목적지에 도달하기 위해 목적지의
MAC 주소가 연결된 포트로 연결해주기 위해 사용된다.
스위치로 패킷이 들어오게 되면 출발지의 MAC 주소와 들어온 포트 번호로 스위칭
테이븗이 만들어지게 된다.
⇒ 결국 스위치에 패킷이 들어오면 스위칭 테이블이 만들어진다.
라우팅 테이블은 같은 네트워크 대역에 연결되어 있는 Connected 정보인 C
와
다른 네트워크 대역에 존재하는 Not Connectec 장치의 정보인 D
가 존재한다.
(D는 EIGRP 로 생성된 정보를 나타내는 것으로 이외의 프로토콜을 사용할 경우
다르게 표시될 수 있다. -> 다른 라우팅 프로토콜에 대해서는 따로 설명해보자!)
서브넷 마스크를 이용해 IP주소를 확인한다.
다음과 같이 R1 라우터에 존재할 때 R1 라우터에 대해 no shutdown 으로 인터페이스(포트들을)
를 살리게 되면 해당 인터페이스의 입력된 IP 주소와 서브넷 마스크가 올라오게 되고
이를 기반으로 라우팅 테이블이 채워진다.
그러나 다른 네트워크 대역의 정보들인 Not Connected 정보는 아직 얻을 수 없다.
이는 라우팅 프로토콜인 EIGRP
를 통한 패킷을 서로 주고 받으며 만들어지게 된다.
다음과 같이 라우터가 존재할 때 R1 이 R2 의 정보를 얻어와 라우팅 테이블에 아직 모르는
10.1.1 의 정보를 추가하기 위해서 라우팅 프로토콜 EIGRP
가 필요하다.
router eigrp 100
위의 명령어는 EIGRP 를 사용하는데 숫자 100은 AS 번호로
관리 영역을 구분하기 위한 숫자이다.
동일한 관리 영역에 속하는 라우터들은 모두 동일한 AS 번호로 설정해야 한다.
network 10.1.0.0
R1 과 R2 에서 다음과 같은 명령어를 통해 10.1 로 시작하는 네트워크 정보를 주고 받게다는
의미가 되어 서로 네트워크 정보를 교환하여 라우팅 테이블을 만들게 된다.
(IP 주소는 서브넷 마스크와 교환하고자 하는 네트워크 대역을 고려하여 설정해야
위의 설정으로 원활한 네트워크 정보 교환이 가능하다.)
R1 의 라우팅 테이블
R2 의 라우팅 테이블
위의 과정을 거치게 되면 Type D 로 EIGRP 라우팅 프로토콜의 라우팅 알고리즘인 DUAL 의 약어
와 함께 라우팅 테이블에 정보가 생긴 것을 알 수 있다.
그렇다면 이렇게 얻은 정보로
네트워크 통신은
출발지의 IP 주소
와 MAC주소
, 목적지의 IP 주소
와 MAC 주소
를
이용하게 되는데
목적지의 MAC 주소를 알지 못하고 목적지가 다른 네트워크 대역에 존재한다면 어떻게 목적지에 도달할 수 있을까?
이를 해결하는 것이 ARP Request
, ARP Reply
와 ARP 테이블
이다!
ARP
에 대해 알아보기 전에 잠시 OSI 7 계층에 대해 정리해보자.
통신 모델은 OSI 7 계층 모델을 기준 모델로 참고한다.
각 계층은 필요한 기능을 5개의 모듈로 쪼개 놓은 것으로 이렇게 계층을
쪼개 놓을 경우 각 계층에서 분업화와 전문화 가능하고 관리가 용이해진다.
OSI 7계층 | 계층 이름 | 프로토콜 예 |
---|---|---|
애플리케이션 | 애플리케이션 | HTTP, 텔넷, FTP |
프레젠테이션 | ||
세션 | ||
트랜스포트 | 트랜스포트 | TCP, UDP |
네트워크 | 네트워크 | IPv4, IPv6 |
데이터 링크 | 데이터 링크 | 이더넷, PPP |
피지컬 | 피지컬 | 케이블, 시그널, 커넥터 관련 프로트콜 |
계층 이름은 위에서부터 왕, 귀족, 양반, 평민, 노예 프로콜로 부를 수 있는데 이유가 무엇일까?
⇒ 상위 계층 프로토콜은 하위 계층 프로토콜의 도움을 필요로 하므로
예를 들어 라우터는 3계층 구조이므로 3계층 뿐만 아니라 그 하위의 1,2 계층의
정보도 완성되어야 한다는 뜻이다.
결국 3계층에 해당하는 패킷을 보내기 위해서는 1,2,3 계층 프로토콜을 위한
정보를 모두 가지고 있어야 하므로 2 계층의 MAC 주소와 3계층의 IP 주소를 반드시 가져야 한다.
이제 실제 예시를 통해 ARP 가 무엇이고 어떻게 알지 못하는 2계층의 주소를 알아오는지
확인해보자!
10.1.3.3 에 해당하는 단말에서 10.1.1.1 인 웹 서버에 접속하고자 한다고 가정해보자.
서브넷 마스크는 255.255.255.0 이기 때문에 10.1.3 에는 10.1.1 대역이 존재하지 않으므로
다른 네트워크 대역으로 넘어가기 위해 해당 네트워크 대역의 Default Gateway 인 R1 의 ip 주소 10.1.3.1 에 가고자 한다.
그러나 R1 의 IP 주소는 알고 있으나 MAC 주소를 알지 못하기 때문에 패킷을 만들 수 없어
게이트웨이를 찾아갈 수 없다.
이때 사용하는 것이 ARP 프로토콜
로
결국 라우터는 IP 주소에 대한 라우팅 테이블과 MAC 주소에 대한 ARP 테이블이 완성되어야 통신이 가능하고 둘 중 하나라도 완성되어 있지 않는다면 패킷을 버리게 된다.
3계층의 목적지 IP 주소는 알고 있지만 2계층의 목적지 MAC 주소를 모를 경우 단말에서
브로드캐스트 패킷으로 ARP Request
를 보내게 된다.
ARP Request 당시에는 ARP 테이블이 비워져있다.
ARP Request 는 브로드캐스트로 SW 를 통해 모든 단말에 전달되고 Request 안에 있는
Default Gateway 의 주소와 비교하여 해당 IP 와 자신의 IP 가 일치한다면
본인의 MAC 주소를 실어서 ARP Reply
를 보내게 된다.
위의 과정으로 Default Gateway 의 MAC 주소를 얻게되어 ARP 테이블을 완성하게 되었다.
R1 의 10.1.3.1 포트에 대한 목적지 였기 때문에 해당 포트의 MAC 주소였으나
이후 10.1.2.1 의 게이트웨이에 도달하기 위해 라우터의 옷갈아입히기를 통해
목적지 MAC 주소가 게이트웨이 포트에 해당하는 MAC 주소 바뀌었다.
이제 Gateway의 MAC 주소를 얻었으므로 패킷이 Gateway 로 향하게 되고
Gateway 에 도착한 패킷은 10.1.2.3 을 통해 나아가야하므로 해당 포트에 대한
MAC 주소로 옷갈아입히는 것처럼 2계층 MAC 주소가 바뀌게 된다.
R1 에 도착한 패킷은 이전과 마찬가지로 ARP Request 와 Reply가 발생할 것 같지만
위의 그림처럼 바로 R2 로 이동하게 된다.
그 이유는 바로
라우터 설정 시 EIGRP
를 통한 네트워크 정보를 교환하는 과정에서 업데이트 패킷을 통해 해당 네트워크 대역의 정보를 얻게 되고 이를 바탕으로 라우팅 테이블과 ARP 테이블이 완성되므로
따로 ARP 프로토콜을 이용하지 않고도 이미 완성되어 있기 때문에 바로 R2 로 이동하게 된다.
(만약 EIGRP 를 사용하지 않아 정보를 모르는 경우에는 ARP 가 동작하게 된다.)
R2 에 도착하고 보니 이전 10.1.3 에서와 마찬가지로
목적지인 10.1.1.1 에 대한 IP 주소는 알고 있으나 MAC 주소를 알지 못하고 이는
ARP 테이블이 완성되어 있지 않다는 것을 의미하므로 ARP Request 가 발생하고
목적지에 해당하는 웹서버 10.1.1.1 에서 ARP Reply 를 하게 되고
그렇게 ARP 테이블이 완성된 R2 에서 웹서버를 항해 가게 된다.
이렇게 ping 으로 10.1.1.1 에 도달할 수 있지만 처음 Request 는 time out 이 되어 loss 가 생겼다.
그 이유는
최초에 생성했던 ping Request 는 10.1.3.3 의 ARP 테이블이 완성되지 않아
아예 ping 이 보내지지 않다가 ARP 테이블이 완성된 이후 R2 까지 도달하게 되는데
R2 또한 ARP 테이블이 완성되어 있지 않은 상태이다.
따라서 라우터의 기능에 따라 해당 패킷은 버려지게 된다.
그리고 이어서 ARP 가 발생하는 것이므로 위 결과 처럼
네트워크 통신에서 최초 Requset 는 Loss 가 발생할 수도 있다.
위의 과정으로 정리할 수 있는
라우터 | 1계층 (증폭) + 2계층 (옷갈아입히기) + 라우팅 |
---|---|
스위치 | 1계층 (증폭) + 2계층 (스위칭/플러딩) |
네트워크 통신을 위해서는