목록분류 전체보기 (141)
공부하는 스누피
DNS란? 인터넷은 호스트를 IP 주소로 구분하지만, 사람이 기억하기 어렵다는 단점이 있다. 그래서 사람이 기억하기 쉬운 알파뉴메릭 문자인 hostname으로 식별되도록 하였다. hostname만으로는 호스트의 주소를 직접적으로 알기 어려워 IP 주소로 변환하는 과정이 필요하다. 그래서 DNS(Domain Name System)은 host name을 IP 주소로 변환해 주는 디렉터리 서비스를 제공한다. 기능 - Host name을 IP 주소로 변환: 1) 브라우저가 URL로부터 hostname을 추출하고 DNS 애플리케이션의 클라이언트 측에 넘긴다. 2) DNS 클라이언트(사용자 컴퓨터)가 DNS 서버로 hostname을 포함하는 질의를 보낸다. 3) hostname에 대한 IP 주소를 가진 응답을 보낸..

웹 캐시(프록시 서버)는 웹 사용자에 의해 빈번히 요청되는 데이터를 사용자와 지리적으로 가까운 웹캐시 서버에 보관해 빠른 서비스를 가능하게 한다. 그래서 원래의 웹 서버를 대신하여 HTTP 요구를 충족시켜준다. 또한, 저장 디스크를 갖고 있어 최근 호출된 객체의 사본을 저장한다. 캐시에 있는 객체는 서버에서 변경될 수 있으므로 일관성 유지 기법을 필요로 한다. 1. 브라우저가 웹 캐시와 TCP 연결을 설정하고 웹 캐시에 있는 객체에 대한 HTTP 요청을 보낸다. 2. 웹 캐시는 객체의 사본이 캐시에 저장되어 있는지 확인한다. 저장되어 있다면 브라우저로 HTTP 응답 메세지와 함께 객체를 보낸다. 3. 저장되어 있지 않다면 origin 서버로 TCP 연결을 설정한다. 이 연결로 브라우저가 요청한 객체에 대..

