데이터 링크 계층의 목적:
- 네트워크 계층의 데이터를 다른 머신의 네트워크 레이어로 전송한다.
- 물리 계층의 raw bit stream을 groups of bits (frames)로 변환한다.
MAC and LLC
- 브로드캐스트 네트워크에서, 스테이션들은 공유된 커뮤니케이션 채널에서 한 번에 한 스테이션만 전송할 수 있음을 보장해주어야 한다.
- 브로드캐스트 채널에서 누가 전송을 할 수 있는가 결정해주는 프로토콜이 Medium Access Contorl (MAC) protocol이다.
- MAC protocol은 데이터링크 레이어의 하위 서브 레이어인 MAC 서브 레이어에 구현된다.
IEEE 802 standards
-IEEE 802는 LLC와 MAC에 대한 정의된 LAN 표준이다.
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 트래픽을 리다이렉트하게 해준다.
'컴퓨터 사이언스 > 네트워크' 카테고리의 다른 글
[모바일 컴퓨팅] User Datagram Protocol (UDP) (0) | 2021.04.21 |
---|---|
[모바일 컴퓨팅] ICMP (Internet Control Message Protocol) (0) | 2021.04.20 |
[모바일 컴퓨팅] IP (Internet Protocol) (0) | 2021.04.19 |
[모바일 컴퓨팅] Addressing (0) | 2021.04.18 |
[모바일 컴퓨팅] Introduction and Layering (0) | 2021.04.16 |