Study
-
[열혈 TCP/IP 소켓 프로그래밍] Chapter4. 내용 확인문제Study/Network 2022. 10. 8. 17:45
01. TCP/IP 프로토콜 스택을 4계층으로 구분하고, TCP소켓이 거치는 계층구조와 UDP 소켓이 거치는 계층구조의 차이점 설명 TCP/IP 프로토콜 스택은 LINK - IP - TCP/UDP - APPLICATION 계층으로 구분되어 있다. TCP 소켓은 TCP 스택을 거치고, UDP 소켓은 UDP 스택을 거친다. (당연한듯;;) 02. LINK계층과 IP계층이 담당하는 역할, 관계 LINK 계층은 물리적인 연결에 대한 프로토콜을 정의한다. IP 계층은 데이터의 송수신 경로에 대한 프로토콜을 정의한다. (IP계층에서는 송수신의 오류발생에 대한 대비가 되어있지 않다.) IP계층은 LINK계층의 물리적 연결 프로토콜 위에서 동작한다 03. TCP/IP 프로토콜 스택이 4가지로 나뉘는 이유를 개방형 시스..
-
[열혈 TCP/IP 소켓 프로그래밍] Chapter3. 내용 확인문제Study/Network 2022. 9. 22. 17:58
01. IP주소체계 IPv4와 IPv6의 차이, IPv6의 등장배경 IPv4는 4Byte로 표현하는 주소체계, IPv6는 16Byte로 표현하는 주소체계이다. IPv6는 IPv4 주소의 고갈을 염려하여 만들어졌다. 02. 로컬 네트워크까지 데이터가 전달되는 과정 IPv4의 Network ID를 통해 라우터까지 데이터가 전송 라우터는 Host ID를 확인해 연결된 컴퓨터에 데이터 전송 03. 소켓의 주소가 IP와 PORT번호 두 개로 구성되는 이유 IP는 네트워크 상에서 연결되어 있는 컴퓨터를 식별하기 위한 주소이고, PORT는 OS에서 소켓을 식별하기 위한 주소이다. IP를 통해 컴퓨터에 데이터가 도착하면, PORT를 통해 알맞은 소켓에 OS가 데이터를 보내주게 된다. 04. IP주소 클래스별 차이 클래..
-
[자료구조] 이진 탐색 트리 (Binary Search Tree)Study/자료구조,알고리즘 2022. 9. 22. 15:59
01. 이진 탐색 트리란? 이진 탐색 트리는 이진트리 기반의, 탐색을 용이하게 하기 위한 자료구조 탐색을 위한 키 값 기준으로 정렬된다. 이진 탐색 트리의 정의는 다음과 같다. 1. 모든 노드는 유일한 키를 갖는다. 2. 왼쪽 서브트리의 키는 루트의 키보다 작다. 3. 오른쪽 서브트리의 키는 루트의 키보다 크다. 4. 왼쪽과 오른쪽 서브트리도 이진트리이다. 02. 이진 탐색 트리의 연산 이진 탐색 트리는 삽입, 삭제 과정에서 이진트리의 특성을 유지해야 한다. 탐색 탐색 연산은 키 값 비교를 통해 왼쪽과 오른쪽 노드를 탐색할지 결정한다. 찾고자 하는 키 값과 현재 노드의 키 값이 일치한다면 탐색 성공 찾고자 하는 키가 현재 노드보다 작다면, 왼쪽 노드로 이동해 다시 탐색한다. 찾고자 하는 키가 현재 노드보..
-
ASCII와 Unicode, UTF-8Study/컴퓨터 구조 & 운영체제 2022. 9. 21. 21:36
01. 문자열 인코딩 (Character Set) 문자열을 n개의 byte로 이루어진 정수형으로 치환하여 프로그램에서 사용하는 것이다. 인코딩 방식으로 UTF-8, Multibyte, ASCII가 있다. 02. ASCII, Multibyte, WideChar, UTF-8 (그리고 UNICODE) 유니코드(UNICODE)는 ASCII Chracter Set에 포함되지 않은 문자(한국어 등) 을 표현하기 위한 방식이다 ASCII는 1Byte로 영어, 수학 기호 등이 표현되며, 1Byte인 만큼 최대 255개의 문자를 표현할 수 있다. 멀티바이트는 1바이트로도, 2Byte로도 문자가 표현될 수 있는 가변 인코딩 형식이다. 특정 문자 집합마다 (한국어, 중국어 등) 코드 페이지라는 것이 존재하며, 특정 코드 페..
-
[C++ 쉽게 풀어쓴 자료구조] 프로그래밍 프로젝트 8Study/자료구조,알고리즘 2022. 9. 20. 15:43
완전 이진트리 검사 함수 구현 완전 이진트리란 높이n 의 트리에서 n-1레벨까지는 포화상태, n레벨의 노드들은 왼쪽부터 채워져 있는 상태인 이진트리를 의미한다. 완전 이진트리 검사는 레벨 순회를 통해 구현했다. Left와 Right중 하나라도 null node일 경우, 그 이후 나타나는 노드들은 모든 노드가 단말노드여야 한다. bool CBinaryTree::IsFull() { std::queue bQueue; bQueue.push(m_Root); while (!bQueue.empty()) { bool meetNotFull = false; CBinaryNode* node = bQueue.front(); // full node라면 계속 탐색한다. if (node->GetLeft() && node->GetR..
-
[열혈 TCP/IP 소켓 프로그래밍] Chapter2. 내용 확인문제Study/Network 2022. 9. 19. 19:50
01. 프로토콜이 무엇인가? 프로토콜이란, 데이터의 전송 방식을 결정하는 규약이다. 두 컴퓨터 간 프로토콜을 정의해야 데이터 전송 방식을 서로 알고 해석할 수 있다. 02. 연결지향 소켓 TCP의 전송 특성 3가지 데이터의 손실이 없음이 보장된다. 데이터의 경계가 없다 데이터의 전송 순서가 보장된다. 03. 비연결지향 소켓 UDP의 전송 특성 데이터의 손실이 있을 수 있다. 빠른 전송을 목표로 한다. 한 번의 전송에 데이터의 크기가 제한된다. 연결이라는 개념이 존재하지 않는다. 04. 유형별 적합한 타입의 소켓은? 실시간 스트리밍 : UDP 소켓. 빠른 전송이 목표가 되어야 하고, 데이터가 손실되더라도 최신의 데이터를 계속 받는 것이 더 중요하다. 텍스트 파일 전송 : TCP 소켓. 순서가 무조건 보장되..
-
[C++] 복사 생성자와 RVO, NRVOStudy/C & C++ 2022. 9. 19. 16:24
01. 복사 생성자란? 같은 타입의 인스턴스를 매개변수로 받는 생성자를 의미한다. class A { public: A() {}; A(const A& a){}; // Copy Constructor }; 02. 복사 생성자가 호출되는 경우 복사 생성자가 호출되는 경우는 세 가지이다. 기존 생성 객체를 사용해 새로운 객체를 초기화하는 경우 Call-By-Value 형식으로 함수의 매개변수를 전달할 때 Value 형태로 함수에서 return할 때 A origin; // 1. A copy(origin); A copy1 = origin; // 2. void Copy(A a) { // do something } // 3. A Copy2() { return A(); } 그렇다면, 아래 코드의 결과는 어떨까? #incl..
-
[뇌자극 시스템 프로그래밍] 01. 컴퓨터 구조에 대한 간략한 이해Study/컴퓨터 구조 & 운영체제 2022. 9. 17. 19:41
01. 시스템 프로그래밍이란? 좁게는 하드웨어를 사용할 수 있게 도와주는 프로그램을 만드는 것 (Operating System) 넓게는 운영체제에서 제공하는 라이브러리를 사용해 해당 운영체제의 컴퓨터에 일을 시키기 위한 프로그램을 만드는 것 02. 컴퓨터 하드웨어 구성 1. CPU의 구성 요소 ALU (Arithmetic Logic Unit) : 실제 연산 (산술, 논리)를 수행하는 장치이다. Control Unit : 명령어를 해석하고, 해석 결과에 따른 신호를 CPU의 다른 장치에 전송한다. Register Set : CPU내의 작은 메모리, 명령어 등을 임시 저장하고 ALU와 Control Unit이 가져다 쓰도록 한다. Bus Interface : I/O Bus의 통신방식과 프로토콜을 이해하고 있..