관리 메뉴

너와 나의 스토리

[CH.5] Link Layer - LANs(addressing, ARP, Ethernet, switches, VLANs) 본문

Computer Networks/이론

[CH.5] Link Layer - LANs(addressing, ARP, Ethernet, switches, VLANs)

노는게제일좋아! 2019. 12. 4. 00:25
반응형

MAC addresses and ARP

  • 우리가 지금까지 쓰던 IP는 8bit 4개로 총 32bit IP 주소이다
    • 전세계에서 유일한 나만의 IP를 가짐
    • 위치하고 바인딩 되어있음 (IP를 보고 위치를 알 수 있음)
  • MAC(or LAN or Physical or Ethernet) 주소
    • 모든 디바이스들은 MAC 주소를 가짐
    • 네트워크 세그먼트의 데이터 링크 계층(2계층)에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자

 

* IP는 주민등록번호 느낌 -> 변하지 않음

* MAC address는 집 주소 느낌 -> 이사가면 바뀜

 

 

LAN addresses

  • MAC 주소는 IEEE에서 할당 -> unique를 보장
  • 제조업자는 MAC 주소 공간의 일부분을 구매
  • MAC flat address -> portability
    • MAC addr은 처음부터 끝까지 모든 digit으로 무언가를 구분하지 않음. 계층이 없음 -> flat하다
    • flat한 게 IP와의 차이 (IP 주소는 계층적이니까)

 

 

ARP: address resolution protocol

  • Q: IP주소를 알 때, 인터페이스의 MAC address를 어떻게 결정하는가?
  • ARP table: LAN에 있는 IP 노드(호스트, 라우터)들 각각은 테이블을 가진다.
    • 몇몇 LAN 노드를 위해 IP/MAC address 매핑; <IP address, MAC address, TTL>
    • TTL (Time To Live): 일정 시간 지나면 매핑된 주소 사라짐 (보통 20분)

 

ARP protocol: same LAN

  • A가 B에게 데이터그램을 보내고 싶다면
    • A는 B의 MAC addr을 모른다 (A 테이블 내에 존재하지 않음)
  • A는 B의 IP 주소가 담긴 ARP 쿼리 패킷을 broadcast한다
    • 목적지 MAC 주소를 FF-FF-FF-FF-FF-FF로 채워서 보냄
    • LAN에 있는 모든 노드는 ARP 쿼리를 받음
  • B는 ARP 패킷을 받고, A에게 자신의(B) MAC 주소를 넣어서 답장함 
    • A의 MAC 주소로 프레임을 보냄 (unicast) -> (받은 쿼리에 source addr 적혀있으니까)
  • A는 IP-MAC addr 쌍을 자신의 ARP 테이블에 저장함 
  • ARP는 "plug-and-play"
    • 와이파이 등에 연결하는 순간 자동으로 동기화됨. 그 때부터 <IP, MAC addr> 업데이트 
    • 노드는 net 관리자에게 간섭받지 않고 ARP 테이블을 만든다.

 

 

Addressing: routing to another LAN

  • walkthrough: R(라우터)을 통해 A에서 B로 데이터그램을 보냄
  • 여기서는 MAC addr만 보임
  • A는 B의 IP 주소를 안다고 가정
  • A는 첫 번째 hop 라우터(R)의 IP 주소를 안다고 가정
  • A는 R의 MAC addr 주소를 안다고 가정

  • 목적지 주소를 라우터의 MAC 주소로 지정하면, 나가고 싶다는 신호로 간주됨
    • 현재 네트워크 밖으로 데이터그램을 보내겠다는 말
  • 그럼 라우터는 그 패킷 안에 적힌 IP 주소를 보고 해당 호스트로 보내기 위해 라우팅 테이블을 보면 포워딩을 함
    • 이 때 사용하는 것이 longest prefix matching 알고리즘
  • IP는 3계층, MAC addr은 2계층
  •  즉,
    • A는 목적지 주소(MAC dest)를 FF-FF-FF-FF-FF-FF로 채워서 broadcasting 함
    • 만약 반응이 없다면, 현재 네트워크 내에 B가 존재하지 않는다는 말
    • 그렇다면 이제 목적지 주소를 라우터의 MAC addr로 채워서 보냄 -> "안에는 없으니 밖에 알아봐주세요~"
    • 라우터는 그 frame을 받으면 MAC 주소 때고, IP src:A, IP dest:B를 가지는 데이터그램 포워드

 

 

Ethernet

  • 이더넷은 네트워크에 연결된 각 기기들이 MAC 주소를 가지고 이 주소를 이용해 상호간에 데이터를 주고 받을 수 있도록 만들어졌다. 각 기기를 상호 연결시키는 데에는 허브, 네트워크 스위치 등의 장치를 이용한다.
  • 지배적인 유선 LAN 기술
  • token LANs과 ATM보다 간단하고 저렴

 

