본문 바로가기

컴퓨터 사이언스/네트워크

[모바일 컴퓨팅] Data Link Layer

데이터 링크 계층의 목적:

- 네트워크 계층의 데이터를 다른 머신의 네트워크 레이어로 전송한다.

- 물리 계층의 raw bit stream을 groups of bits (frames)로 변환한다.

 

 

MAC and LLC

MAC and LLC

- 브로드캐스트 네트워크에서, 스테이션들은 공유된 커뮤니케이션 채널에서 한 번에 한 스테이션만 전송할 수 있음을 보장해주어야 한다.

- 브로드캐스트 채널에서 누가 전송을 할 수 있는가 결정해주는 프로토콜이 Medium Access Contorl (MAC) protocol이다.

- MAC protocol은 데이터링크 레이어의 하위 서브 레이어인 MAC 서브 레이어에 구현된다.

 

IEEE 802 standards

-IEEE 802는 LLC와 MAC에 대한 정의된 LAN 표준이다.

 

Ethernet Frame Structure

Ethernet Frame Structure

- 송신 어댑터는 패킷을 프레임에 캡슐화한다.

 

MAC Address (각 6 bytes) :

- globally unique 하다.

- Network Interface Card 벤더에서 MAC 주소를 지정하며, 상위 세 옥텟(8 bit = 1 bytes)은 제조사를 의미한다.

- 리시버의 어뎁터는 프레임을 다음과 같은 상황에서 네트워크 프로토콜로 넘깁니다.

1. 목적지 주소가 어댑터와 일치할 때

2. 목적지 주소가 브로드캐스트 주소일 때 (ff:ff:ff:ff:ff:ff)

3. 목적지 주소가 수신자가 속한 멀티 캐스트 그룹일 때

4. 어댑터가 promiscuous mode일 때 (sniffing을 하기 위한 모드)

 

Type (2 bytes) : 상위 레이어 프로토콜을 가리킨다. (보통 IP)

CRC  (4 bytes) : cyclic redundancy check

- 수신자가 프레임의 에러를 확인하고 쉽게 드랍할 수 있게 해준다.

Data : 최대 1,500 bytes, 최소 46 bytes (상위 레이어의 헤더 총합이 46 bytes이다.)

Ethernet Frame은 최소 46bytes 데이터 + 14bytes 헤더 + 4 bytes crc trailer = 64 bytes 를 가진다.

 

Loopback interface

- Loopback interface는 물리적으로 존재하지 않는 논리적인 인터페이스이다.

- TCP/IP를 사용하여 self-communication이 가능하도록 해준다. (127.0.0.1, localhost)

1. loopback address(127.0.0.1)로 전송된 데이터그램

2. broadcast address or 내가 속한 multicast address로 전송된 데이터그램

3. 호스트 자체 주소 중 하나로 전송된 데이터그램

 

ARP and RARP

- 인터넷은 IP 주소를 기반으로 하지만, 데이터 링크 프로토콜(이더넷, FDDI, ATM)은 MAC 주소를 사용한다.

- ARP, RARP 프로토콜은 IP 주소와 MAC 주소의 변환을 해준다.

ARP Example

-ARP Request from Alice

Source hardware address: 00:a0:24:71:e4:44

Source protocol address: 128:143:137:144 (대게 IP 주소이다.)

Target hardware address: 00:00:00:00:00:00 (0으로 채우는 이유는 아직 MAC 주소를 모르기 때문이다.)

Target protocol address: 128.143.137.1

 

-ARP Reply from Router137

Source hardware address: 00:e0:f9:23:a8:20

Source protocol address: 128.143.137.1

Target hardware address: 00:a0:24:71:e4:44

Target protocol address: 128.143.137.144

 

ARP Cache

각 IP datagram에 대해 ARP request/reply를 계속해서 전달하는 것은 비효율적이다.

때문에 호스트는 20분 후 파기되는 ARP cache entry를 유지한다.

 

ARP Cache Entry 예시 (macOS)

1. arp -a

2. arp -s ip-address mac-address

3. arp -d ip-address above

4. arp -d -a (windows의 경우 arp -d)

ARP table에 목적지 IP 주소에 해당하는 엔트리가 없으면 브로드캐스트로 물어본다.

 

링크 레이어는 같은 서브넷 안에서만 유효하다.

건너 다른 서브넷에 전달하기 위해서는 중간 라우터의 MAC 주소를 알아와 라우터에 전송한다.

 

Proxy ARP

-호스트 혹은 라우터가 자신의 arp table에 기반하여 다른 호스트의 ARP Request에 대해 대신해서 응답해주는 것이다.

 

Gratutious ARP

- 자신의 IP에 해당하는 주소를 ARP Request 보내는 것

- 다른 호스트과 자신과 같은 IP 주소를 가지고 있는지 확인하고 싶을 때 (Address Conflict Detect)

- 하드웨어 주소가 변경 되어 다른 호스트들의 arp cache entry를 변경해주고 싶을 때

 

ARP의 취약점

- ARP 요청과 응답에는 아무런 인증이 없으므로, 위조될 수 있다.

- ARP 요청이 없어도 ARP 응답이 보내질 수 있다. (ARP is stateless)

- ARP packet을 받았을 때, 해당하는 엔트리가 ARP Cache에 있더라도 반드시 ARP cahce를 업데이트 해주어야 한다.

 

위 취약점을 이용한 공격

- 위조된 ARP Request or Reply로 ARP cahce를 오염시킨다. (ARP Poisoning)

-> 다른 호스트들에 IP 트래픽을 리다이렉트하게 해준다.