Switch 앞서 작성한 글에서 허브는 `Collision Domain`을 나눌 수 없어, 하나의 포트에서 메시지를 보낼 경우 다른 포트는 지연된다고 설명하였다. 하지만 이와 달리 스위치는 각 포트 별로 Collision Domain을 나눈다. 즉, 포트 별로 통신을 수행할 수 A허브에서 발생하는 지연이 발생하지 않는다. Collision Domain을 위한 기능 Learning 테이블을 이용하여, 각 `Collision Domain`에 어떤 `MAC addr`이 있는지에 대한 정보를 저장한다. 이는 장비의 제원에 따라 테이블 크기가 다르다. Flooding 테이블에 존재하지 않는 `MAC addr`일 경우, 모든 포트로 전송해 일치하는 목적지를 찾도록 한다. Forwarding `MAC addr`이 테..
네트워크를 배운 지 시간이 꽤 흘렀다. 허브, 브리지, 스위치, 라우터와 같은 장비들을 두루 뭉실하게 알고 있어 각 장비에 대해 명확히 정리하고 이해해보고자 한다. Hub 허브는 간단히 말하면, `디바이스와 디바이스를 네트워크로 연결해주는 장비`이다. 허브는 `멀티포트 리피터(Multiport Repeater)`의 기능을 수행하여, 서로 다른 디바이스를 네트워크로 연결할 수 있다. `멀티포트 리피터`는 단어의 의미를 하나씩 생각하면 이해하기 쉽다. 멀티 포트 : 허브 자체에 다수의 포트가 존재한다. 리피터 : 다른 디바이스들로 부터 받은 신호들을 증폭시킨다. 즉, 허브는 `멀티 포트`를 통해 각기 다른 디바이스 들을 물리적으로 연결할 수 있으며, `리피터`를 통해 받은 신호들을 증폭시켜주는 역할을 하는 ..
새로운 개발 환경을 마주하게 될 일은 잘 없지만, 나의 입맛에 따라 환경을 다시 구성하는 것은 재밌는 일이면서도 귀찮은 일이다. vim에서 사용하면 좋은 옵션들과 플러그인들을 한 번에 모아 내가 사용하는 계정의 홈 디렉토리에 위치시키면 바로 사용할 수 있도록 정리해보았다. 아래의 설명들은 우분투 환경을 기준으로 설명한 것이다. 설정하기 $ git clone https://github.com/dirmathfl/vim-settings.git $ cd vim-settings $ tar xvf vim-settings.tar.gz $ cd vim-settings && cp -r . ~/. vim 실행 후 `:PluginInstall`을 입력하면, 포함된 플러그인들이 자동으로 설치된다. 사용하는 플러그인 Vundl..
기억 클래스 지정자(Storage class specifiler)는 변수를 위한 기억장치 할당 관리의 효율성을 담당한다. 또한 메모리, 레지스터, 스택 등 어디에 할당하느냐에 따라 scope와 life time이 달라지게 된다. 따라서 각 기억 클래스에 대한 특징을 명확히 알고 코드를 작성하는 것이 좋다. auto 흔히 사용하는 변수로, 아무것도 지정하지 않으면 자동으로 `auto` 키워드가 붙게 된다. 이는 선언된 영역 또는 함수를 벗어나면 사라지게 되며, 실행 중에는 메모리의 `stack`에 위치하게 된다. register 해당 키워드를 지정한 변수를 CPU의 `register`에 저장하도록 요청할 때 사용한다. 이는 컴파일러에 따라 사용자가 `register`라고 명시하였음에도 불구하고 `auto`..