Switched Local Area Networks: 두 판 사이의 차이
| 75번째 줄: | 75번째 줄: | ||
===[[Link-Layer Switches]]=== | ===[[Link-Layer Switches]]=== | ||
자세한 내용은 [[Link-Layer Switches]] 문서를 참조하십시오. | 자세한 내용은 [[Link-Layer Switches]] 문서를 참조하십시오. | ||
==Virtual Local Area Networks(VLANs)== | |||
==각주== | ==각주== | ||
[[분류:컴퓨터 네트워크]] | [[분류:컴퓨터 네트워크]] | ||
2025년 5월 22일 (목) 10:31 판
상위 문서: Data Link Layer
개요


Figure 1은 네 개의 스위치를 사용하여 세 개의 학과 부서와, 두 개의 서버와, 하나의 라우터를 연결한 스위치 기반 LAN(switched local area network)를 보여준다. 이 스위치들은 link layer에서 동작하며, network layer의 데이터 그램이 아닌, link layer의 프레임을 스위칭한다. 따라서 이들은 IP 주소, 즉 network layer에서의 주소를 인식하지 않으며, Intra-AS Routing의 RIP, OSPF와 같은 라우팅 알고리즘을 통해 경로를 결정하지 않는다. 따라서 IP 주소를 사용하는 대신, link-layer 주소를 사용하여 스위치 네트워크를 통해서 프레임을 전송한다./
MAC Addresses
호스트나 라우터의 NIC(네트워크 인터페이스)는 link-layer 주소인 MAC 주소를 가지고 있다. 따라서 하나의 호스트나 라우터가 여러 개의 네트워크 인터페이스를 가지고 있다면, MAC 주소도 여러 개가 존재하며, 마찬가지로 IP 주소도 여러 개가 존재해야 한다. 그러나 주의할 점은, link layer의 스위치의 인터페이스는 MAC 주소를 가지지 않는다는 것이다. 이는 스위치의 역할이 호스트와 라우터 사이에서 데이터그램을 중계하는 것이기 때문이다. 이는 figure 2에 잘 나타나 있다. MAC 주소는 LAN 주소, physical 주소, link-layer 주소라고도 불린다.
대부분의 LAN(예: Ethernet, WiFi)은 MAC 주소가 48비트이므로, MAC 주소는 총 248개가 존재한다. 이때 figure 2와 같이 MAC 주소는 16진수 표기법으로 표현되며, 각 바이트를 두 자리의 16진수로 나타낸다. MAC 주소는 로컬에서(locally) 한 인터페이스에서 다른 인터페이스로 프레임을 전달하는 데 사용된다. 또한 MAC 주소는 NIC의 ROM에 고정되어(burned) 있으며, 소프트웨어적으로 변경 가능하다. 이때 MAC 주소는 전세계적으로 고유하며, 이를 위해 IEEE에 의해서 관리된다. NIC의 제조사는 MAC 주소 공간의 일부를 구매하고, 이를 통해 각 NIC에 대한 MAC 주소 할당을 보장한다.
MAC 주소는 평면적인(flat) 구조를 가진다. 즉, NIC가 어떤 네트워크에 속하든지 그 주소는 변하지 않는다. 예를 들어, 노트북의 Ethernet NIC는 항상 같은 MAC 주소를 가지며, 스마트폰의 WiFi 인터페이스도 마찬가지이다. 이는 계층적인 구조[1]를 가지고 있어, 호스트가 속한 네트워크에 따라 변경되는 IP 주소와는 상당히 대비된다. 비유하자면 MAC 주소는 주민등록번호이고, IP 주소는 우편 번호이다. 즉, MAC 주소는 이사를 가더라도 바뀌지 않지만, IP 주소는 이사를 갈 경우 변경해야 한다.
NIC가 어떤 목적지 NIC로 프레임을 전송하고자 할 때, 송신측의 어댑터는 프레임의 목적지 주소 필드에 상대방의 MAC 주소를 삽입한다. 그리고 LAN에 프레임을 전송한다. 이때 스위치는 프레임을 브로드캐스트하기도 하며, 어떤 어댑터는 자신에게 주소 지정되지 않은 프레임을 받을 수도 있다. 따라서 수신측의 프레임은 프레임 안의 목적지 MAC 주소와 자신의 MAC 주소를 비교하여, 일치하면 프레임 내의 데이터그램을 추출하여 상위 계층에 전달하고, 일치하지 않으면 해당 프레임을 폐기한다. 이를 통해서 수신 측만 프레임에 반응할 수 있다.
브로드 캐스팅, 즉 LAN 내의 모든 어댑터에 프레임을 전송하고자 할 때에는 프레임의 목적지 주소 필드에 FF-FF-FF-FF-FF-FF를 넣는다.
Address Resolution Protocol(ARP)

