Studying 46

네트워크 기초 개념

1. 네트워크 인터넷의 동작에서 기술했던 거지만 다시 한번 짚고 가겠습니다. 네트워크는 분산되어 있는 컴퓨터들을 자원이나 정보를 공유하기 위해 통신망으로 연결한 것을 의미합니다. 또한 프로토콜을 사용해 데이터를 교환하는 시스템의 집합을 통칭합니다. 네트워크는 모든 종류의 물리, 논리적 자원을 공유할 수 있으므로 자원 활용이 극대화되며, 병렬 처리가 가능하여 성능이 향상됩니다. 1.1 시스템 구분 노드(Node) : 대형 네트워크에서 장치 혹은 데이터 지점(data point)를 의미합니다. 호스트(Host) : 컴퓨터의 기능이 있는 시스템 클라이언트, 서버 : 서비스를 요청하고 제공하는 시스템 1.2 네트워크 주소 네트워크 주소 : 네트워크 상 존재하는 노드를 고유하게 식별 주소의 종류 1) MAC 주소..

Studying/Roadmap 2022.04.01

POSIX 기초

1. POSIX? POSIX(Portable Operating System Interface)는 이식 가능 운영체제 인터페이스의 약자로 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 UNIX 응용 프로그램을 개발하기 위한 목적으로 IEEE(전기전자 기술자협회)가 책정한 애플리케이션 인터페이스 규격입니다. 쉽게 말하면 한 OS에서 개발한 프로그램을 다른 OS에서도 쉽게 돌아가도록 하는 표준이라고 합니다. (소스코드의 호환) 2. 표준스트림 표준 스트림(standard streams)은 특정 프로그래밍 언어 인터페이스뿐만 아니라 UNIX 및 UNIX계열 OS에서 컴퓨터 프로그램과 그 환경 사이 미리 연결된 입출력통로를 가리킵니다. 표준 스트림으로 인해 프로그램에서 입출력을 사용해야할 때, ..

Studying/Roadmap 2022.04.01

입출력 관리

컴퓨터의 주요 작업에는 연산과 입출력 작업 2가지가 있습니다. 그 중 입출력 작업은 컴퓨터에 연결된 다양한 입출력 하드웨어 장치들과 어떤 식으로 소통이 이루어지는지에 관한 내용입니다. 예를 들어 마우스, 키보드, 모니터 등 다양한 장치들이 컴퓨터와 잘 동작하게 하려면 둘 사이에 공통된 인터페이스가 존재해야합니다. 바로 컴퓨터와 하드웨어 장치 사이의 공통된 인터페이스 역할을 수행하는 것이 입출력 관리의 핵심이죠. 1. 입출력 하드웨어의 구성 먼저 하드웨어 장치는 케이블 혹은 무선으로 신호를 보내 컴퓨터와 통신합니다. 이 때, 포트를 통해 컴퓨터에 접속하고, 컴퓨터에 내장된 *제어기를 통해 포트나 입출력 장치를 제어합니다. 모든 제어기는 레지스터를 가지며, 프로세서는 제어기 레지스터에 bit pattern을..

Studying/Roadmap 2022.03.30

Database

1. Database 데이터베이스의 사전적 의미는, 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합입니다. 줄여서 DB라고도 하며 특정 다수의 이용자들에게 필요 정보를 제공하거나 조직 내 필요로 하는 정보를 체계적으로 축적해 조직 내 이용자에게 필요 정보를 제공하는 정보 서비스 기관의 심장부입니다. 데이터베이스가 존재하기 이전에는 파일 시스템을 이용해 시스템을 관리했습니다. (현재도 부분적으로 사용됨) 데이터를 각각의 파일 단위로 저장하며 이러한 일들을 처리하기 위한 독립적인 애플리케이션과 상호 연동이 되어야 합니다. 이 때 문제점은 데이터 종속성과 중복성, 데이터 무결성 입니다. 2. 특징 1) 독립성 물리적 독립성 : DB사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 ..

TCP & UDP

1. UDP(User Datagram Protocol) UDP는 비연결형 프로토콜로 IP 데이터그램을 캡슐화하여 보내는 방법과 연걸설정을 하지 않고 보내는 방법을 제공합니다. 또한 흐름제어, 오류제어 혹은 손상된 세그먼트의 수신에 대한 재전송을 하지 않고 이 모두가 사용자 프로세스의 몫입니다. UDP가 행하는 것은 포트들을 사용해 IP프로토콜에 인터페이스를 제공하는 것입니다. UDP가 특별히 유용한 분야는 클라이언트-서버 상황인데, 클라이언트는 서버로 짧은 요청을 보내고 짧은 응답을 기대합니다. 이때 만약 요청 혹은 응답이 손실된다면 클라이언트는 time out되고 다시 시도할 수 있습니다. 코드가 간단할 뿐만 아니라 TCP처럼 초기 설정에서 요구되는 프로토콜에서보다 적은 메시지가 요구됩니다. UDP를 ..

