CS 72

HTTPS 개념

HTTPS는 TLS를 이용한 HTTP 통신이다.TLS(Transport Layer Security)는 비대칭키 암호화(Public Key, Private Key) 방식을 이용한다. 간단히 말해,Public Key로 데이터를 암호화하면 PrivateKey로 복호화하거나PrivateKey로 서명하면 PublicKey로 검증하는 방식이다. 암호화나 검증에 사용되는 Key는 Public하게 공개해도 되지만복호화나 서명에 사용되는 Key는 Private하게 관리되어야 한다. 이것은 TLS의 가장 중요한 원리이다. 그렇다면 비대칭키 암호화 방식이 클라이언트와 서버 간 통신에 필요한 이유는 무엇일까? 클라이언트(웹브라우저)는 서버(웹서버)에 '도메인'(ex. naver.com, google.co..

CS/NETWORK 2025.07.23

GNS3로 간단한 네트워크망 구성 실습하기

사내 인프라가 마땅치 않아인프라 구성에 고민하던 중 GNS3라는 시뮬레이션 환경을 알게 되었다. 네트워크 엔지니어가 아니라 전문적으로 네트워크 구성을 하지 못하지만구성하고 싶은 인프라를 테스트하기 위한 기초적인 네트워크 환경이 필요하여 실습하게 되었다. 그러므로아래 내용은 부정확한 정보를 포함하고 있으니 참고용으로만 추천한다. 요구사항 1. VLAN 구성이 가능해야 한다. 2. 방화벽으로 물리적 망분리가 가능해야 한다. 3. DMZ 망이 존재해야 한다. 4. 인터넷 접속이 가능해야 한다. 5. 가능한 이중화 구성이 되어야 한다. 방화벽 방화벽은 망 밖에서 들어오는 트래픽의 접근을 제어하거나 특정한 IP로 라우팅 시키는 기초적인 기능만 제공하면 되므로, 방화벽 장비가 아닌 라우터(c3725..

CS/NETWORK 2025.07.16

[OS] 가상메모리(Virtual Memory)란?

가상메모리에 대해서 알아보기 전에, 우선 CPU부터 간략히 알아보자. 32bit CPU, 64bit CPU라는 말을 많이 들어보았을 것이다. 여기서 32bit와 64bit는 무엇일까? 바로. CPU가 접근할 수 있는 메모리(RAM) 주소범위이다. 1bit가 0 과 1 , 2가지 경우를 표현하므로 32bit는 232가지 경우를 표현할 수 있다. 1GB는 230 가지 경우를 표현하므로, 232 = 22 x 230 = 4GB 정리하면, 32bit CPU는 4GB 메모리에 접근 가능하고 64bit CPU는 264 = 232 x 232 = 4GB X 4GB = 16GB 메모리에 접근가능하다. 그럼 이제 32bit CPU를 예로 들어 가상메모리 기법에 대해서 알아보자. ( 64bit도 원리는 동일하다. ) 가상메모..

CS/OS 2024.01.25

[OS] 비동기(Async)와 동기(Sync)

비동기(Async)와 동기(Sync) 비동기(Async)란 지금 당장 호출(call)은 해야 하지만 결과는 나중에(back) 받아도 되는 경우에 사용된다. 반대로 동기(Sync)는 지금 요청하고 결과도 받아야 하는 경우 사용한다. 예를들어, 요리에 바쁜 어머니가 아들한테 그릇 세팅하라고 시키는 것은 비동기이다. 그릇은 미리 세팅되어 있으면 좋다. 그래서 어머니 스레드는 아들 스레드에게 그릇세팅 로직을 호출(CALL) 했고 아들은 어머니가 요리하고 있는 사이 그릇 세팅을 완료한 다음 어머니에게 알린다(Back). 요리가 끝난 어머니는 세팅되어 있는 그릇에 음식을 담는다. 동기(Sync)의 경우, 라면을 끓일 때, 스프를 넣고 물이 끓어야 면을 넣는다. 이것은 동기다. 스프를 넣는 로직이 수행되고 물이 10..

CS/OS 2024.01.21

[OS] 멀티 프로세스 vs 멀티 스레드

[OS] 프로세스(Process)란 무엇일까? 개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리 lordofkangs.tistory.com 지난 포스팅에서 Process에 대해서 다루어 보았다. Disk에 있는 Program을 CPU로 처리하려면 RAM에 메모리를 할당해야 한다. 메모리 할당은 Process 단위로 이루어진다. 메모리라는 독립적인 공간이 확보되면 CPU로 처리될 준비가 되었다고 볼 수 있다. 여기서 한 가지 고민해보자. 많은 프로그램이 병렬처리를 한다. 병렬처리를 구현하려면 어떻게 해야할까? 1) 멀티 프로세스 2) 멀티 스레드 ..