ARP(Address Resolution Protocol)은 IP 주소와 MAC 주소 사이의 변환 작업을 담당하는 프로토콜이다. ARP 프로토콜의 필요성을 이해하기 위해서, figure 3와 같이 표시된 네트워크를 고혀하자. 해당 예시에서 각 호스트와 라우터는 하나의 IP 주소와 하나의 MAC 주소를 가진다. 이때 스위치가 모든 프레임을 브로드캐스트하여, 한 인터페이스에서 프레임을 수신하면 그 프레임을 연결된 모든 프레임에 전송한다고 하자.[2] 이 상황에서, IP 주소 222.222.222.220을 가진 호스트가 222.222.222.222 호스트로 IP 데이터그램을 보내고자 한다고 한다면 데이터그램을 보내기 위해, 출발지는 자신의 어댑터에게 IP 데이터그램뿐만 아니라 목적지 222.222.222.222의 MAC 주소도 제공해야 한다. 해당 정보를 받은 다음 송신 어댑터는 목적지의 MAC 주소를 포함하는 프레임을 구성하고, LAN에 이를 전송할 것이다. 이때 이를 구현하기 위해서 요구되는 것은 송신 호스트가 목적지 호스트 222.222.222.222의 MAC 주소도 알아야 한다는 것이다. 이때 사용되는 것이 바로 ARP 프로토콜이다. 이 상황에서 송신 호스트 222.222.222.220은 ARP 모듈에 IP 주소 222.222.222.222를 제공하고, ARP 모듈은 이에 해당하는 MAC 주소 49-BD-D2-C7-56-2A를 반환한다.
즉, ARP는 IP 주소를 MAC 주소로 해석(resolve) 한다. 이는 여러 면에서 DNS와 유사하다. DNS는 호스트 이름을 IP 주소로 해석하고, ARP는 IP 주소를 MAC 주소로 해석한다. 하지만 둘 사이에는 중요한 차이점이 존재한다. 이는 DNS는 인터넷 어디에 있는 호스트든 해석할 수 있는 반면, ARP는 같은 서브넷에 있는 호스트와 라우터 인터페이스에 대해서만 해석할 수 있다는 것이다.
ARP를 구현하기 위해서 각 호스트와 라우터는 메모리 안에 ARP 테이블을 가지고 있으며, 이 안에 IP 주소와 MAC 주소 간의 매핑이 저장되어 있다. 이 테이블에는 각 매핑이 언제 삭제되어야 하는지를 나타내는 TTL(Time-To_Live) 값도 포함된다. 이 테이블에는 반드시 서브넷 상의 모든 호스트나 라우터의 항목이 들어 있는 것은 아니다. 어떤 항목은 아직 설정되지 않았고, 어떤 항목은 만료되었을 수 있다. 일반적으로 항목의 만료 시간은 테이블에 삽입된 시점으로부터 약 20분이다. 아래는 ARP 테이블에 대한 예시를 보여준다:
| IP 주소 | MAC 주소 | TTL |
|---|---|---|
| 222.222.222.221 | 88-B2-2F-54-1A-0F | 13:45:00 |
| 222.222.222.223 | 5C-66-AB-90-75-B1 | 13:52:00 |
이제 다시 예제로 돌아가서, 호스트 222.222.222.220이 같은 서브넷에 있는 다른 호스트나 라우터로 IP 데이터그램을 보내고자 한다고 가정하자. 이때 송신 호스트는 주어진 IP 주소에 대한 MAC 주소를 알아내야 하는데, ARP 테이블에 해당 목적지에 대한 항목이 존재한다면 이 작업은 쉽게 이루어진다. 하지만 이 항목이 없다면 어떻게 될까? 예를 들어, 222.222.222.220이 222.222.222.222로 데이터그램을 보내려 한다고 하자. 이 경우 송신자는 ARP 프로토콜을 사용하여 주소를 해석한다. 먼저 송신자는 ARP 패킷이라는 특별한 패킷을 생성한다. ARP 패킷에는 송신 및 수신 IP와 MAC 주소를 포함한 여러 필드가 있다. ARP 쿼리 패킷의 목적은 해당 IP 주소에 매핑된 MAC 주소를 알아내기 위해 같은 서브넷에 있는 모든 호스트와 라우터에게 요청을 보내는 것이다.
해당 예시에서 222.222.222.220은 ARP 쿼리 패킷을 어댑터에 전달하며, 패킷을 MAC 브로드캐스트 주소(FF-FF-FF-FF-FF-FF)로 전송하라고 지시한다. 어댑터는 ARP 패킷을 링크 계층 프레임에 캡슐화하고, 프레임의 목적지 주소로 브로드캐스트 주소를 사용하여 서브넷에 프레임을 전송한다. ARP 쿼리를 담은 프레임은 서브넷 내의 모든 어댑터가 수신하며, 브로드캐스트 주소를 통해 전송되므로 같은 서브넷 안의 모든 어댑터는 해당 프레임 안의 ARP 패킷을 ARP 모듈로 전달한다. 각 ARP 모듈은 자신의 IP 주소가 ARP 패킷에 있는 목적지 IP 주소와 일치하는지 검사하고, 일치할 경우 요청한 호스트에게 응답 ARP 패킷을 전송한다. 그 후, 호스트 222.222.222.220은 ARP 테이블을 업데이트하고, 프레임의 목적지의 MAC 주소를 포함하는 프레임 안에 IP 데이터그램을 캡슐화하여 전송한다.
ARP 프로토콜에 대해 흥미로운 점이 몇 가지 있다. 첫째, ARP 쿼리 메시지는 브로드캐스트 프레임으로 전송되지만, ARP 응답 메시지는 일반적인 프레임으로 전송된다. 둘째, ARP는 플러그 앤 플레이다. 즉, ARP 테이블은 자동으로 구축되며, 시스템 관리자가 설정할 필요가 없다. 그리고 만약 호스트가 서브넷에서 사라지면, 해당 항목은 결국 다른 ARP 테이블에서 삭제된다. 마지막으로, ARP 프로토콜은 기본적으로는 link layer에 속한다고 보는 것이 타당하지만, 엄밀하게 따지면 link layer와 network layer의 경계에 걸쳐 있는 프로토콜이다. 이는 기본적으로 ARP 패킷은 프레임에 캡슐화되어 전송되므로 link layer에 속한다고 볼 수 있지만, ARP 패킷은 필드에 IP 주소와 MAC 주소를 모두 포함하기 때문이다.
Sending a Datagram off the Subnet

