https://dev-chicken.tistory.com/24
Network Device와 연관되어 있어서, 같이 보면 좋을 것 같습니다.
Mac Address
OSI 7Layer 중 2번째 Data link에 포함
이더넷 기반 기기에 할당되어 있는 고유 주소
기기의 물리적 주소
8비트씩 6자리로 표기되어있음
3(제조사 코드) + 3(기기 고유 코드)
IP Address
OSI 7Layer 중 3번째 Network에 포함
네트워크 환경에서의 컴퓨터간 통신을 위한 주소
네트워크 주소(3자리) + 호스트 주소(1자리)로 이뤄져있다
개발하다보면 많이 사용되는 localhost는 127.0.0.1인데, 이렇듯 일부 번호는 특별한 용도를 위해 사용
IPv4와 IPv6가 존재
IPv4가 거의다 사용되어서 새롭게 IPv6가 만들어짐
간단하게 글로 비교하자면,
- IPv4는 32비트(8비트 4부분), IPv6는 128비트(16비트 8부분)로 주소의 개수가 차이남
- IPv6에서 좀 더 많은 기능을 제공 -> QoS, 보안, 서비스 품질 등에서 좀 더 기능이 많음
- IPv4 <-> IPv6간 통신시에 헤더변환, 터널링등의 추가적인 작업이 필요
예전에 개발 중 희미하게 기억나는 것이, 와이파이 / LTE / 5G 각각 환경마다 IP주소 할당이 다르게 되서 IPv4 <-> IPv6 작업이 필요했던 기억이 남..
FDB Table
Forwarding Database
OSI Layer 2 Device인 Switch/Bridge를 이용
FDB에서 MAC 정보(장비), 포트정보를 저장하여 패킷을 주고받을 때 사용
저장 유효기간이 존재하여서 일정 기간이 지나면 FDB에서 삭제
FDB에 데이터가 존재하지 않을때는 Flooding을 통해 정보를 찾아내고 사용, 저장을 함
Ubuntu서버에서는 /sys/class/net/{device}/address에서 사용중인 device의 MAC 주소들을 확인 가능
bridge fdb show를 통해 fdb 확인 가능
bridge fdb는 통신시 learning이 되어 저장되고, aging으로 일정 시간이 지나면 지워짐
vagrant@ubuntu1804:~$ cat /sys/class/net/*/address
02:42:07:95:35:79
...
vagrant@ubuntu1804:~$ bridge fdb show
33:33:00:00:00:01 dev eth0 self permanent
01:00:5e:00:00:01 dev eth0 self permanent
01:80:c2:00:00:0e dev eth1 self permanent
33:33:00:00:00:01 dev docker0 self permanent
01:00:5e:00:00:01 dev docker0 self permanent
33:33:ff:95:35:79 dev docker0 self permanent
...
ARP Table
Address Resolution Protocol
네트워크 상에서 IP주소와 MAC 주소를 맵핑시켜주는 프로토콜
같은 IP대역을 쓰는 LAN에서 통신을 하기 위함
IP주소를 목적지로 와서 최종적으로 MAC주소를 찾아감
#install arp-scan
vagrant@ubuntu1804:~$ sudo apt install arp-scan
...
root@ubuntu1804:~# arp-scan -l
IP주소와 MAC주소 연결된 것 확인가능
...
arp table은 arp-scan library를 설치하여 확인 가능
Flooding
위의 내용과 같이 통신을 할때는 ARP와 FDB를 참고
각각의 Table에 내가 요청보낸 정보가 없을때는 연결된 모든 포트에 패킷을 전달하여 목적지를 찾음
이것을 Flooding이라고 함
- 테이블이 비어있거나 가득 차있을 때
- 테이블에 데이터가 있어도 해당되는 목적지가 없을 때
- 브로드캐스팅 기능 이용할 때
Flooding이 일어남
보안적인 관점에서 취약할 수 있는 포인트이기 때문에 유의해야함
MAC Flooding Attack / ARP Spoofing 등
예전에 찾아봤을땐 최근에는 기본적으로 이런 부분이 막혀있다고 보긴 했음
Switch장비를 신규로 적용하며 잘못된 설정으로 지속적으로 Flooding이 일어나고 테이블이 꽉차 Packet Drop이 생길 수도 있음
댓글