Ethernet: physiscal topology

  • bus: 90년대 중반에 인기
    • 모든 노드가 같은 충돌 영역에 있음
  • star: 요즘 많이 사용
    • 중앙에서 switch가 똑똑하게 관리
    • mac learning, switch learning

 

Ethernet frame structure

  • 송신 어댑터는 이더넷 frame에서 IP 데이터 그램을 캡슐화한다.

  • preamble: 10101010 패턴이 7byte(->10101010이 7번 반복)하고 10101011 패턴이 1byte
  • 수신자, 송신자 클락 속도 동기화하는데 사용
  • preamble을 쭉 보낸 후, 첫 번째 6byte destination, 그 다음 6byte source를 보냄
    • dest를 먼저 들어보고, 자기가 아니라면 무시(frame 버림)하고 자기이면 쭉 들음
    • frame에 들어있는 데이터를 네트워크 계층 프로토콜로 보냄
  • type: 어떤 상위 계층 프로토콜인지 지정
  • CRC: cyclic redundancy check at receiver
    • crc붙여서 에러 탐지하거나 복구함

 

Ethernet: unreliable, connectionless

  • connectionless: 송수신자 사이에서 handshaking 없음
  • unreliable: 수신한 NIC은 ack이나 nack을 송신자한테 보내지 않음
    • CRC 붙여서 탐지되면 버리고, 탐지 안되면 어쩔 수 없는 것
    • 나머지는 TCP한테 맡김
  • Ethernet's MAC protocol: unslotted CSMA/CD with binary backoff

 

 

Ethernet switch

  • link layer device: 적극적인 역할을 맡음
    • Ethernet frame을 저장하고 포워딩함
    • 들어오는 프레임의 맥어드레스를 조사하고, 프레임이 세그먼트에 전달될 때, 하나 이상의 나가는 링크로 프레임을 선택적으로 포워딩한다.
      • CSMA/CD를 사용하여 세그먼트에 액세스
  • transparent
    • 호스트는 스위치의 존재를 인지하지 못 함
  • plug-and-play, self-learning
    • 우리가 스위치에 플러그를 꽂는 순간(접속하는 순간) 자동으로 동기화 됨
    • 스위치가 환경 설정할 필요없음

 

Switch: 여러개를 동시에 전송

  • 호스트는 스위치와 직접 연결(direct connection)함
  • 스위치는 패킷 buffer
    • 각 스위치는 스위치 테이블을 가짐
    • entry: <MAC addr of host, interface to reach host, time stamp>
    • 라우팅 테이블 느낌
  • Ethernet protocol은 각 들어오는 링크를 사용, 충돌 없음; full duplex
    • 각 링크는 자신의 충돌 영역이 있음
  • switching: A-to-A' and B-to-B'로 충돌없이 동시에 전달할 수 있다.

 

A에서 A'로 보내기

  • A는 현재 누가 A'인지 모름
  • A가 A'한테 보낼거라고 스위치에 보내면, 스위치는 스위치 테이블을 업데이트 함(learning)
    • 스위치:는 A라는 MAC addr은 interface 1번에 연결되어 있음을 알게되고 스위치 테이블에 저장한 후 60초 동안 기억
    • 스위치가 스위치 테이블을 봄
    • 매치가 되면, 해당 인터페이스에 보낸다.
    • 매치가 안되면, flooding 한다. (다른 모든 애들한테 보냄)
      • A'는 flooding된 데이터를 보고 자기를 찾는 다는 것을 알면, 스위치한테 알려줌. 그럼 스위치는 A'는 interface 4번과 연결된다는 것을 알게됨
      • 이러한 과정을 MAC switching learning or MAC learning이라고 부름

 

 

라우팅과 스위칭의 learning 차이

  • MAC switching learning: 플러그를 꽂자마자(통신이 시작하자마자) 있는걸 가지고 계속 업데이트함 
    • 뽑힌거에서 오는 걸 보고 습득을 하면서 업데이트
    • 인접한 애 찾기
  • routing: 옆에 있는 hop의 정보를 가지고 다익스트라나 벨만포드로 업데이트를 함
    • 경로 찾기

 

 

 

라우터 vs 스위치

  • 둘 다 store and forward
    • 라우터: 네트워크 계층 장치 
    • 스위치: 링크 계층 장치
  • 둘 다 forwarding table을 가짐
    • 라우터: IP주소를 사용해서 테이블 연산 -> 라우팅 알고리즘
    • 스위치: flooding을 이용해서 포워딩 테이블 학습 (MAC addr 학습)
    • 3계층 장비라 세 계층의 주소를 다 봐야함

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처: [Computer Networking: A Top-Down Approach] 

반응형
Comments