[Network] Network Link Layer

Dev·2021년 9월 28일
0
post-custom-banner
  • 네트워크 계층으로부터 받은 패킷에 헤더를 더하여 물리적으로 이웃한(LAN) 디바이스로 패킷을 전달합니다.
  • LAN을 구축하는데 Ethernet 방식을 사용하며 CSMA/CD 프로토콜로 패킷을 전달합니다.
  • 각 장비는 MAC 주소로 식별합니다.

※ Rancard
LAN에 접속하기 위한 카드로 호스트와 물리적 링크를 연결해주는 H/W입니다. 호스트의 데이터를 케이블에 실어서 허브, 스위치, 라우터 등으로 전달하고, 호스트로 온데이터를 CPU로 전달합니다. 각 장비의 MAC주소는 랜카드 ROM에 위치합니다.

2. Error Detection

에러를 검출하는 용도로, EDC 필드가 커질수록 높은 확률로 에러를 검출합니다.

[1] Parity Checking

  1. 데이터의 1의 갯수가 짝수이면 0으로, 1의 갯수가 홀수이면 1로 설정하여 보냅니다.
  2. 수신측에서 받은 데이터를 다시 계산하여 EDC 필드와 비교합니다.
  3. 1bit고 간단하게 체크할 수 있지만 에러 검출 성능이 좋지는 않습니다.

[2] Checksum

  1. 데이터를 16bit로 분할 한 후 모든 데이터를 더합니다.
  2. 만약 carry가 발생하면 +1 해줍니다.
  3. 이후 1의 보수를 취한 후 checksum 필드에 넣고 패킷을 전송합니다.
  4. 수신측에서 받은 데이터를 다시 계산하여 EDC 필드와 비교합니다.

[3] Cyclic Redundancy Check [CRC]

  • 수학적 연산이 복잡하나 높은 확률로 에러를 검출 할 수 있고 간단한 HW로 구현 가능합니다.
  1. 임의의 CRC 발생 코드를 생성 후 발생 코드의 최고 차수만큼 원래 데이터 뒤에 0을 붙입니다.
  2. 데이터 % CRC 나온 값을 본 데이터에 더합니다.
  3. 수신측에서 받은 데이터 % CRC 값이 0인지를 판단합니다.

3. Media Access Control [MAC]

제품 생산 시 각 장비에 분배되는 고정된 48bit 물리적 주소입니다. IP 계층에서는 IP 주소를 활용하여 길찾기를 수행한 반면, Link 계층은 MAC 주소로 장비를 구별하여 같은 LAN의 장비로 패킷을 전달합니다.

LAN 안의 디바이스로 패킷 전송 시 MAC 주소를 알아야합니다. IP에 대응하는 MAC 주소를 MAC Table에 저장합니다. 목적지 MAC 주소가 저장돼 있다면 해당 주소로 포워딩합니다. 만약 모를 경우 브로드캐스트하여 패킷을 전송합니다.

※ MAC에서 collision이란 두개 이상의 프레임이 같은 Collsion domain안에서 동시에 전송이 일어날 경우 발생한다. 이를 방지하기 위해 아래의 프로토콜들이 존재한다.

4. Ethernet

  • 가장 많이 사용되는 LAN 구축 방식으로 비용도 저렴하며 성능 또한 괜찮습니다. 이러한 이유로 대부분의 MAC 주소를 사용하는 통신장비는 LAN을 구축할 때 이더넷 방식을 사용합니다.
  • CSMA / CD 프로토콜을 이용하여 스위치, 허브와 함께 LAN을 구축합니다.
  • 패킷을 전송할 때 Store & Forward 방식을 이용하는데 TCP처럼 신뢰성 높은 패킷을 전송하려고 노력하지 않습니다.

Ethernet 기능

  • Learning : MAC 주소를 IP 주소와 맵핑하여 테이블에 저장합니다.
  • Flooding : Unknown, Broadcast의 경우 들어온 포트를 제외한 나머지 모든 포트로 패킷을 전송합니다.
  • Forwarding : 목적지 주소를 알 때 해당 목적지로 패킷을 unicast합니다.
  • Filtering : 같은 세그먼트일 경우 다른 세그먼트로 건너가는 것을 막고 목적지로 unicast합니다.
  • Aging : 물리적 한계로 더 이상 해당 출발지로 프레임이 안 들어오면 MAC Table에서 삭제합니다.

