데이터 링크 계층 2

윤상준·2022년 4월 5일
0

네트워크

목록 보기
16/19
post-thumbnail
post-custom-banner

Ethernet

앞서 서브넷이란 같은 네트워크 프리픽스를 갖고 라우터를 거치지 않은 채 서로 접근이 가능한 호스트들의 집합이라고 했다.

이 호스트들의 연결은 LAN (Local Area Network)을 통해 이루어져있다.

이더넷 (Ethernet)

  • 지배적인 (dominant) 유선 LAN 기술이다.
  • NIC마다 20달러 정도의 가격으로 저렴하다.
  • 처음으로 널리 사용되기 시작한 LAN 기술이다.
  • Token LANs 그리고 ATM에 비해 더 간단하고 저렴하다.
  • 속도는 10 Mbps ~ 10 Gbps 사이에서 유지된다.

Ethernet: physical topology (물리적인 분류)

90년대 중반까지 많이 사용된 방식이다.
모든 노드들은 동일한 충돌 영역에 있기 때문에 서로 충돌할 수 있다.

star (prevails today)

현대에서 많이 사용되는 방식이다.
중앙에 위치한 Switch가 노드들을 관리하며 서로 충돌이 발생하지 않는다.

Ethernet frame structure

송신 어댑터는 IP 데이터그램 또는 다른 네트워크 계층 프로토콜의 패킷을 이더넷 프레임에 포함시킨다. (캡슐화)

이때 이더넷 프레임의 헤더에는 preamble, dest address, source address, type 필드가 위치해 있다.

  • preamble : 10101010 패턴을 가진 7byte와 10101011 패턴을 가진 1byte로 이루어져있다.
    • 전송자와 수신자의 Clock 속도를 동기화하는데 사용된다.
  • type : 상위 계층 프로토콜의 타입을 지정한다.
  • CRC : Cyclic Redundancy Check at receiver. 에러 탐지 또는 복구에 사용된다.

Ethernet uses CSMA/CD

이더넷이 사용하는 MAC 프로토콜은 CSMA/CD 이다.

  • 어댑터는 다른 어댑터가 전송 중인 것을 감지하면 전송하지 않는다. (Carrier Sense)
  • 전송 중인 어댑터는 다른 어댑터가 전송 중인 것을 감지하면 전송을 중단한다. (Collision Detection)
  • 재전송을 시도하기 전에, 어댑터는 랜덤한 시간 동안 대기한다. (Random Access)

그렇다면 만약 이더넷에서 충돌은 발생했는데 MAC 프로토콜이 감지하지 못할 수도 있을까?

  • A와 E가 각각 보내야 할 프레임이 있다고 하자.
  • A가 보낸 프레임이 E에 도착하기 직전에 충돌이 발생했다.
  • E는 충돌을 바로 감지하고 대기 및 재전송을 준비한다.
  • 만약 A가 충돌을 감지하기 전에 전송을 끝내버린다면, A는 끝내 충돌을 감지하지 못하고 전송이 완벽하게 이루어졌다고 착각하게 된다.
  • 따라서 이더넷에서는 프레임의 최소 크기를 64바이트로 정해놓고 전송하도록 강제한다.

ARP (Address Resolution Protocol)

MAC address와 IP 주소를 서로 연결하는 용도의 프로토콜이다.

호스트 간의 통신에서 양쪽 호스트들은 IP 주소를 사용해서 목적지를 지정한다. 하지만 실제로 데이터를 이동할 때에는 MAC 주소를 함께 이용해야 한다. 이때 사용하는 프로토콜이 바로 ARP이다.

ARP는 IP 주소와 MAC 주소를 일대일로 매칭하여 상위 계층에서 목적지를 제대로 찾아갈 수 있도록 해준다.

MAC address and ARP

MAC 주소는 48비트를 사용하고 있고, 이를 24비트씩 쪼개서 사용한다. 앞의 24비트는 제조 회사, 뒤의 24비트는 그 인터페이스의 고유 번호를 부여한다.

MAC 주소는 네트워크 인터페이스 카드가 제조되는 순간 제조사에서 부여하는 주소로써 불변의 값이다. 따라서 자기 자신의 MAC address를 변경한다는 말은 실제로 인터페이스 카드의 MAC address를 변경하는 것이 아니라, 나한테서 나가는 MAC 프레임의 Source Address를 다른 주소로 변경하는 것을 말한다.

LAN address and ARP

LAN 상에 위치한 각각의 어댑터들은 서로 고유한 LAN 주소를 갖고 있다.

IP 패킷의 헤더 중에서 Source Address 필드에는 자기 자신의 MAC 주소가, Dest Address 필드에는 다음에 도착할 게이트웨이 라우터의 IP 주소가 적혀있다.

이후 IP 패킷은 MAC 프레임에 Encapsulate 된다. MAC 프레임의 헤더의 Source Address 필드에는 역시 자기 자신의 MAC 주소가, Dest Address 필드에는 게이트웨이 라우터의 MAC 주소가 적혀있다.

이때 자신의 IP, MAC 주소, 목적지의 IP 주소는 알 수 있지만 게이트웨이 라우터의 MAC 주소는 바로 알 수 없다. 하지만 DHCP를 통해 게이트웨이 라우터의 IP 주소는 알고 있으므로, 이를 갖고 MAC 주소를 알아내는 과정이 추가로 필요하다.

ARP Table

게이트웨이 라우터의 MAC주소는 각 호스트의 ARP에서 알아낼 수 있다.

각 인터페이스 안에는 ARP Table이 존재한다. 테이블에는 IP 주소와 대응하는 MAC 주소가 적혀있다. 찾고자 하는 MAC 주소가 테이블 안에 있으면 다행이지만, 없다면 이를 채워넣어야한다. 이 채워넣는 작업을 담당하는 프로토콜이 ARP 프로토콜이다.

ARP 프로토콜은 만약 테이블에 필요한 엔트리가 없다면 ARP Request 프레임을 브로트캐스트로 LAN 전체에 전달한다. 이후 게이트웨이 라우터의 IP에 해당하는 호스트가 응답한다.

즉, 게이트웨이 라우터가 ARP Request에 응답하여 자기 자신의 MAC 주소를 알려준다.

ARP 프로토콜은 이렇게 받은 MAC 주소를 ARP 테이블에 채워넣는다.

또한 ARP 테이블 내의 엔트리들은 Cache (캐시)이기 때문에 일정 시간 후 소멸된다. 만약 소멸되어서 필요한 정보가 없어진다면 다시 상위의 과정을 반복하여 채워넣는다.

라우터는 포워딩 테이블을 참조하여 다음 라우터를 찾아내고, 자기 자신의 프레임의 Dest Address 필드에 다음 라우터의 MAC 주소를 집어넣음으로써 패킷을 이동시킨다.

profile
하고싶은건 많은데 시간이 없다!
post-custom-banner

0개의 댓글