서브넷 내부에서 ARP가 어떻게 동작하는지는 명확해졌지만, 서브넷 외부의 다른 호스트에게 데이터그램을 보내는 것은 또 다른 문제이다. 이에 대해 살펴보기 위해, figure 4와 같이 제시된 라우터로 상호 연결된 두 개의 서브넷으로 구성된 간단한 네트워크를 살펴보자. 이때 해당 figure에서 각 호스트는 각각 하나의 IP 주소와 하나의 어댑터 만을 가진다. 하지만, 라우터는 두개의 인터페이스를 가지고 있고, 각 인터페이스에는 ARP 모듈과 어댑터가 하나씩 존재한다. 따라서 figure에 제시된 라우터는 두 개의 IP 주소와, 두 개의 ARP 모듈, 두 개의 어댑터와 MAC 주소를 가진다. 또한 주의해야 할 것은 서브넷 1의 네트워크 주소는 111.111.111/24이고, 서브넷 2의 네트워크 주소는 222.222.222/24라는 점이다.
이렇게 상황이 주어졌을 때, 호스트 111.111.111.111이 호스트 222.222.222.222로 IP 데이터그램을 보내고자 한다고 가정하자. 이때 어댑터가 사용하는 MAC 주소는 수신측 호스트의 MAC 주소인 49-BD-D2-C7-56-2A가 아니다. 이는 만약 송신 어댑터가 해당 MAC 주소를 사용한다면, 서브넷 1에 있는 어떤 어댑터도 이 프레임을 자신의 MAC 주소와 일치하지 않는다고 판단하여 프레임을 네트워크 계층으로 전달하지 않기 때문이다. 따라서 111.111.111.111에서 222.222.222.222로 데이터그램이 전송되기 위해서는 우선 라우터 인터페이스 111.111.111.110으로 전달되어야 하므로, 사용되는 MAC 주소는 해당 인터페이스의 주소인 E6-E9-00-17-BB-4B이다.[3] 이를 사용하여 프레임으로 캡슐화된 데이터그램은 송신 호스트로부터 서브넷1에 전송된다. 서브넷 1에 있는 라우터의 어댑터는 프레임의 MAC 주소가 자신의 것이라는 것을 감지하고, 프레임을 라우터의 network layer로 전달한다. 라우터는 데이터그램이 어떤 인터페이스를 통해 전달되어야 하는지를 forwarding table을 이용해 결정하며, 이에 따라 해당 데이터그램을 어댑터에 전달한 후, 이를 새로운 프레임으로 데이터그램을 캡슐화하여 서브넷 2로 전송한다. 이때 프레임의 목적지 MAC 주소는 최종 목적지 호스트의 MAC 주소가 된다.[4]
Ethernet
이더넷(Ethernet)은 유선 LAN을 장악하고 있는 프로토콜이다. 이더넷은 성공한 이유가 여럿이 있겠지만, 가장 주요한 이유를 꼽으라면 아래와 같다.
- 이더넷은 최초로 널리 배포된 고속 LAN 프로토콜이다.
- 이더넷은 구조가 간단하고, 비용이 저렴해서 다양한 환경에서 채택될 수 있다.
- 시대에 맞추어 성능을 계속 개선해왔으며, 현재는 10Gbps까지 지원한다.
- 하나의 칩으로 다양한 속도를 지원할 수 있다.