허브는 스위치보다 비용이 저렴하지만 Coliision Domain을 나누지 못합니다. 반면 스위치는 필터링 기능 덕분에 Collision Domain을 나눌 수 있어 동시에 패킷 전송을 가능케합니다.

※ collision이란
두개 이상의 프레임이 같은 Collsion domain 안에서 동시에 전송이 일어날 경우 발생합니다. 따라서 Collsion Domain이 커지지 않도록 나눠야 하는데 스위치가 이를 가능케 합니다.

5. MAC Protocol

Coliision을 해결한 프로토콜입니다.

  • Channel Partitioning : 시간, 주소, 코드 등을 분할하는 방식으로 주로 Circuit Switching에서 사용됩니다. 채널을 공정히 분배하나 bandwidth가 R/N으로 감소하는 단점이 있습니다. 이는 비슷한 작업을 수행할 때 효율적입니다.
  • Random Access : Collision 발생을 허용하여 충돌 시 이를 고칩니다. 항상 R bps의 전송률로 데이터를 전송합니다. 충돌이 일어나면 프레임을 바로 보내는 것이 아닌 랜덤한 시간 후에 프레임을 재전송합니다. 이더넷은 이 방식 중 CSMA / CD 프로토콜을 이용합니다.
  • Taking Turns : 충돌이 발생하지 않도록 순차적으로 전송합니다. 대표적으로 Polling 방식이 있는데 토큰을 가진 순서에 따라 전송합니다. 하지만 토큰을 기다리는 단점이 존재합니다.

[1] Carrier Sense Multiple Access / Collision Detect Protocol

  1. 패킷 전송 전 먼저 채널을 감지하여 다른 노드가 프레임을 채널로 전송하고 있다면 임의의 시간동안 대기합니다.
  2. 이후 다시 채널을 감지해 채널이 쉬고있다면 패킷을 전송합니다.
  3. 패킷을 전송함과 동시에 2개의 다른 포트를 이용하여 충돌이 발생 했는지를 검사합니다. 패킷이 목적지에 도착할 시간 이전에 다른 프레임의 비트가 발견되면 충돌이 일어난 것으로판단합니다.
  4. 충돌이 일어나면 전송 중지 후 jam signal을 보냅니다. jam signal이란 모든 호스트들에게 충돌 발생을 알리는 것으로 호스트들이 이 신호를 받았다면 랜덤한 시간 후에 다시 재전송합니다.

6. Address Resolution Protocol [ARP]

  • ARP Table을 이용해 IP 주소와 MAC 주소를 변환해주는 프로토콜입니다.
  • ARP Table이란 TTL(보통 20분)동안 IP/MAC 주소를 맵핑한 row를 기억하는 테이블을 의미합니다.
  • 만약 ARP Table에서 해당 MAC 주소를 안다면 바로 패킷을 전송하고 MAC 주소를 모를 경우 해당 LAN에 브로드캐스트합니다.

상황 예시

  • A가 B의 IP주소를 어떻게 알까 ? DNS
  • A가 B로 가기위한 first hop router에 대한 IP주소를 어떻게 알까? DHCP
  • A가 first hop router에 대한 MAC주소를 어떻게 알까? ARP
  • A가 B의 IP가 Local인지 어떻게 알까? IP 계층

※ Virtual Local Area Network [VLAN]

  • 물리적 배치와 상관 없이 논리적으로 LAN을 구성하는 기술입니다.
  • VLAN은 한 대의 스위치를 여러개의 네트워크로 나누기 위해 사용하며 나누어진 VLAN 간에 통신은 라우터를 거칩니다.
  • 장비의 추가 없이 차단된 LAN환경을 구축할 수 있고 이는 비용절감으로 이어집니다.
  • 특정 장비의 네트워크 그룹을 옮겨야 할 때 실 장비를 옮기지 않고 스위치 설정으로 네트워크 그룹을 옮길 수 있습니다.
  • Broadcast domain을 나누어 불필요한 트래픽을 줄일 수 있습니다.
profile
성장하는 개발자가 되고싶어요
post-custom-banner

0개의 댓글