링크 https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자..
해쉬 테이블 해쉬 테이블은 해시 값을 index로 삼아 key와 value를 저장하는 자료구조이다. 빠른 검색이 필요한 경우에 많이 사용되는 자료구조인데 내부적으로 배열을 사용하여 값을 저장하기 때문이다. 해쉬 테이블은 각 Key 값에 해쉬함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색한다. 이때 실제 값이 저장되는 장소를 버킷이라고 한다. 자바에서 제공하는 Hashtable 클래스를 살펴보면 해당 자료구조에 값을 저장할 때 아래의 그림처럼 동작한다. key를 자바에서 제공하는 해쉬함수인 hashCode()를 이용하여 해쉬 값으로 변경하고 그 변경한 값을 인덱스 값으로 또 계산하는 것을 볼 수 있다. 시간복잡도 추가, 삭제 : O(1) 검색 : O(1) 하..
홉바이홉 통신 IP 주소를 통해 통신하는 과정을 홉바이홉 통신이라고 한다. 여기서 홉(hop)이란 사전적인 의미로는 건너뛰는 모습을 의미한다. 이는 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현한 것이다. 해당 그림처럼 수많은 서브네트워크 안에 있는 라우터의 라우팅 테이블 IP를 기반으로 패킷을 전달하고 또 전달해나가며 라우팅을 수행하며 최종 목적지까지 패킷을 전달한다. 즉, 라우팅 테이블을의 IP를 통해 시작 주소부터 시작하여 차례차례 다음 IP로 이동하는 라우팅 과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신을 의미한다. 라우팅 테이블 라우팅 테이블은 송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어있는 ..
ARP 컴퓨터 간의 통신은 IP 주소를 기반으로 통신한다고 알고 있지만 정확하게는 이 사이에 ARP를 통해 MAC 주소를 찾아서 MAC 주소를 기반으로 통신한다. ARP란 IP와 MAC 주소의 다리 역할을 하는 프로토콜이다. 위에서 설명했듯이 ARP를 통해 IP 주소를 실제 주소인 MAC 주소로 변환한다. 이와 반대로 RARP를 통해 실제 주소인 MAC 주소를 IP 주소로 변환하기도 한다. 장치 A가 ARP Request 브로드캐스트를 보내서 IP 주소인 120.70.80.3에 해당하는 MAC 주소를 찾는다. 그리고 해당 주소에 맞는 장치B가 ARP Reply 유니캐스트를 통해 MAC 주소를 반환하는 과정을 거쳐 IP 주소에 맞는 MAC 주소를 찾게된다. 브로드캐스트 : 송신 호스트가 전송한 데이터가 네..
해당 기기들은 물리 계층을 처리하는 기기이다. NIC LAN 카드라고 하는 네트워크 인터페이스 카드는 2대 이상의 컴퓨터 네트워크를 구성하는데 사용하며, 네트워크와 빠른 속도 데이터를 송수신 할 수 있도록 컴퓨터 내에 설치하는 확장 카드이다. 각각 주민등록번호와 같이 구분하기 위한 MAC 주소라는 식별번호가 있다. 리피터 리피터는 들어오는 약해진 신호를 증폭하여 다른 쪽으로 전달하는 장치를 말한다. 이 리피터를 통해 더 멀리 패킷을 보내도록 사용했는데, 현재는 광케이블이 보급되면서 잘 쓰이지 않는 장치이다. AP AP는 패킷을 복사하는 기기이다. AP에 LAN을 연결한 후 다른 장치에서 와이파이 등 무선 LAN 기술을 사용하여 무선 네트워크 연결을 할 수 있다. 참고 면접을 위한 CS 전공지식 노트
L2 스위치 L2 스위치는 장비들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당한다. IP를 이해하지 못해 IP로 라우팅은 불가능하고 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다. 역할을 봤을 때 허브와 유사하다고 생각이 된다. 브리지 브리지는 두 개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치로, 포트와 포트 사이의 다리 역할을 한다. 이 또한 MAC 주소 테이블로 관리한다. 브리지는 통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 하나의 통신망을 구축할 때 쓰인다. 참고 면접을 위한 CS 전공지식 노트
라우터 라우터는 여러 개의 네트워크를 연결, 분할, 구분 시켜주는 역할을 하며 다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩하는 장비이다. L3 스위치 L3 스위치는 L2 스위치의 기능과 라우팅 기능을 갖춘 장비를 말한다. L3 스위치를 라우터라고 보면 된다. 라우터는 소프트웨어 기반의 라우팅과 하드웨어 기반의 라우팅을 하는 것으로 나눠지고, 하드웨어 기반의 라우팅을 담당하는 장비가 L3 스위치이다. 위의 그림과 같이 라우팅 테이블이라는 곳에 목적지들을 미리 정해놓고 라우터는 해당 테이블을 참고하여 패킷을 목적지로 전송한다. L3 스위치 관련해서 백본 스위치라는 것이 있는데, 궁금하면 해당 링크에 들어가서 보면 좋을 것 같..
L7 스위치 스위치라고 하면 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 데이터를 전송하는 통신 네트워크 장비이다. 그 중 L7 스위치는 로드밸런서라고 하며, 서버의 부하를 분산하는 장비이다. URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 분산할 수 있다. 또한, 바이러스, 불필요한 외부 데이터 등을 걸러내는 필터링 기능도 가지고 있다. 만약 장애가 발생한 서버가 있다면 이를 트래픽 분산 대상에서 제외해야 하는데, 이는 헬스 체크(health check)를 이용하여 감시하면서 이루어진다. L4 vs L7 로드밸런서로는 L7 스위치 뿐만 아니라 L4 스위치도 있다. L4 스위치는 전송 계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용할 수 없으며 IP와 포트를 기반으로 (..