본문 바로가기

분류 전체보기

(318)
[Network] DNS 도메인 네임 우리가 네이버 웹사이트에 접속하려고 하려면 내 컴퓨터에 있는 브라우저가 네이버 사이트를 제공하는 서버에다가 요청을 해서데이터들을 받아와야 한다. 하지만 우리가 전화번호를 이름과 같이 저장하는 것처럼 모든 서버의 IP 주소를 외울 순 없다.도메인 이름의 기본 형식은 이름과 확장자 두 가지로 구성되어 있다. 네이버 같은 경우에는 ‘naver’가 이름이고 ‘.com’이 확장자인 것이다. 이렇게 우리가 흔히 알고 있는 도메인은 바로 인터넷 주소이다. IP 주소는 기억하기 어렵기 때문에 영문이나 한글로된 인터넷 주소인 도메인을 사용하고 있다. 도메인 네임과 URL의 차이점은?웹 주소라고도 하는 Uniform Resource Locator(URL)에는 사이트의 도메인 이름, 프로토콜, 경로 등의 정보가..
[CS] 데드락 데드락(교착 상태)두 개 이상의 프로세스 혹은 쓰레드가 서로가 가진 리소스를 기다리는 상태 데드락을 만드는 네 가지 조건상호 배제(Mutual exclusion): 리소스를 공유해서 사용할 수 없다.점유와 대기(hold and wait): 프로세스가 이미 하나 이상의 리소스를 취득한 상태(hold)에서 다른 프로세스가 사용하고 있는 리소스를 추가로 기다린다(wait).비선점(No preemption): 리소스 반환은 오직 그 리소스를 취득한 프로세스만 할 수 있다.원형 대기(Circular wait): 프로세스들이 순환하는 형태로 서로의 리소스를 기다리는 상태운영체제(OS)의 데드락 해결 방법데드락 방지데드락 회피데드락 감지와 복구데드락 무시데드락 방지(Deadlock prevention)네 가지 조건 ..
[CS] 동기화 기법 동기화여러 프로세스/쓰레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것  임계 구역(critical section)공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역  레이스 컨디션(race condition)임계 구역에 동시에 접근하면 자원의 일관성이 깨질 수 있다.이를 레이스 컨디션이라고 한다.(여러 프로세스/쓰레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황) 임계구역 문제의 해결책이 되기 위한 조건상호배제(mutual exclusion): 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 들어올 수 없다.진행(progress): 임계 구역에 어떤 프로세스도 진입하지 않았다면 진입하고자 하는 프로세스는 ..
[Network] HTTP와 HTTPS HTTP (Hypertext Transfer Protocol)웹에서 통신할 때 사용하는 가장 기본적인 프로토콜클라이언트와 서버가 주고 받는 메세지의 형식에 대한 약속이다. 1. 평문 통신이므로 도청이 가능하다.HTTP는 서버에서 브라우저로 전송되는 정보가 암호화되지 않는다.암호화 하지 않은 평문을 보내기 때문에 제 3자가 훔쳐볼 수 있다.  2. 완전성을 증명할 수 없으므로 변조가 가능하다.HTTP는 메세지가 중간에 변경되어도 알 수 없다.클라이언트에서 메세지를 보내도 공격자가 메세지를 변경해도 서버는 받은 메세지가 변경이 된지 알 수 없고클라이언트도 자신이 보낸 원본의 메세지가 잘 도착되었는지 알 수 없다.  3. 통신 상대를 확인하지 않으므로 위장이 가능하다.HTTP는 올바른 상대와 통신하고 있는지 ..
[DB] 병행 수행과 병행 제어 병행 수행과 병행 제어병행 수행데이터베이스 관리 시스템은 여러 사용자가 데이터베이스를 동시에 공유할 수 있도록 여러 개의 트랜잭션이 동시에 수행되는 병행 수행을 지원한다. 병행 수행은 실제로 여러 트랜잭션이 차례로 번갈아 수행되는 인터리빙 방식으로 진행된다. 그런데 병행 수행되는 트랜잭션들이 동시에 같은 데이터에 접근하여 변경 연산을 실행하려고 하면 예상치 못한 결과가 나타날 수 있다. 그러므로 병행 수행을 하더라도 각 트랜잭션이 다른 트랜잭션의 방해를 받지 않고 정확한 수행 결과를 얻을 수 있도록 제어해야 한다. 병행 제어여러 개의 트랜잭션이 병행 수행되면서 같은 데이터에 접근하여 연산을 실행하더라도, 문제가 발생하지 않고 정확한 수행 결과를 얻을 수 있도록 트랜잭션의 수행을 제어하는 것을 병행 제어 ..
[DB] 트랜잭션 회복 기법 트랜잭션작업 하나를 수행하는 데 필요한 데이터베이스의 연산들을 모아놓은 것으로, 데이터베이스에서 논리적인 작업의 단위가 된다.데이터베이스에 장애가 발생했을 때 데이터를 복구하는 작업의 단위도 된다. 트랜잭션의 상태활동 상태: 트랜잭션이 수행되기 시작한 상태부분 완료 상태: 활동 상태의 트랜잭션이 마지막 연산을 처리한 상태완료 상태: 부분 완료 상태의 트랜잭션이 commit 연산을 실행한 상태실패 상태: 활동 상태나 부분 완료 상태에서 여러 원인으로 인해 더는 정상적인 수행이 불가능한 트랜잭션 상태철회 상태: 실패 상태의 트랜잭션은 롤백 연산의 실행으로 철회 상태가 된다.트랜잭션이 완료 상태이거나 철회 상태가 되면 트랜잭션이 종료된 것으로 판단 활동 상태트랜잭션이 수행되기 시작하여 현재 수행 중인 상태활동..
[Network] HTTP 버전별 특징 HTTP 0.x (0.9)초기 버전: 1991년 도입된 HTTP/0.9는 웹의 태동기 프로토콜이다. 특징텍스트 전송만 지원: HTML 파일 전송에만 사용, 이미지나 다른 파일 포맷 전송 불가. (응답도 HTML 파일 자체만 보내줌)헤더 없음: 요청 및 응답에 메타데이터가 없고 단순한 GET 요청만 지원. (HTTP 헤더 X, 상태 코드 X)비상태적: 연결이 단순히 요청-응답 후 종료. (서버와 클라이언트 간의 연결은 모든 요청 후에 닫힘)비보안: 보안에 대한 고려가 없었음.한계기능이 매우 제한적.확장성과 효율성이 부족.HTTP 1.0HTTP 포맷 형태의 시초 - 1996년 공식화. 특징헤더 도입: 클라이언트와 서버가 메타데이터를 교환 가능.다양한 요청/응답 코드 지원: 상태 코드 및 MIME 타입 지원...
[Network] Stateful vs Stateless Stateful와 Stateless애플리케이션 설계, 통신 프로토콜, 또는 컴퓨터 시스템에서 상태를 관리하는 방법에 따라 분류되는 개념이다.  StatefulStateful 시스템은 이전 요청 또는 작업의 상태를 저장하고, 이를 바탕으로 이후 요청을 처리한다. 특징클라이언트와 서버 간의 연결 지속성이 중요하다.상태 정보는 서버 또는 클라이언트에 저장된다.이전 요청과 다음 요청 간의 컨텍스트를 유지한다.요청 처리 속도는 상태를 참조해야 하므로 다소 느릴 수 있다. 장점사용자 경험이 부드럽고, 연속적인 작업을 쉽게 처리할 수 있다.상태를 유지하므로 복잡한 작업 처리에 유리하다.단점서버의 리소스를 많이 소비한다(예: 메모리 사용 증가).서버가 중단되면 상태 정보가 유실될 수 있다.클라이언트와 서버 간의 세션 ..
[Network] 프로토콜과 OSI 7 Layer 네트워크컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신체계 네트워크의 기능들에플리케이션 목적에 맞는 통신 방법 제공신뢰할 수 있는 데이터 전송 방법 제공네트워크 간의 최적의 통신 경로 결정목적지로 데이터 전송노드 사이의 데이터 전송네트워크 프로토콜사람과 사람간의 제대로 된 대화를 하려면 같은 언어를 사용하는 것처럼네트워크 간에도 통신 기능이 제대로 동작하기 위해서는 참여자들 사이에서 약속된 통신 방법이 있어야 한다.네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약즉, 네트워크 상에서 통신을 하기 위해서는 네트워크 프로토콜에 따라서 통신을 해야 한다는 것이다. 위에 보이는 네트워크의 기능들을 과연 단 하나의 프로토콜로 ..
[자료구조] 힙 힙(Heap)이란? 완전 이진 트리 형태로 구성된 자료구조이며, 특정 조건(힙 속성)을 만족하도록 정렬된 트리이다.힙은 우선순위 큐(Priority Queue)와 같은 문제를 효율적으로 해결할 때 유용하다. 힙 속성(Heap Property)최대 힙(Max-Heap)최소 힙(Min-Heap)최대 힙(Max-Heap)부모 노드의 값이 자식 노드의 값보다 항상 크거나 같음.루트 노드가 가장 큰 값을 가짐. 최소 힙(Min-Heap)부모 노드의 값이 자식 노드의 값보다 항상 작거나 같음.루트 노드가 가장 작은 값을 가짐. 힙 연산1. 삽입(Insert)새로운 노드를 힙의 마지막 위치에 삽입.부모와 비교하며 힙 속성을 유지하도록 교환(상향 조정, upheap).2. 삭제(Delete)일반적으로 루트 노드(최댓값..