CS/OS 2024.01.18

[OS] 프로세스 스케줄링 ( Process Scheduling )

[OS] 프로세스(Process)란 무엇일까? 개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리 lordofkangs.tistory.com [OS] PCB란 무엇일까? https://lordofkangs.tistory.com/614 [OS] 프로세스(Process)란 무엇일까? 개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코 lordofkangs.tistory.com 지난 포스팅에서 프로세스와 PCB에 대해서 다루어 보았다. Disk에 있는 프..

CS/OS 2024.01.17

[OS] PCB란 무엇일까?

https://lordofkangs.tistory.com/614 [OS] 프로세스(Process)란 무엇일까? 개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리 lordofkangs.tistory.com 프로세스(Process)는 CPU가 처리할 수 있도록 RAM 메모리에 할당된 프로그램의 단위이다. 프로세스는 소프트웨어로 다양하다. 그러나 하드웨어인 CPU는 한정되어 있다. 그러므로 프로세스A가 CPU를 점유하고 있으면 스케줄링 정책에 따라 프로세스B로 컨텍스트 스위칭(Context Switching)을 일으켜야 한다. 이렇듯 OS는 CPU 자..

CS/OS 2024.01.15

[OS] 프로세스(Process)란 무엇일까?

개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리어로 변환하고 어셈블러는 어셈블리어를 컴퓨터가 이해할 수 있도록 1과0 변환한 다음 링커가 동작하여 참조하는 라이브러리와 함께 엮으면 실행 가능한 파일(Excutable File)이 만들어 진다. 그리고 실행가능한 파일은 Disk에 저장된다. 이렇게 Disk에 저장된 실행가능한 파일을 두고, 우리는 프로그램(Program)이라 부른다. 그렇다면 프로세스(Process)란 무엇일까? Disk는 크기가 크고 I/O가 느려 CPU와 일할 수 없다. 그래서 CPU와 Disk 사이에는 RAM이 존재한다. D..

CS/OS 2024.01.15

[Network] VLSM ( Variable Length Subnet Mask )

[Network] 서브넷 마스크 이해하기 ( Subnet Mask ) IP는 장비에 부여되는 가변적인 주소이다. 동일한 영역에 모여있는 장비는 연결되어 네트워크를 형성하는데, 이를 LAN(Local Area Network)이라 부른다. LAN의 입구 역할은 라우터가 하는데, 이를 게이 lordofkangs.tistory.com 지난 포스팅에서 서브넷 마스크를 29로 하여 6개의 장비에 IP를 부여해보았다. 네트워크주소 브로드캐스트주소 호스트주소 부여 가능한 IP 203.230.8.0 203.230.8.7 203.230.8.1 ~ 203.230.8.6 할당완료(0개) 203.230.8.8 203.230.8.15 203.230.8.9 ~ 203.230.8.14 6개 203.230.8.16 203.230.8...

CS/NETWORK 2023.09.14

[Network] 서브넷 마스크 이해하기 ( Subnet Mask )

IP는 장비에 부여되는 가변적인 주소이다. 동일한 영역에 모여있는 장비는 연결되어 네트워크를 형성하는데, 이를 LAN(Local Area Network)이라 부른다. LAN의 입구 역할은 라우터가 하는데, 이를 게이트웨이(Gateway)라 부른다. 그러므로 한 LAN에서 다른 LAN으로 데이터를 전송하려면 우선 게이트웨이가 위치한 네트워크에 도착해야 한다. 집주소를 떠올리면 이해가 쉽다. 경복궁을 간다고 가정해보자. 경복궁 주소는 아래와 같다. 서울특별시 종로구 / 사직로 161 경복궁에 가려면 우선 서울특별시 종로구(네트워크 주소)에 가야한다. 그리고 상세주소인 사직로 161(호스트 주소)을 찾아가야 한다. IP도 마찬가지이다. 우선 네트워크를 찾아가야 되고 게이트웨이에 입성하면 호스트 주소로 장비를 ..

CS/NETWORK 2023.09.14