1. Link Layer란
- 네트워크 계층으로부터 받은 패킷에 헤더를 더하여 물리적으로 이웃한(LAN) 디바이스로 패킷을 전달합니다.
- LAN을 구축하는데 Ethernet 방식을 사용하며 CSMA/CD 프로토콜로 패킷을 전달합니다.
- 각 장비는 MAC 주소로 식별합니다.
※ Rancard
LAN에 접속하기 위한 카드로 호스트와 물리적 링크를 연결해주는 H/W입니다. 호스트의 데이터를 케이블에 실어서 허브, 스위치, 라우터 등으로 전달하고, 호스트로 온데이터를 CPU로 전달합니다. 각 장비의 MAC주소는 랜카드 ROM에 위치합니다.
2. Error Detection
에러를 검출하는 용도로, EDC 필드가 커질수록 높은 확률로 에러를 검출합니다.
[1] Parity Checking
- 데이터의 1의 갯수가 짝수이면 0으로, 1의 갯수가 홀수이면 1로 설정하여 보냅니다.
- 수신측에서 받은 데이터를 다시 계산하여 EDC 필드와 비교합니다.
- 1bit고 간단하게 체크할 수 있지만 에러 검출 성능이 좋지는 않습니다.
[2] Checksum
- 데이터를 16bit로 분할 한 후 모든 데이터를 더합니다.
- 만약 carry가 발생하면 +1 해줍니다.
- 이후 1의 보수를 취한 후 checksum 필드에 넣고 패킷을 전송합니다.
- 수신측에서 받은 데이터를 다시 계산하여 EDC 필드와 비교합니다.
[3] Cyclic Redundancy Check [CRC]
- 수학적 연산이 복잡하나 높은 확률로 에러를 검출 할 수 있고 간단한 HW로 구현 가능합니다.
- 임의의 CRC 발생 코드를 생성 후 발생 코드의 최고 차수만큼 원래 데이터 뒤에 0을 붙입니다.
- 데이터 % CRC 나온 값을 본 데이터에 더합니다.
- 수신측에서 받은 데이터 % CRC 값이 0인지를 판단합니다.
제품 생산 시 각 장비에 분배되는 고정된 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
- 패킷 전송 전 먼저 채널을 감지하여 다른 노드가 프레임을 채널로 전송하고 있다면 임의의 시간동안 대기합니다.
- 이후 다시 채널을 감지해 채널이 쉬고있다면 패킷을 전송합니다.
- 패킷을 전송함과 동시에 2개의 다른 포트를 이용하여 충돌이 발생 했는지를 검사합니다. 패킷이 목적지에 도착할 시간 이전에 다른 프레임의 비트가 발견되면 충돌이 일어난 것으로판단합니다.
- 충돌이 일어나면 전송 중지 후 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을 나누어 불필요한 트래픽을 줄일 수 있습니다.