ABOUT ME

Today
Yesterday
Total
  • 2025 - 03 - 24 "후니의 네트워크 공부일지" Day+3
    Network 2025. 3. 24. 17:53
    MAC(Media Access Control)

     

    네트워크에 붙은 각 장비들은 48bit
    ( 6octet이 됩니다. 여기서 옥테트란 8개의 비트를 묶은 것을 말합니다.
    일단 '8개의 비트가 옥테트이다' 라고 알고 넘어갑니다.)
    의 주소를 갖게 되는데, 이 주소는 랜카드 또는 네트워크 장비에 이미 고정되어 있는 주소이고, 유일한 주소입니다.
    이 주소를 바로 MAC(Media Access Control) 어드레스 또는 하드웨어 주소라고 합니다.
    모든 랜상의 디바이스들은 반드시 유일한 MAC 어드레스를 가져야 합니다.
    랜카드 하나하나마다 서로 다른 맥 어드레스가 있고 라우터나 스위치에도 맥 어드레스가 들어있습니다.
    MAC 어드레스는 8자리마다 하이픈이나 콜론, 점으로 구분되어지기도 하는데
    예를 들면

    00-60-97-8F-4F-86
    00;60;97;8F;4F;86
    0060.978F.4F86

    처럼 나타내고 위 3개는 모두 같은 호스트를 나타냅니다.
    하지만 원래 맥 어드레스는 2진수로 이루어진 48비트이기때문에
    00-60-97-8F-4F-86
    0000 0000 - 0110 0000 - 1001 0111 - 1000 1111 - 0100 1111 - 1000 0110 이 되는겁니다.
    그런데 이렇게 표시하게 되면 너무 길고 복잡해서 관리하기도 불편하고 기억하기도 불편하기 때문에 보통은 16진수로 표시하게 됩니다.
    그래서 48자리의 이진수로 이루어진 맥 어드레스가 이제는 12자리의 16진수 맥 어드레스가 되는겁니다.

    이 주소에서 앞쪽 6개의 16진수가 벤더, 즉 생산자를 나타내는 코드로 이 코드를 OUI라고 합니다.
    이 코드는 메이커에 따라 다르기 때문에 우리가 MAC 주소의 앞부분을 보면 어느 회사에서 만든제품인지를 알 수 있는 겁니다.
    뒤에 오는 나머지 6자리의 수가 메이커에서 각 장비에 분배하는 Host Identifier입니다.
    한마디로 시리얼 넘버인 셈입니다.
    따라서 맥 주소의 앞 6개는 만든회사, 뒤 6개는 회사에서 부여하는 일련번호인겁니다.

    00-60-97-8F-4F-86 에서 00-60-97 은 제조사 코드이고, 8F - 4F - 86 은 일련 번호인것입니다.

     

    유니캐스트

     

    우리가 랜에서 통신을 한다고 할 때 데이터를 보내고자 하는
    PC의 맥 어드레스가(00-60-80-AA-BB-CC)라고 가정하고, 
    받는 PC의 MAC 어드레스가 (00-60-80-DD-EE-FF) 라고 가정한 경우입니다.

    일단 통신을 위해서는 전송되는 프레임 안에 항상 출발지와 목적지의 주소,
    맥 어드레스가 들어 있어야 한다는 것은 앞에서 이미 배워서 알고 계실 겁니다.

    따라서 위의 경우 00-60-80-AA-BB-CC 로, 그리고 목적지는 00-60-80-DD-EE-FF 라고 써넣는 겁니다. 
    이러한 방식이 바로 유니캐스트 통신 방식입니다.

    즉 정확하게 받는 PC의 주소를 프레임 안에 써넣는데 이때 PC가 하나여야 한다는 겁니다.
    우리가 편지를 보내는 방식과 같다고 보면 이해가 쉬울 겁니다.
    봉투에 받는 사람 주소를 적고, 보내는 사람 주소를 적은 다음에 우체통에 넣는 방식입니다.
    이런 방식으로 어떤 PC가 유니캐스트 프레임을 뿌리게 되면 어차피 로컬 이더넷의 기본 성격이 붙어있는 모든 PC들에게 정보를 뿌리는 Shared 방식이기 때문에 그 로컬 네트워크 상에 있는 모든 PC들은 일단 이 프레임을 받아들여서 랜카드에서 자신의 맥 어드레스와 비교하게 됩니다. 

    그 다음 자신의 랜카드 맥 어드레스와 목적지 맥 어드레스가 서로 다른 경우는 바로 그 프레임을 버리게 됩니다.
    이렇게 되면 그 PC의 CPU까지는 영향을 주지 않기 때문에 PC의 성능이 저하되는 일은 발생하지 않습니다.

    만약 프레임의 목적지의 주소와 자신의 맥주소가 같을 경우 그 프레임을 받아들여서 
    자신의 CPU로 올려보냅니다.

    그 다음부터는 CPU가 알아서 하겠죠? 이런게 바로 유니캐스트의 통신 방식입니다.

    현재 네트워크상에서 가장 많이 사용되는 통신 방식이 유니캐스트 방식이며 특정 목적지의 주소 하나만을 가지고 통신하는 방식입니다.

     

    브로드캐스트

     

    브로드캐스트는 로컬 랜 상에 붙어있는 모든 네트워크 장비들에게 보내는 통신입니다.
    로컬 랜이란 라우터에 의해서 구분지어진 공간, 즉 브로드캐스트 도메인이라고 하는 공간을 뜻합니다.
    브로드캐스트는 통신의 대상이 특정한 어떤 한 네트워크 장비가 아니고 내가 살고 있는 네트워크 안의 모든 네트워크 장비들에게 통신할 때 쓰기 위한 방식이라고 생각하시면 됩니다.

    받은 사람이 이 브로드캐스트 도메인 안에 사는 모든 네트워크 장비들이죠.

    예를 들어 동네 이장님이 마이크로 방송하는 것과 똑같습니다.
    "동네 사람들! 반상회가 있으니까 다 모이세요!" 이렇게 말하는 겁니다.
    여기서 그 동네는 브로드캐스트 도메인이라고 합니다.
    이 브로드캐스트는 자기가 받기 싫다고 해서 받지 않는 것이 아니라 무조건 받는 겁니다.
    브로드캐스트의 주소는 미리 정해져 있는데 바로 FFFF.FFFF.FFFF(맥 어드레스로 했을 때)입니다.
    이 주소가 오면 랜카드는 비록 자신의 맥 어드레스와 같지는 않지만 이 브로드캐스트 패킷을 CPU에 보내게 됩니다.
    그 다음은 CPU가 이 패킷을 알아서 처리하게 됩니다.
    따라서 CPU가 할일이 늘어나겠죠?
    브로드캐스트는 네트워크 상의 전체 노드로 전송되기 때문에 전체적인 트래픽도 증가하지만 이 패킷을 받은 모든 랜카드가 이 패킷을 CPU로 전송하기 때문에 CPU는 하던일을 멈추고 또 다른일을 해야하고, 이에 따라 전체 PC의 성능도 떨어지게 되는 겁니다.
    따라서 과도한 브로드캐스트는 전체 네트워크의 성능뿐 아니라 PC 자체의 성능 역시 떨어뜨리는 결과를 가져오는 겁니다.
    그럼 브로드캐스트는 어떤 경우에 발생할까요?
    예를 들어 처음 두 PC간에 통신을 하는 경우에는 상대편의 맥 어드레스를 모르겠죠?
    상대편의 IP 주소는 알 수 있어도 말입니다.
    이 경우에 상대의 맥 어드레스를 알아내기 위해서 하는 동작이 바로 ARP(Address Resolution Protocol)입니다.
    이 ARP가 바로 브로드캐스트입니다.
    즉 우리 동네 사는 모든 사람들에게 "이 IP 주소 가진 사람 누구야?" 하고 브로드캐스트를 보내는 겁니다.
    그럼 그 IP 주소를 가진 사람이 "나야" 하고 대답한 다음 자신의 맥 어드레스를 보내게 되는데 이런 과정을 ARP라고 합니다.
    그외에도 라우터끼리 정보를 교환한다거나 다른 라우터를 찾을 때, 또 서버들이 자신이 어떤 서비스를 제공한다는 것을 모든 클라이언트들에게 알릴 때 등 여러 경우에 사용되고 이런 브로드캐스트들은 한 번 발생하고 끝나는 것이 아니라 대부분 30초나 1분에 한 번씩 주기적으로 발생하게 됩니다.

     



    우리는 여기서 한 가지 실험을 해보도록 하겠습니다.

     

     


    다음에 있는 그림은 유니캐스트에 대한 실험입니다.

     

    현재 이 네트워크 상에는 랜카드 맥 어드레스가 A인 PC 혼자만이 살고 있습니다.
    이 때 트래픽 발생기가 목적지 주소를 B로 해서 맥 어드레스가 A인 랜카드가 설치되어 있는 PC에 트래픽을 계속 보내기 시작했습니다.
    PC에 설치된 랜카드는 들어오는 프레임의 목적지 주소를 보게되는데, 비교해보니 목적지 주소가 자기 맥 어드레스와 다르기때문에 이 프레임을 계속 무시하고 CPU에게는 올려보내지 않는 겁니다.
    그럼 CPU는 자기가 하던 일을 계속 수행할 수 있겠죠?


    하지만 다음 그림을 볼까요?

     

     

     

    그림에서 보시는 대로 앞의 상황과 똑같은 구성입니다.
    다만 이번에는 트래픽 발생기에서 브로드캐스트를 발생시켰습니다.
    그러자 PC가 자신의 맥 어드레스 'A' 와 다른 'FFFF' 인데도 불구하고 이 프레임을 버리지않고 CPU에게 전달하면서 인터럽트를 걸게 됩니다.
    즉 "너 지금하던 일을 멈추고 이것부터 해결해 줘!" 라고 랜카드가 CPU쪽으로 프레임을 던져주는 겁니다. 
    따라서 CPU가 다른 일을 해야 하기 때문에 PC는 당연히 느려질 수밖에 없는 겁니다.
    브로드캐스트가 얼마나 CPU의 성능을 저하시키는지를 보여주고 있는 그림입니다.
    이 데이터는 노턴 유틸리티를 이용해서 만들어진 것으로 초록선이 유니캐스트, 그리고 빨간선이 브로드캐스트를 나타냅니다.
    즉 최초 CPU 성능이 100%인 상태에서 유니캐스트를 계속 발생시켰습니다.
    그래프의 아래쪽은 초당 발생시킨 패킷의 숫자를 나타내는데 유니캐스트의 경우 아무리 많은 패킷을 발생시켜도 CPU의 성능은 줄어들지 않음을 보여주고 있습니다.
    이러한 현상은 인텔PC나 메킨토시 모두 마찬가지입니다.
    하지만 브로드캐스트 패킷을 발생시킨 경우에는 그 패킷의 수가 많아질수록 CPU의 성능이 떨어지고 있음을 알 수 있습니다.
    즉 앞에서 설명드린대로 브로드캐스트의 경우는 CPU의 성능을 떨어뜨리기 때문입니다.
    물론 여기 있는 그림의 자료는 어떤 PC로 어떤 패킷으로 측정하는가에 따라서 결과가 조금 차이가 있을 수 있지만 브로드캐스트가 CPU 성능은 떨어뜨리는 것은 사실입니다.

     

    멀티캐스트

     

    200명의 사용자가 있는 네트워크에서 150명에게만 같은 정보를 동시에 보내야 하는 상황이라고 가정해봅시다.
    첫번째, 우리가 이미 배운 유니캐스트라는 걸 사용하는 경우입니다.

    즉 150명의 주소로 하나씩 전부 보내주는 겁니다. 일일이 각각의 주소를 적어넣은 편지를 150번 보내주는 겁니다. 이것도 가능한 방법이겠죠? 하지만 서버쪽에서 볼 때는 같은 데이터를 150번이나 반복해서 보내야 하기 때문에 일이 많아질 뿐 아니라 네트워크 상에서도 같은 데이터가 150번이나 반복되어 보내지기 때문에 트래픽을 가중시키게 되는 겁니다.

    또 하나의 방법은 브로드캐스트를 이용하는 방법입니다.
    브로드캐스트로 한 번에 모든 사용자에게 보내는 겁니다.
    이 경우에는 서버에서 한 번에 브로드캐스트 주소를 사용해서 보내기 때문에 유니캐스트처럼 150명에게 한 번씩 보낼 필요가 없을겁니다.
    하지만 이 경우에는 이 데이터를 받을 필요도 없는 나머지 50명조차도 이 데이터를 받아야만 한다는 문제가 발생합니다. 앞에서 언급한 것처럼 브로드캐스트는 데이터를 CPU로 올려보내기 때문에 PC 자체의 성능을 떨어뜨립니다.
    따라서 나머지 50대는 브로드캐스트때문에 쓸데없는 영향을 받게 되는 겁니다.

    자 그렇다면 이 문제를 가장 쉽게 해결하는 방법은 뭘까요?

    그게 바로 멀티캐스트입니다.

    멀티캐스트는 보내고자하는 그룹 멤버들에게만 한 번에 보낼 수 있기 때문에 유니캐스트처럼 여러 번 보낼 필요도 없고, 브로드캐스트처럼 받기 싫어하는 사람에게까지 보낼 필요도 없습니다. 
    그 그룹에 속해있는 사람들에게만 선택적으로, 그것도 한 번에 보낼 수 있는 겁니다. 
    참 좋은 기능이죠? 예전에는 이 멀티캐스트가 별로 쓸 일이 없습니다.
    하지만 요즘은 여러가지 어플리케이션 프로그램들이 이러한 기능을 필요로 하기 때문에 점점 더 인기를 더해가고 있는 추세입니다.
    멀티캐스트는 라우터나 스위치에서 이 기능을 지원해 주어야만 쓸 수 있습니다.
    만약 라우터나 스위치가 멀티캐스트를 지원하지 않는다면 라우터의 경우는 이러한 멀티캐스트를
    마치 브로드캐스트처럼 취급해서 다 막아버리고 스위치의 경우는 모든 포트로 뿌려버립니다.
    다시 설명드리겠지만 멀티캐스트는 그룹에 포함되고, 또 그룹에서 빠져나가는 것을 정의하기 위해 몇가지 기술을 사용합니다.
    또한 IP 주소의 경우도 클래스 D를 사용합니다.

     

    OSI 7 Layer는 왜 만들어졌나

     

    OSI 7계층은 이렇게 이루어져 있습니다.

    - Physical Layer(피지컬 계층)
    - Data Link Layer(데이터 링크 계층)
    - Network Layer(네트워크 계층)
    - Transport Layer(트랜스포트 계층)
    - Session Layer(세션 계층)
    - Presentation Layer(프레젠테이션 계층)
    - Application Layer(어플리케이션 계층)

    이렇게 나눈 이유는 여러개가 있습니다.

    첫번째는 데이터의 흐름이 한눈에 보인다는 겁니다. 
    즉, 우리가 사용하는 어플리케이션 계층부터 피지컬 계층까지를 나누어 놓으니까 어떻게 데이터가 날아가는지 보기 쉽다는 겁니다.

    두번째는 문제 해결하기가 편리하다는 겁니다.
    네트워크에서 문제가 발생하면 이 문제 하나를 7개의 작은 문제로 나눈 다음 그 문제를 해결하면 훨씬 쉽다는 겁니다.
    예를 들어서 자신의 PC가 전자 메일이 안된다.
    그럴 경우 네트워크를 조금 아는 사람이라면 도스 모드로 빠져나가서 핑을 쏴봅니다.
    즉 인터넷이 끊어졌는지 확인해 보는 겁니다.
    이것은 내 메일 프로그램의 문제, 즉 어플리케이션 문제가 발생했을때,
    핑을 쏴봄으로써 네트워크 계층 문제 때문에 메일이 안되는지를 확인해 보는 겁니다.
    만약 핑을 쐈는데, 이상이 없다면 네트워크 계층까지는 이상이 없는 거니까 피지컬, 데이터 링크, 네트워크 계층까지의 문제는 아니라는 결론을 내립니다.
    그리고 단계별로 그위의 계층부터 확인하면 됩니다.

    세번째는 계층을 7개로 나누고 각 층별로 표준화를 하니까 여러 회사 장비를 써도 네트워크가 이상없이 돌아가는 겁니다.
    즉 랜카드는 3Com, 허브는 인텔, 그리고 라우터는 시스코를 써도 계층별로 나누어졌기 때문에 아무 이상없이 네트워크를 쓸 수 있는 겁니다.

     

Designed by Tistory.