-
11. 스위치 근거리 네트워크공부/컴퓨터 네트워크 2022. 6. 7. 16:02반응형
이 글은 Computer Networking: A Top-Down Approach 7th를 읽고 정리한 글입니다.
1. 링크 계층 주소체계과 ARP
호스트와 라우터는 링크 계층 주소를 가지는데, IP 주소를 링크 계층 주소로 변환하는 것이 ARP (Address Resolution Protocol)이다.
정확히 링크 계층 주소는 호스트와 라우트의 어댑터 부분에서 가지게 되는데, 이런 링크 계층 주소는 우리가 많이 들어본 랜 주소(LAN), 물리 주소, MAC 주소라고 부른다.
MAC 주소는 6바이트로 이루어져 있어서 2^48개로 표현 가능하고, 평면 구조를 가지기 때문에 항상 동일한 MAC 주소를 가질 수 있다.
1.1 ARP (Address Resolution Protocol)
네트워크 계층 주소와 링크 계층 주소는 데이터를 전달하려면 네트워크 계층 주소 ↔ 링크 계층 주소로 서로 변환이 가능해야하는데, 이런 변환을 ARP가 해준다.
여기에서도 ARP 테이블이 사용되는데, 테이블은 (IP 주소, MAC 주소, TTL)로 구성되어 있다. 이때 TTL은 이런 매핑이 언제 삭제되는지를 나타낸다.
1) 같은 서브넷에서의 ARP (same LAN)
같은 서브넷에서 노드 A가 노드 B로 데이터그램을 전송한다고 가정하자
만약 노드 A의 ARP 테이블에 노드 B에 대한 정보가 있으면 바로 보낼 수 있다.
하지만 노드 A의 ARP 테이블에 노드 B에 대한 정보가 없으면 노드 A(송신자)는 (송신 IP와 MAC 주소, 수신 IP와 MAC 주소)로 이루어진 ARP 패킷을 만들어서 어댑터에 보내고, 어댑터는 MAC 브로드캐스트 주소인 FF-FF-FF-FF-FF-FF로 패킷을 전송하여 다른 모든 어댑터들이 수신할 수 있도록 한다.
각 어댑터는 ARP 패킷을 ARP 모듈로 전달하여 목적지 IP 주소가 자신의 IP 주소가 맞는지 확인한다.
이후 IP 주소가 같으면 ARP 패킷을 질의한 노드로 다시 전달한다. 해당 노드를 노드 B라고 하자
그러면 노드 A는 노드 B에 대한 정보를 얻었으니 ARP 테이블을 갱신하고 데이터그램을 노드 B의 MAC주소로 보낸다.
정리하면
노드 A → ARP 패킷 전송 → 노드 A의 어댑터 → MAC 브로드캐스트 주소로 전송 → 모든 어댑터에서 주소 확인 → IP 주소가 같은 어댑터는 노드 A에게 정보를 전송 → 노드 A는 ARP 테이블을 갱신하고 노드 B로 전송
2) 서브넷에 없는 노드로의 데이터그램 전송
위 그림에서처럼 노드 A → 라우터 R → 노드 B의 전송으로 예시를 들어보자
데이터그램을 노드 A → 라우터 R로 전송
1. DHCP를 통해 라우터의 IP 주소를 구한다.
2. ARP를 통해 라우터의 MAC 주소를 구한다.
3. 서브넷 마스크를 통해 데이터그램을 캡슐화한 프레임을 라우터로 전송한다.
데이터그램을 라우터 R → 노드 B로 전송
1. 라우터의 포워딩 테이블을 참조하여 노드 B가 있는 서브넷으로 보낸다.
2. ARP을 통해 노드 B의 MAC 주소를 구한다.
3. 노드 B로 보낸다.
2. 이더넷 (Ethernet)
2.1 이더넷 프레임 구조
- preamble: 수신자의 클록을 송신자의 클록에 동기화 시킨다. (컴퓨터구조에 나오는 클록 맞음)
- dest address, source address: 송신자 MAC 주소, 수신자 MAC 주소
- type: 데이터그램이 어떤 네트워크 계층 프로토콜인지 구분
- data(payload): 데이터그램
- CRC: 프레임에 오류가 있는지 확인
2.2 이더넷 특징
1) 비연결형(connectionless): 핸드셰이킹이 없다.
2) 비신뢰적(unreliable): CRC를 통해 프레임에 오류가 있는 것을 확인해도 송신자에게 따로 메시지를 전달하지 않는다.
프레임에 오류가 있어서 데이터를 제대로 전송 못 받았다면 UDP의 경우 데이터 손실이 되고, TCP의 경우 재전송을 요구한다.
즉, 링크 계층에서 오류를 확인하지 않는다.
3. 스위치
위 그림과 같이 A - A', B - B', C - C'로 이루어져 있을 때, 각각의 경로는 다른 경로에 영향을 주지 않기 때문에 A - A'과 B - B'에서 동시에 패킷 전송이 일어나도 충돌이 발생하지 않는다.
이때 호스트와 스위치의 인터페이스를 어떻게 알고 있냐면 여기서도 스위치 포워딩 테이블이 존재한다.
호스트의 MAC 주소와 각 인터페이스 주소가 테이블에 나와있기 때문에 알맞는 경로로 패킷을 전달할 수 있다.
3.1 스위치 자가학습
스위치는 자가학습을 통해 스위치 테이블을 갱신하는데, 예를 들어서 위 그림처럼 A에서 A'로 프레임을 전송한다고 해보자
1) 먼저 A에 있던 프레임은 스위치로 도달하게 되는데 이때 스위치는 <A의 MAC 주소, 1, TTL>을 테이블에 저장한다.
2) 스위치는 A'가 어디 있는지 모르기 때문에 브로드캐스트를 하게 된다. 이 과정을 flood라고 한다.
3) A'을 제외한 나머지 호스트는 프레임을 버리고, A'은 스위치에게 응답을 한다.
4) 스위치는 테이블에 <A'의 MAC 주소, 4, TTL> 값을 저장한다.
5) 이후 A에게 받은 프레임을 A'의 MAC 주소로 넘겨주게 된다.
이렇게 스위치 테이블을 갱신하는 것을 자가학습이라고 한다.
3.2 스위치 vs 라우터
위 그림을 보면 스위치는 프레임까지만 확인하고 경로로 보내지만, 라우터의 경우에는 데이터그램을 확인한 뒤에 다시 캡슐화하여 다음 경로로 보내는 것을 확인할 수 있다.
[공통점]
1. 스위치와 라우터는 모두 경로를 포워딩 테이블에 저장하고, 전달을 해준다.
[차이점]
1. 라우터는 네트워크 계층에 속하는 장치이고, 스위치는 링크 계층에 속하는 장치이다.
2. 라우터는 라우팅 알고리즘을 통해 테이블에 IP 주소를 저장하며, 스위치는 학습을 통해 테이블에 MAC 주소를 저장한다.
4. VLAN (Virtual Local Area Network)
실제 존재하는 스위치는 한 개인데, 가상으로 여러 개의 스위치가 존재하는 것처럼 만드는 기술이다.
이것을 왜 사용하냐면 스위치 1개에만 모든 정보를 저장하면 테이블의 크기가 굉장히 커지기도 하고, 만약 MAC 주소를 모르는 노드로 데이터를 전송할 경우 브로드 캐스트를 하게 되는데, 굉장히 많은 패킷을 소모하기 때문에 효율성이 나빠지고, 보안에도 문제가 있다.
그래서 그룹별로 나누어 효율적으로 관리할 수 있도록 하는 것이 VLAN이다.
위 그림으로 예시를 들면 푸른색은 전기공학과이고 노란색은 컴퓨터과학과라고 가정하자 그러면 1개의 스위치를 2개의 구역으로 나눌 수 있게 된다.
이렇게 라우터와 스위치를 연결하는 링크를 2개로 하여서 같은 스위치에 있더라도 다른 그룹을 가진다면 라우터를 통해 확인해야하는 것을 알 수 있다.
그리고 전기공학과에서 브로드캐스트가 일어나게 된다고 해도 컴퓨터과학과에서는 브로드캐스트가 일어나지 않는다.
trunk port라는 것도 존재하는데, 이것은 스위치 - 스위치 연결에서 스위치 A에 존재하는 다수의 VLAN(EE, CS)이 스위치 B로 이동할 수 있는 포트이다. 그래서 여기서는 모든 VLAN이 통과할 수 있어야 하므로 그룹을 구분하지 않는다.
반응형'공부 > 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 목차 (0) 2022.06.15 12. 웹 페이지 요청에 대한 처리 (0) 2022.06.15 10. 링크 계층 (0) 2022.06.06 9. OSPF, BGP, SDN (0) 2022.06.03 8. NAT, IPv6, ICMP, Routing Algorithm (0) 2022.05.30