초기 이더넷 LAN은 노드들을 연결하기 위해서 동축 케이블을 사용하여 버스 토폴로지(bus topology)의 이더넷을 구현하였다. 버스 토폴로지의 이더넷은 브로드캐스트 LAN으로, 전송된 프레임은 모두 버스에 연결된 모든 어댑터에게 전송되며 처리된다. 이때 모든 노드는 동일한 collision domain에 속하며, 이 때문에 두 노드가 동시에 데이터를 전송하면 충돌(collision)이 발생한다. 이 때문에 CSMA/CD와 같은 메커니즘을 필요로 한다.
하지만 2000년대 초반 부터는 LAN을 스위치(switch) 기반의 스타 토폴로지 구조를 사용하는 이더넷이 대세가 되었다. 해당 방식에서는 호스트가 TP(twisted-pair) 구리선을 통해 스위치에 직접 연결된다. 이때 스위치는 액티브(active) 장비로서, 각 포트에서 독립적인 통신이 가능하다. 또한 각 노드는 충돌이 발생하지 않는데, 이는 각 spoke[5]는 별도의 이더넷 세션을 가지고, 각 노드 간의 통신은 스위치의 중재 하에서 이루어지기 때문이다.
Ethernet Frame Structure
Figure 6에 나타나 있는 이더넷 프레임은 이더넷에 대한 많은 것을 시사한다. 이에 대해 더욱 구체적으로 살피기 위해, 같은 이더넷 LAN에 속한 두 호스트 사이에서 IP 데이터그램을 전송하는 상황을 생각하자. 또한 송신 어댑터 A는 MAC 주소가 AA-AA-AA-AA-AA-AA이고, 수신 어댑터 B는 MAC 주소가 BB-BB-BB-BB-BB-BB라고 하자. 송신 어댑터는 IP 데이터그램을 이더넷 프레임에 캡슐화하고, 이 프레임을 물리 계층에 전달한다. 수신 어댑터는 물리 계층으로부터 프레임을 수신하고, IP 데이터그램을 추출한 뒤 네트워크 계층으로 전달한다. 이런 상황에서, 아래는 이더넷 프레임의 6개의 필드에 대한 설명이다:
- Data 필드(46~1500 바이트): 해당 필드는 IP 데이터그램을 저장한다.
- 이더넷의 MTU는 1500바이트이므로, IP 데이터그램이 1,500바이트를 초과하면, 호스트는 데이터그램을 분할(fragmentation)해야 한다.
- data 필드의 최소 크기는 46바이트이므로, IP 데이터그램이 46바이트보다 작으면 데이터 필드를 채우기 위해 패딩(stuffing)을 추가해야 한다.[6]
- Destination address 필드(6바이트): 이 필드에는 수신 어댑터의 MAC 주소가 들어간다. 이 예시에서는 BB-BB-BB-BB-BB-BB가 이에 해당한다.
- Source address 필드(6바이트): 이 필드에는 프레임을 전송한 어댑터의 MAC 주소가 들어간다. 이 예에서는 AA-AA-AA-AA-AA-AA가 이에 해당한다.
- Type 필드(2바이트): 이 필드는 이더넷이 여러 네트워크 계층 프로토콜을 다룰 수 있도록 해준다. 즉, IP 이외의 프로토콜도 이더넷을 통해 전달가능하다.
- CRC 필드(4바이트): CRC 필드는 수신 어댑터(B)가 비트 오류를 탐지할 수 있도록 해준다.
- Preamble 필드(8바이트): 이더넷 프레임은 8바이트의 preamble 필드로 시작한다. 해당 필드는 수신 어댑터들을 깨우고, 송신자의 클럭에 동기화시킨다.
모든 이더넷 기술은 네트워크 계층에 대해 비연결형(connectionless) 서비스를 제공한다. 따라서 이더넷은 unreliable한 서비스를 제공한다. 구체적으로, 어댑터 B는 어댑터 A로부터 프레임을 받으면 CRC 검사는 수행하지만, CRC를 통과하든지 실패하든지 해당 결과를 A에게 그 결과를 알려주지 않는다. 따라서, 어댑터 A는 프레임이 B에게 도달했는지, CRC를 통과했는지 전혀 알 수 없다. 이러한 신뢰성 없는 전송은 이더넷을 간단하고 저렴하게 만드는 데 기여한다.
Link-Layer Switches
자세한 내용은 Link-Layer Switches 문서를 참조하십시오.
Virtual Local Area Networks(VLANs)
각주
- ↑ 네트워크 부분 + 호스트 부분으로 나뉘어진다.
- ↑ 이 예제에서, 송신측과 수신측의 호스트는 IP 주소의 관점에서 같은 서브넷에 존재한다.
- ↑ 이때 해당 MAC 주소를 송신 호스트가 알아내는 방법이 ARP 프로토콜이다.
- ↑ 역시 해당 MAC 주소는 ARP 프로토콜을 통해서 얻어진다.
- ↑ 중앙에서 뻗는 연결선
- ↑ 이때 network layer로 전달되는 데이터에는 IP 데이터그램 + 패딩이 모두 포함되며, network layer는 IP 헤더의 length 필드를 보고 패딩을 제거한다.
- ↑ FF-FF-FF-FF-FF-FF이다.
- ↑ 그 외의 주소일 경우에는, 프레임을 폐기한다.