본 내용은 Computer networking : a top-down approach 책을 바탕으로 정리하였습니다.
Index
- 1. addressing, ARP
- 2. Ethernet
- 3. switches
- 4. VLANS
앞 장에서는 브로드캐스팅과 다중 접속 프로토콜(multiple access)에 대해 다루어보았고,
이제 링크 계층에서의 스위치 근거리 네트워크에 대해 설명해보려 한다.
우선, 스위치 네트워크에서는 링크 계층 프레임을 전달하기 위해서 IP 주소가 아닌 링크 주소(MAC address)를 사용한다는 것을 다시 한번 상기해보자.
이번 장에서는 링크 계층 주소체계와 이더넷 프로토콜, 링크 계층 스위치에 대해 살펴볼 예정이다.
1. addressing, ARP
호스트와 라우터들은 네트워크 계층 주소뿐만 아니라 링크 계층 주소도 가지고 있다.
이번에는 왜 주소가 2개나 필요한 것인지 살펴보자.
1.1 MAC 주소
네트워크 계층의 IP 주소가 집 주소라고 한다면, 링크 계층의 MAC 주소는 주민등록번호가 될 것이다.
네트워크 장비가 어딘가로 옮겨졌을 때 (노트북, 데스크톱 등) IP 주소는 바뀌지만, 그 장비 고유의 주소는 바뀌지 않기 때문이다.
위 그림은 MAC 주소와 LAN을 설명하기 위해 가져왔다.
각 호스트 주변에 있는 6바이트 주소가 바로 MAC 주소이고, 실제 링크 계층의 주소를 가진 것은 호스트나 라우터가 아닌 어댑터이다. 따라서 여러 어댑터를 가진 기기들은 자세히 보면 MAC 주소가 여러 개인 것을 확인해볼 수 있다.
추가로, 6바이트는 2^48 개만큼의 사용 가능한 mac 주소가 있다고 보면 될 것이다.(unique 하다!)
가운데 LAN은 서브넷과 유사한 개념이며 라우터를 거치지 않은 호스트들을 담은 네트워크이다.
1.2 ARP
ARP는 address resolution protocol의 약자로 주소 해결 프로토콜이라 해석된다.
즉 IP주소와 MAC 주소 사이의 변환을 하기 위해 만들어진 프로토콜이다.(정확히는 IP주소를 MAC 주소로 변환)
ARP의 동작은 각 호스트와 라우터의 메모리 안에 있는 ARP 테이블을 이용해 진행되는데,
테이블은 <IP주소, MAC 주소, TTL>을 담고 있다.
(TTL(time to live) : 각 매핑이 언제 삭제되는지를 나타낸다.)
1.3 ARP : same LAN
노드 A가 같은 서브넷의 다른 IP 주소(B)로 가는 데이터그램을 전송하려 한다고 하자.
A는 주어진 IP 주소로부터 목적지의 MAC 주소를 획득해야 한다.
만약 ARP table에 IP에 대응되는 MAC 주소가 없을 때, A는 우선 ARP 질의 패킷이라는 특수 패킷을 구성한다.
이후 A는 ARP 질의 패킷을 어댑터에게 전달하고, 어댑터가 MAC 브로트 캐스트 주소 FF-FF-FF-FF-FF-FF로 패킷을 브로드 캐스팅한다.
그러면 동일한 LAN에 있는 모든 노드는 ARP 질의를 받게 되고, 그중 B는 질의를 받으면 A에게 자신의 MAC 주소를 건네준다. 이때 B는 유니캐스트를 통해 A에게만 주소를 전달하게 된다.
따라서 A는 B의 MAC 주소를 받게 되고, A의 ARP 테이블에 주소들을 매핑하고, 마침내 데이터그램을 전송할 수 있게 된다.
이때 주목할만한 점은 ARP는 "plug-and-play"이기 때문에 시스템 관리자 없이도 ARP 테이블을 자동으로 구축한다.
1.4 ARP : routing to another LAN
이번엔 어떤 서브넷에 있는 호스트가 그 서브넷에 없는 호스트에게 데이터그램을 전송하는 복잡한 상황을 살펴보자.
위 그림처럼 하나의 라우터 R 사이로 서로 다른 LAN이 있고, 왼쪽 a호스트에서 b호스트로 데이터그램을 전달하고자 한다.
과정
- 1. 데이터그램이 111.111.111.111에서 다른 서브넷에 있는 호스트로 전달되기 위해서 먼저 라우터 인터페이스 111.111.111.110으로 전달해야 한다. 이는 first-hop 라우터의 IP 주소이다.(DHCP를 통해 구할 수 있다)
- 2. ARP를 사용해 first-hop 라우터의 MAC 주소를 가질 수 있다.
- 3. 이후 A는 목적지가 222.222.222.222인 데이터그램을 포함한 프레임을 라우터에 전송하게 된다.(서브넷 마스크 이용)
- 4. 라우터는 라우터의 포워딩 테이블을 참조하여 데이터그램을 라우터 인터페이스 222.222.222.220을 통해 B로 전달한다.(라우터 내부에서 역 캡슐화 -> 캡슐화 과정이 있고, IP 주소로 prefix를 체크)
2. 이더넷
이더넷은 오늘날 가장 지배적인 LAN 기술이라 말한다.
이더넷이 성공한 이유는 고속 랜, 단일 칩, 단순함, 값이 쌈 등의 이유가 있다고 하는데, 여기서는 별로 중요하진 않다.
2.1 이더넷 토폴로지
이더넷 토폴로지는 이더넷의 데이터 흐름 방식을 말한다.
90년대 중반까지 이더넷은 버스 모양 토폴로지를 사용했고,
90년대 후반부터 지금까지는 허브(Hub) 기반의 스타 토폴로지를 사용하는 이더넷으로 대체했다.
2000년대 이 허브는 스위치로 대체되었고, 스위치에 대해서는 밑에서 설명할 예정이다.
2.1 이더넷 프레임 구조
이더넷 프레임의 6가지 필드
- preamble : 8바이트로 구성되고, 첫 7바이트는 "10101010", 마지막 바이트는 "10101011"로 되어있다. 각각은 수신 어댑터를 깨우고, 수신자의 clock을 송신자의 clock과 동기화시키는 역할을 한다. (이더넷의 종류가 다르기 때문에 동기화 과정이 필요하다.)
- 목적지, 출발지 주소 : 프레임을 LAN으로 전송 및 수신하는 어댑터의 MAC 주소를 포함한다.
- 타입 : data가 무엇을 의미하는지 구분한다. 즉 도착한 프레임이 어떤 네트워크 계층 프로토콜로 데이터 필드의 내용을 전달해야 할지 구분할 필요가 있다.
- 데이터 : IP 데이터그램을 운반한다. 이더넷의 MTU(maximum transfer unit)은 1500바이트이다. 만약 데이터그램이 할당량을 초과하면 그냥 버린다.
- 순환 중복검사(CRC) : 프레임에 오류가 있는지 검출하는 역할을 한다.
2.2 이더넷의 특성
- connectionless : 핸드셰이크 과정이 없다.
- unreliable : ack, nak 따위를 보내지 않는다.
3. 스위치
스위치는 링크 계층의 장치로, 점 대 점 통신으로 인한 충돌 방지를 위해 등장하였다.
특징
- transparent : 호스트는 스위치의 존재를 인식하지 못함 (투명성)
- 라우터는 IP 주소가 있지만, 링크 스위치는 주소가 없음
- plug-and-play : 네트워크 관리자의 작업이 필요하지 않다.
- 스위치 자체로 자가 학습을 한다.
3.1 Switch : multiple simultaneous transmission
위 그림의 가운데는 스위치를 보여주고, 6개의 호스트들은 각각 3개의 독립된 양방향 경로를 갖게 된다.
만약 가운데가 스위치가 아닌 허브로 되어있다면, 연결된 호스트들은 서로 충돌을 하게 된다.
하지만 스위치는 각각의 Path들이 독립적으로 구성되어있기 때문에 스위치에서 충돌이 발생하지 않는다.
3.2 Switch forwarding table
스위치 테이블에는 <MAC 주소, 호스트로 가는 인터페이스, TTL>이 저장되어 있는데,
포워딩 테이블처럼 MAC 주소를 가지고 어떤 인터페이스로 보낼 것인지 결정하는 것이다.
이러한 스위치 테이블을 만들기 위해 스위치는 자가 학습이라는 아주 놀라운 기능을 한다.
3.3 Switch : self-learning
스위치의 자가학습은 호스트들 간 프레임을 옮기는 과정에서
어떤 호스트가 어떤 인터페이스를 통해 도달할 수 있는지를 배워 스위치 테이블에 저장하는 것이다.
만약 아까와 같은 그림에서
출발지 A가 A`에게 프레임을 보내려고 한다고 가정하자.
과정
- 1. 우선 A는 스위치로 프레임을 보낸다.
- 2. 스위치는 A에 대한 프레임을 저장한다. (A, 1, ttl)
- 3. 스위치는 A` 으로의 경로를 모르기 때문에 연결된 모든 링크로 프레임을 브로드캐스트 한다. 이때 스위치의 브로드캐스트를 "flooding"이라고도 부른다.
- 4. A`이 프레임을 받았다면 A에 응답 메시지 ACK를 보낸다.
- 5. 4번의 과정에서 A`에 대한 스위치 테이블이 만들어진다. (A`, 4, ttl)
3.4 Switches vs routers
스위치와 라우터의 차이는 명확하다.
스위치는 link-layer(2 계층)이고 router는 network-layer(3 계층)의 장치이다.
또한 스위치는 자신의 포워딩 테이블을 만들 때 flooding과 자가 학습을 하여 MAC 주소를 담지만
라우터는 라우팅 알고리즘을 이용해 IP주소를 담게 된다.
4. VLANs
VLAN은 virtual local area network의 약자로 가상 근거리 네트워크를 의미한다.
앞서 계속 설명한 랜의 경우 그룹별로 별도의 스위치 랜을 가지고 있으며,
각 그룹은 계층적 구조로 구성되어 있었다.
하지만 이런 구성은 트래픽 전달 범위가 매우 크기 때문에, 스위치 테이블이 오버플로우가 발생할 위험이 있다.
따라서 이러한 단점을 해결하기 위해 VLAN을 지원하는 스위치를 사용한다.
VLAN은 플러딩 구간을 나누기 위해 중간에 라우터를 설치하고, 플러딩 하는 브로드캐스트 도메인을 분리시킨다.
그림을 보면
이런 식으로 스위치 포트의 그룹을 나눈다는 것이다.
각 그룹은 하나의 VLAN을 구성하며, 한 VLAN의 포트들은 하나의 브로드캐스트 도메인을 형성한다.
특징
- traffic isolation : 포트는 자신이 속한 그룹의 포트로만 프레임을 보낼 수 있다.
- dynamic membership : 포트는 유동적으로 VLAN을 옮길 수 있다.
- 그룹 사이로 트래픽을 보내려면 외부 라우터를 이용하면 된다.
- trunk port : 스위치마다 하나의 특수 포트가 2개의 VLAN 스위치를 연결하는 포트이다. 이 포트는 모든 VLAN에 속하며 한 VLAN에서 전송한 프레임들을 트렁크 링크를 통해 다른 스위치로 전달해준다.
'Computer Network' 카테고리의 다른 글
15. MPLS, 데이터 센터 네트워킹 (3) | 2020.06.16 |
---|---|
13. Link layer (0) | 2020.06.15 |
12. SDN이란? (0) | 2020.06.14 |
11. 인터넷에서의 라우팅 (1) | 2020.06.14 |
10. 라우팅 알고리즘 (2) | 2020.06.09 |