OSI 7계층이란? ISO가 개발한 복잡한 통신 프로토콜을 7개의 계층구조로 나누어 표현한 모델이다. 1) 애플리케이션 계층 - HTTP, FTP 같은 프로토콜을 포함. - 여러 종단 시스템 간에 분산되어 있어 애플리케이션끼리 '메시지'라는 패킷을 교환한다. 2) 프레젠테이션 계층 - 통신하는 애플리케이션들이 교환되는 데이터의 의미를 해석하도록 하는 서비스를 제공한다. - 데이터 압축, 암호화를 포함한다. 3) 세션 계층 - 종단 시스템 간의 연결 유지를 담당한다. - 데이터 교환의 경계와 동기화, 회복 방법을 제공한다. 4) 트랜스포트 계층 - 클라이언트와 서버 간에 애플리케이션 계층 메세지를 전송하는 서비스를 제공. - TCP, UDP 같은 프로토콜. - TCP는 신뢰성, 흐름제어, 혼잡제어 기능을 ..
패킷이 송신측에서 출발해 수신측까지 도달하기까지의 과정에서 수많은 라우터를 거친다. 경로상의 각 노드에서 패킷은 다양한 지연(delay)를 겪게 되는데, 노드 처리 지연, 큐잉 지연, 전송 지연, 전파 지연이 대표적이다. 이 지연들이 쌓여 전체 노드 지연(total nodal delay)를 일으킨다. 1. 처리 지연(processing delay) 패킷 헤더를 조사하고 패킷을 어디로 보낼지 결정하는 시간. 노드 처리 이후에 라우터는 목적지 라우터로 향하는 링크의 큐에 보낸다. ex) 놀이공원에 갔는데 롤러코스터를 타려면 어디로 어떻게 갈지 결정하는 시간. 2. 큐잉 지연(queuing delay) 큐에 저장되어 링크로 전송되기를 기다리는 패킷의 수에 따라 결정된다. 큐가 비어 있다면 큐잉 지연은 0이다...
링크와 스위치를 통해 데이터를 이동시키는 방식에는 패킷 교환(packet switching)과 회선 교환(circuit switching)이 있다. 1. 패킷 교환 네트워크에서 종단 시스템들은 서로 메시지를 교환한다. 송신 측에서는 메시지를 보내기 위해 긴 메세지를 패킷(packet)이라고 하는 작은 데이터 블록으로 나눈다. 각 패킷은 통신 링크와 패킷 스위치(라우터/스위치)를 거친다. 패킷은 링크의 최대 전송 속도와 같은 속도로 각각의 링크를 통해 전송된다. store-and-forward transmission 대부분의 패킷 스위치는 저장-후-전달 전송(store-and-forward transmission) 방식을 이용한다. 스위치가 패킷을 전송하기 전에 전체 패킷을 받아야 하는 것을 의미한다. 큐..
슈도코드(pseudocode)라고도 하는 의사 코드는 알고리즘이나 다른 시스템에서 작동하는 과정을 설명하는 언어입니다. 슈도코드는 프로그래밍 언어와 같이 구조적 형태를 자주 사용하지만, 사람이 읽기 좋게 되어 있습니다. 프로그래밍 언어와 일반적인 언어를 함께 쓰면서, 필요하다면 수학적 기호를 사용해 표현할 수 있습니다. 슈도코드를 왜 사용할까요? 슈도코드는 영어의 정보와 코드의 정확성 사이의 균형을 맞추어 작성됩니다. 만약 우리가 알고리즘을 영어로만 작성한다면, 코드로 변환하고 알고리즘적으로 분석하기에 어렵습니다. 대신 코드로만 작성하는 경우, 실제 코드를 구현하고 싶지 않아도 모든 디테일을 알아야 해 많은 시간이 걸립니다. 그래서 슈도코드의 목적은 high-level로 된 설명을 분석과 코딩이 가능하도..

이진 탐색 트리가 편향 트리이면 최악의 경우 O(h)의 시간복잡도를 가진다. 항상 O(logh)의 시간복잡도를 유지하려면 트리의 균형을 맞추어야 한다. AVL 트리는 균형 잡힌 트리 중 하나이다. AVL 트리에서는 균형의 정도를 표현하기 위해 균형 인수를 사용한다. 균형 인수는 왼쪽 서브트리의 높이 - 오른쪽 서브트리의 높이이다. 균형을 잡기 위해 트리를 재조정할 때, 균형 인수의 절댓값이 크면 클수록 트리의 균형이 무너진 상태이다. 균형 인수의 절대값이 1 이하여야 균형 잡힌 트리라고 할 수 있다. 트리의 균형을 잡는 방법은 Rebalancing, Refactoring 등으로 부른다. 재조정이 필요한 상태는 크게 4가지이다. 1) Left Left 상태 루트 노드의 균형 인수가 +2인 경우. 왼쪽 서브..
kjsu0209.github.io/Tech-Interview/data-structure/ds 자료구조 기술면접 대비 CS 질문 모음 kjsu0209.github.io 1. 스택과 큐 - 스택, 큐 둘다 선형 자료구조이다. - 스택은 선입후출LIFO 형식이고, 재귀 알고리즘의 작동 원리이다. - 큐는 후입후출FIFO 형식이고, 넓이 우선 탐색에 사용된다. - 큐는 스택 2개로 만들 수 있다. 큐에 들어온 값을 넣는 스택 a, dequeue 요청된 값을 넣는 스택 b를 구현한다. - dequeue는 b가 비어있다면 a를 모두 pop하여 b에 넣은 후 b를 pop하면 된다. b가 비어있지 않다면 그냥 pop하면 된다. a = [] b = [] for i in input: c = input('Command (I..