본문 바로가기

Computer Science

(18)
[Network] NAT와 비슷해! : LB(LoadBalancer) 원리를 이해해보자 🔊 해당 포스팅은 인프런 강의 널널한개발자님의 외워서 끝내는 네트워크 핵심이론 - 응용 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅에서 사용되는 모든 자료는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 L4 계층인 Transport 계층에서의 스위치인 로드 밸런서(Load Balancer, 이하 LB)라고 불리는 시스템의 동작 원리에 대해 이해해보도록 하자. 로드 밸런서는 한국어로 번역하면 부하 분산기를 의미한다. 여기서 '부하'란, 서버에 들어오는 요청이 많아짐에 따라 발생하는 부하를 의미한다.1. LB는 NAT와 비슷한 원리로 동작한다!저번 시간에 공유기가 동작하는 원리인 NAT에 대해 배웠었다. 그런데 부하 분산기..
[Network] 인터넷 공유기의 작동원리: NAT(Network Address Translation) 🔊 해당 포스팅은 인프런 강의 널널한개발자님의 외워서 끝내는 네트워크 핵심이론 - 응용 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅에서 사용되는 모든 자료는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 공유기가 작동되는 원리인 NAT(Network Address Translation)에 대해 알아보고 NAT의 여러 종류와 동작 방식에 대해서도 알아보도록 하자. 그에 앞서서 약간의 사전 지식이 필요한데, 이에 대해서 먼저 짚고 넘어가보자. 1. 공유기의 원리 Overview 요즘 현대인이 거주하는 집에서 흔하게 볼 수 있는 공유기 환경을 생각해보자. 보통은 아래와 같은 구조로 인터넷이 연결되어 있을 것이다. 대부분의 집에는 보통 IP..
[Newtork] 네트워크의 3가지 구조: Inline, Out of path, Proxy 🔊 해당 포스팅은 인프런 강의 널널한개발자님의 외워서 끝내는 네트워크 핵심이론 - 응용 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅에서 사용되는 모든 자료는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 네트워크의 대표적인 3가지 구조인 Inline, Out of path, Proxy 각각에 대해 알아보도록 하자. 만약 네트워크를 공부하다가 못 보던 네트워크 장치(스위치)에 대해 알게 되었다고 한다면 가장 먼저 앞으로 소개할 3가지 네트워크 구조 중 어떤 것에 속하는지 판단부터 해보자. (참고로 앞으로 소개할 네트워크 구조 중 하나에만 반드시 속해야 하는 것은 아니고 한번에 2개의 구조에 같이 속할 수도 있다) 앞으로 소개할 네트워크..
[Network] L4 계층의 TCP/UDP 그리고 웹의 기술 🔊 해당 포스팅은 인프런 강의 널널한개발자님의 외워서 끝내는 네트워크 핵심이론 - 기초 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅에서 사용되는 모든 자료는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 OSI 7 계층 중 전송 계층에 해당하는 L4 계층의 TCP/UDP에 대해 알아보고, 웹(Web)이라는 기술이 역사적으로 어떻게 발전해왔는지 살펴보면서 핵심 요소들을 이해해보자. 1. TCP는 논리적 연결이다 TCP는 물리적인 것이 아닌 논리적 연결이다. 물리적인 연결은 L2 스위치처럼 말 그대로 진짜 물리적인 회선을 가지고 장치 간에 진짜 연결을 하는 것이다. 하지만 TCP는 이러한 물리적 연결이 아닌 마치 가상화된 논리적 연결이다..
[Network] OSI의 네트워크(L3) 계층에 대해 배워보자 🔊 해당 포스팅은 인프런 강의 널널한개발자님의 외워서 끝내는 네트워크 핵심이론 - 기초 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅에서 사용되는 모든 자료는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 OSI 7 계층 중 네트워크(L3) 계층에 해당하는 내용에 대해 알아보도록 하자. 1. L3 계층 구현체인 인터넷의 식별자: IP 주소 L3 계층인 네트워크 계층에서 구현체는 인터넷이었고, 그 인터넷에 대한 식별자는 IP 주소라고 이전 포스팅에서 배웠다. 그러면 IP 주소는 어떻게 생겼을까? 여기에서는 IP 주소 종류 중 IPv4 주소에 대해서만 다룬다. IPv4 주소는 총 32비트로 8비트가 4개로 구성되어 있다. 하나당 8비트 이..
[Network] 네트워크 용어의 정리와 OSI의 데이터링크(L2) 계층 🔊 해당 포스팅은 인프런 강의 널널한개발자님의 외워서 끝내는 네트워크 핵심이론 - 기초 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅에서 사용되는 모든 자료는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 네트워크를 이해하기 위해 사전에 학습해야 할 관련 용어에 대한 정리와 OSI 계층 기준의 L2 Layer인 데이터링크 계층에서 알아두어야 할 개념에 대해 살펴보자. OSI 계층에 대해서는 예전 포스팅을 참조해보자. 1. OSI 7 Layer 개념에 대응되는 구현체(Implementation) OSI 7 계층은 어떠한 실체가 있는 구현체가 아닌 추상화된 개념에 해당한다. 예를 들어서, 프로그래밍 언어라는 것은 추상화된 개념이고 어Pyt..
[CS] CPU 스케쥴링, Process 간 통신방법, 가상 메모리(VMS) 🔊 해당 포스팅은 YouTube 채널 널널한 개발자님이 제공하시는 무료 강의 영상인 운영체제와 시스템 프로그래밍 영상을 보고 개인적인 정리 목적하에 작성되었습니다. 하단에 사용된 자료는 필자가 직접 재구성한 자료임을 알립니다. 이번 포스팅에서는 간략하게 CPU 스케쥴링과 프로세스들 간에 통신하는 여러가지 방법, 그리고 가장 중요하다고 할 수 있는 가상 메모리 공간(VMS, Virtual Memory Space)에 대해 알아보도록 하자. 1. CPU 스케쥴링의 주체는 OS다 저번 포스팅에서 프로세스에 대해 다루면서 운영체제(이하 OS)는 프로세스를 단위로 하여 파일 또는 전산자원(CPU, RAM 등)에 대한 접근 제어를 수행한다고 했다. 여기서 전산자원에 대한 접근 제어라는 것이 바로 "어떤 프로세스는 C..
[CS] Process(프로세스) 와 Thread(쓰레드) 🔊 해당 포스팅은 YouTube 채널 널널한 개발자님이 제공하시는 무료 강의 영상인 운영체제와 시스템 프로그래밍 영상을 보고 개인적인 정리 목적하에 작성되었습니다. 하단에 사용된 자료는 필자가 직접 재구성한 자료임을 알립니다. 이번 포스팅에서는 CS를 공부하면서 가장 헷갈리는(?) 개념들인 프로세스와 쓰레드에 대해 알아보도록 하자. 1. 프로세스, 너는 누구니? 훌륭한 나무위키에 따르면 프로세스란, 컴퓨터에서 실행중인 프로그램을 의미한다. 예를 들어보자. 우리는 MS Word 라는 애플리케이션을 이용하려고 한다. 가장 처음에 할 것은 컴퓨터에 MS Word 라는 프로그램을 설치해야 한다. Microsoft365 사이트에가서 이러쿵 저러쿵 로그인을 한 후 MS Word 프로그램을 컴퓨터에 잘 설치했다. 지..
[CS] 컴퓨터 구조와 성능향상 🔊 해당 포스팅은 YouTube 채널 널널한 개발자님이 제공하시는 무료 강의 영상인 운영체제와 시스템 프로그래밍 영상을 보고 개인적인 정리 목적하에 작성되었습니다. 하단에 사용된 자료는 필자가 직접 재구성한 자료임을 알립니다. 이번 포스팅에서는 컴퓨터 구조를 살펴보면서 컴퓨터의 성능을 향상시키기 위해 어떤 구조로 작동하는지, 또 성능 향상하는 과정에서 역사적으로 등장해왔던 새로운 개념들에 대해서도 이해해본다. 1. 컴퓨터는 3층 구조이다 컴퓨터는 크게 3층 구조로 되어 있다. 아래 그림을 보자. 예를 들어, 파이썬의 print() 문을 호출했을 때, 컴퓨터는 어떤 과정으로 진행되는지 살펴보자.(물론 아래보다 더 세세한 단계가 있을 수 밖에 없다. 단지 강의 속에서 다루는 내용까지만 반영하였다) 위 그림이..
[CS] 컴퓨터의 기억장치와 운영체제(OS)의 역할 이번 포스팅에서는 컴퓨터의 기억장치와 운영체제의 역할에 대해서 개괄적으로 알아보도록 하자. 1. 컴퓨터의 기억장치 먼저 컴퓨터의 기억장치라는 것은 곳 정보 즉 데이터를 담는 저장공간을 의미한다. 컴퓨터를 이루고 있는 기억장치의 개괄적인 그림은 아래와 같다. 위 기억장치 종류 중에서 먼저 하드디스크라고 불리는 HDD에 대해서 알아보도록 하자. 물론 여기서 SSD, USB 까지 다루지는 않지만 SSD, USB도 HDD랑 비슷한 계열의 저장장치라고 생각해주면 되겠다. 1-1. 용량도 크고 휘발되지 않지만 너무 느려! HDD 하드디스크는 컴퓨터의 보조기억장치 중 하나로 용량도 컴퓨터 내부에 있는 다른 저장장치들에 비해 매우 크다. 또한 컴퓨터의 전원을 끄더라도 하드디스크에 있는 데이터들을 휘발(삭제)되지 않는다..
[CS] 네트워크의 OSI 7계층에 대해 알아보자 🔊 해당 포스팅은 로스카츠의 AI 머신러닝 네트워크 목차 블로그 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 사용되는 모든 자료는 원본 블로그의 내용을 참고하되 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 CS 지식 중 네트워크, 그 중에서도 서로 다른 컴퓨터 간에 통신할 때 사용되는 OSI 7계층에 대해 알아보고 각 계층이 어떤 역할을 수행하는지에 대해 알아보려고 한다. 네트워크, OSI 계층같은 개념이 자리잡지 않았던 시절, 서로 다른 컴퓨터 간에 통신을 한다는 것은 상상하기 힘든 일이었다고 한다. 즉, 예를 들어 같은 브랜드의 컴퓨터끼리만 통신이 가능하고 서로 다른 브랜드의 컴퓨터 간에는 통신을 할 수 없었던 시절이 있었다(상상이 안 된다..
[CS] OS(운영체제)의 메모리 관리에 대해 파헤쳐보자 이번 포스팅은 CS 스터디를 하기 위해 진행해오고 있던 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 의 메모리 파트를 읽다가 도저히(?) 이해가 안 가서.. 개별적으로 설명이 매우 잘 된 블로그를 통해서 얻게 된 내용을 나만의 방법으로 정리해 포스팅하려고 한다. 본문 내용의 출처는 이 블로그임을 밝힌다. 1. 운영체제(OS)의 역할 본론으로 메모리 관리라는 개념에 들어가기에 앞서 우리는 운영체제 즉, OS의 역할을 먼저 짚고 넘어가야 한다. 운영체제의 역할은 다음과 같이 정의할 수 있다. CPU, 메모리, I/O 장치 등 복잡한 컴퓨터 하드웨어를 잘 몰라도 사람이 쉽게 프로그램(또는 어플리에키션)을 만들 수 있게끔 일련의 '공통' 기능을 지원한다. 그래서 운영체제의 기능을 크게 3가지로 분류하면 CPU ..
[CS] 어떤 것들이 컴퓨터 하드웨어를 구성할까? 컴퓨터 내부 구조 🔊 해당 포스팅은 CS 서적 '한 권으로 읽는 컴퓨터 구조와 프로그래밍'을 읽고 저만의 방식으로 정리, 요약하는 글임을 알립니다. 해당 내용은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 서적에 기반하였음을 알립니다. 이전 포스팅까지 비트의 특성과 이 비트를 활용하는 방법에 대해 배웠고, 또 비트를 사용하는 이유와 조합 논리, 순차 논리를 활용해서 하드웨어를 구성하는 방법에 대해서도 배워보았다. 이번 포스팅에서는 현대적으로 사용되는 컴퓨터 하드웨어가 어떤 부분으로 구성되어 있는지 알아본다. 1. 컴퓨터를 구성하는 3가지! 메모리, 입력/출력, CPU 현대적 컴퓨터는 크게 메모리, 입력/출력(I/O라고도 함), CPU(중앙처리장치) 3가지 부분으로 구성되어 있다고 할 수 있다. 이 3가지 요소들은 서로 깊..
[CS] 컴퓨터는 어떻게 비트를 기억할까? 메모리와 디스크의 핵심인 순차 논리 🔊 해당 포스팅은 CS 서적 '한 권으로 읽는 컴퓨터 구조와 프로그래밍'을 읽고 저만의 방식으로 정리, 요약하는 글임을 알립니다. 해당 내용은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 서적에 기반하였음을 알립니다. 이번 포스팅에서는 조합 논리의 한계점 즉, 어떤 값을 기억할 수 없다는 점을 해결할 수 있는 순차 논리에 대해 배워보도록 하자. 글 제목처럼 순차 논리는 흔히 우리가 데이터를 저장하는 기능을 한다고 알고 있는 컴퓨터의 '메모리' 와 '디스크'의 핵심 요소이다. 순차 논리의 '순차'는 순서(Sequence) 라는 용어에서 비롯되었다. 순서라는 것은 시간적으로 어떤 값 뒤에 오는 다른 값을 의미한다. 그런데 컴퓨터는 사람처럼 '시간'이라는 요소를 태생적으로는 인지하지 못한다. 따라서 어떤 회로..
[CS] 컴퓨터는 어떤 논리로 비트를 다룰까? 전자 회로의 조합 논리 🔊 해당 포스팅은 CS 서적 '한 권으로 읽는 컴퓨터 구조와 프로그래밍'을 읽고 저만의 방식으로 정리, 요약하는 글임을 알립니다. 해당 내용은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 서적에 기반하였음을 알립니다. 저번 첫 포스팅에서 컴퓨터는 '비트'라는 일종의 언어를 사용해서 말을 한다는 것을 알아보았다. 이번 포스팅에서는 그렇다면 컴퓨터가 대체 '왜' 비트라는 언어를 사용하는지에 대해서 전자 회로 관점에서 살펴보고자 한다. 1. 디지털 컴퓨터의 사례 과거 먼 옛날에는 톱니바퀴를 사용해서 연산을 수행하는 계산기를 발명했었다. 또한 시간이 흐름에 따라 톱니바퀴를 사용하지 않는 기계식 컴퓨터로는 계산자(Slide rule)라는 것도 발명되었다. 계산자의 기본 기능은 로그 곱셈 공식을 이용해 만들었다. ..
[CS] 컴퓨터는 어떤 말을 사용할까? 컴퓨터의 언어체계 🔊 해당 포스팅은 CS 서적 '한 권으로 읽는 컴퓨터 구조와 프로그래밍'을 읽고 저만의 방식으로 정리, 요약하는 글임을 알립니다. 해당 내용은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 서적에 기반하였음을 알립니다. 이번 포스팅부터 CS(Computer Science) 지식을 습득하기 위해 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 이라는 책을 한 챕터씩 읽고 배운 내용을 리뷰, 요약하는 시리즈를 만들어보려고 한다. 수호님과 스터디를 2주에 한번씩 진행하고자 약속을 잡고 정말 오랜만에 누군가와의 스터디를 진행하기 시작했다. 최근에 한 기업의 인턴으로 짧게 근무하면서 내 자신에 대한 CS 지식의 부족함을 처절히 느꼈고 물론 당장 CS 지식을 직접적으로 사용하지 않을 수도 있지만 필자도 컴퓨터를 사용하여..
[CS] 프로그램과 프로세스와 쓰레드의 차이점 이번 포스팅에서는 그동안 모르고 지나쳐왔던 프로그램, 프로세스, 쓰레드의 개념에 대해 알아보고 차이점이 각각 무엇인지에 대해서도 알아보자. 언젠간 한 번 정리해야 할 것 같아서 이번 기회에 정리해보려고 한다. 1. 프로그램과 프로세스 프로그램과 프로세스간의 관계는 엄밀히 말하면 상호작용하는 관계(?)라고 볼 수 있을 것 같다. 우리는 바탕화면에 있는 메모장, 게임 앱, 워드 파일, 파워포인트 등을 프로그램이라고 한다. 그 중 내가 게임을 하려고 게임 앱을 클릭하는 순간, 그 게임은 프로그램에서 프로세스가 된다. 다시 말해 프로그램을 실행한 것을 프로세스라고 한다. 이를 도식화해서 정리하면 아래와 같다. 위 그림을 보면서 하나씩 이해해보자. 우선 프로그램은 컴퓨터의 하드디스크라고 불리는 HDD(Hard D..
운영체제(OS:Operating System)란? 어떠한 분야의 공부를 시작하든 기초가 가장 중요하듯이 컴퓨터와 관련된 공부를 하기 위해서는 컴퓨터에 대한 기초지식이 있어야 한다고 생각한다. 물론 저번학기에 복수전공을 시작한 수업에서 '컴퓨터개론'이라는 수업으로 컴퓨터가 어떻게 탄생했고 어떻게 돌아가는지에 대한 내용을 듣기도 했다. 하지만 이에 대해 다시 복습하고 중요한 내용인 만큼 기록해 놓자는 의미에서 '운영체제' 카테고리를 따로 만들어서 기록해보려고 한다. 가장 먼저, 운영체제가 무엇인지부터 알아보자. 운영체제 : OS(Operating System)이라고 부르며 대표적인 운영체제로는 Linux, Mac, Windows, UNIX가 있다. 그렇다면 운영체제의 역할에 대해서 알아보자. 1. 시스템 자원(하드웨어) 관리자 2. 사용자와 컴퓨터간의 커뮤..