데이터 전달 원리

1. 데이터의 기술적 개념 우선 데이터의 기술적 개념부터 생각해보자. 우리가 흔히 말하는, 컴퓨터 화면을 통해 볼 수 있는 모든 데이터는 컴퓨터 밖 세상의 것들과 크게 다르지 않다. 책처럼 읽을 수 있는 인터넷 신문기사의 글자들, 눈으로 본 것과 똑같이 찍혀 sns에 업로드 된 사진들... 이런 것들을 우리는 데이터라고 부른다. 너무 당연하게 받아들여온 개념이어서일까? 우리는 그것이 사실은 수많은 0과 1로 이루어진 숫자에 불과하다는 사실을 쉽게 잊는다. 그래서 데이터가 어떻게 전달되는가? 를 생각해보자니 너무 막연하고 어렵게 느껴지는 것이다. 데이터는 0혹은 1로 이루어진 숫자이고, 컴퓨터는 이진법의 숫자를 전기의 켜짐과 꺼짐으로 표현할 수 있다. 즉, 데이터는 아주 긴 전기 신호 인 것이다. 이렇게 ..

자료구조와 알고리즘

1. 자료구조 자료구조는 데이터를 원하는 규칙 혹은 목적에 맞게 저장하기 위한 구조입니다. 자료구조의 종류는 선형구조, 비선형구조, 파일구조(순차, 색인, 직접 파일), 단순구조(정수, 실수, 문자열)가 있습니다. 1) 선형 구조 List, Stack, Queue는 데이터를 선의 형태로 나열하는 선형(Linear)입니다. 2) 비선형 구조 Tree, Graph는 데이터를 나란히 저장하지 않는 비선형 구조입니다. 이 자료구조는 알고리즘과 밀접한 관계를 갖습니다. 알고리즘은 자료구조에 쌓인 데이터를 활용해 어떤 문제를 해결하기위한 동작들의 모임으로, 자료구조가 결정되어야 효율적인 알고리즘을 결정할 수 있습니다. 즉, 알고리즘은 자료 구조에 의존적으로 자료구조에 따라 알고리즘이 달라집니다. [자료구조] 자료구..

HTTP와 HTTPS

이 글은 'HTTP란?'글에 대해 미흡한 점이 있어 추가로 작성했습니다. https://refreshment-wg.tistory.com/9 HTTP란? 1. HTTP? 저희가 주소창에서 볼 수 있는 HTTP(HyperText Transfer Protocol)는 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고 받을 수 있는 프로토콜을 말합니다. 클라이언트(사용자)가 브라우저(Ch refreshment-wg.tistory.com 1. HTTP의 문제점 먼저 HTTP는 평문 통신(암호 알고리즘의 입력 대상으로 예정이 된 암호화되지 않은 정보)이기 때문에 도청이 가능합니다. Wireshark라는 패킷 분석 프로그램으로 본 패킷입니다. (위가 HTTPS 패킷(198163), 아래가 HTTP 패킷(198787..

프로세스 간 통신

1. IPC(Inter Process Communication) IPC는 프로세스 간 통신으로 프로세스들끼리 서로 데이터를 주고 받는 행위 및 방법을 말합니다. 프로세스는 위와 같이 완전히 독립된 실행객체 입니다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는 다는 장점이 있지만 독립되어 있는 만큼 별도의 설비가 없이는 서로 간 통신이 어렵다는 문제가 있습니다. 이를 위해 *커널 영역에서 IPC라는 내부 프로세스 간 통신을 제공하게 되고, 프로세스는 커널이 제공하는 IPC설비를 이용해 프로세스 간 통신을 할 수 있게 됩니다. *커널(Kernel) OS 자체도 SW이기 때문에 메모리에 올라가야 사용할 수 있습니다. 하지만 메모리 공간의 제약으로 OS중 항상 필요한 부분만을 메모리에 올려놓고,..

Studying/Roadmap 2022.03.21

MVC pattern

1. MVC의 개념 MVC(Model View Controler)는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 사용되는 소프트웨어 디자인 패턴 중 하나입니다. 위의 사진 과 같이 사용자가 Controller를 조작하면 Controller는 Model을 이용해 data를 가져오고 그 data를 바탕으로 시각적 표현(View)를 제어하여 사용자에게 전달하는 것입니다. 이는 UI로부터 비즈니스 로직을 분리하여 애플레케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있습니다. 너무 추상적이기 때문에, 쇼핑 리스트 애플리케이션을 예로 각 요소에 대해 설명해보겠습니다. 사용자가 원하는 것은 각 항목의 이름, 개수, 가격의 목록입니다. M..