🖥️ CS

    [운영체제] 프로세스와 스레드

    🔎 [10분 테코톡] 코다의 Process vs Thread을 기반으로 작성하였습니다. 프로세스와 스레드를 공부하다 보면 헷갈릴 수 있는, 혼동하기 쉬운 용어들이 있다. 따라서 들어가기 앞서, 키워드를 먼저 정리하려고 한다. 키워드 실행 단위 : cpu core에서 실행하는 하나의 단위로, 프로세스와 스레드를 포괄하는 개념 (부연 설명이 없는) 프로세스 : 하나의 스레드만 가지고 있는 단일 스레드 프로세스 동시성 : 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것 프로그램과 프로세스 모두가 좋아하는 음식인 피자를 예로 들어보자. 피자를 먹고 싶어서 피자 가게에 갔는데, 피자가 아닌 피자 레시피를 받는다면 어떨까?? 종이에 적힌 레시피는 피자일 수가 없다. ..

    가상화와 가상머신, 그리고 컨테이너

    가상화(Virtualization)란? 가상화(Virtualization)란, 컴퓨터나 네트워크의 자원을 논리적으로 구분하여 하나의 물리적 자원을 여러 개의 가상 자원으로 나누어 사용하는 기술을 말한다. 물리적인 하드웨어 장치를 논리적인 객체로 추상화하는 것이다. 즉, 하나의 컴퓨터를 여러명의 사용자가 동시에 사용할 수 있도록 여러대의 작은 컴퓨터로 분할시키거나, 반대로 여러 장치를 묶어 하나의 장치인 것처럼 사용자에게 제공할 수 있다. 운영 체제부터 애플리케이션에 이르기까지, 새로운 소프트웨어의 요구 사항은 점점 더 높아지고 있다. 더 많은 데이터, 더 높은 처리 능력, 더 큰 용량의 메모리가 필요해지는 것이다. 가상화를 사용하면, 하드웨어 리소스를 효율적으로 사용하여 비용을 단축할 수 있다. 가상화 ..

    MSA(Microservice Architecture)란?

    전통적인 애플리케이션 구축 방식은 모놀리식(Monolithic)에 중점을 두었으며, 애플리케이션에서 구축 가능한 모든 부분이 하나의 애플리케이션에 포함되어 있었다. 이러한 방식의 단점은 애플리케이션이 커질수록 새로운 문제를 해결하고 새로운 기능을 추가하는 것이 어려워진다는 것이었다. 마이크로서비스 기반 애플리케이션 구축 방법은 이러한 문제를 해결하고 개발 및 대응 속도를 가속화할 수 있다. 마이크로서비스(Microservices)란? 마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는, 소규모의 독립적인 서비스로 구성되어있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식이다. 마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 ..

    [네트워크] DNS

    ✔️ DNS란 무엇인가? 도메인 이름 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름(예:nayoungs.tistory.com)을 머신이 읽을 수 있는 IP 주소(예:211.249.222.33)로 변환한다. 이러한 DNS는 어떻게 등장하게 되었을까? 네트워크 안에서 호스트를 식별하기 위한 목적으로 IP 주소를 사용한다. 사람의 경우, 숫자보다 문자를 사용하는 것이 더 편하므로 도메인 이름을 이용하여 호스트를 식별한다. 도메인 이름을 사용하는 경우에도 최종적으로 IP 주소를 알고 있어야 상대방과 연결이 가능하므로, 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해 주는 TCP/IP 네트워크 서비스인 DNS가 등장하게 되었다. 다시 한번 설명하자면, DNS의 정의는 TCP/IP 상에서 ..

    [네트워크] 로드밸런싱(Load Balancing)

    ✔️ 로드 밸런싱(Load Balancing) 로드밸런싱이란, 네트워크 또는 서버에 가해지는 로드를 분산해주는 기술이다. 둘 이상의 CPU 혹은 저장 장치와 같은 컴퓨터 자원들에게 작업을 나눠주는 것을 의미한다. 로드 밸런싱의 필요성 로드 밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다. 서버가 단 하나만 존재할 때, 수천만 명의 사람들이 동시에 서버에 접속하면 어떻게 될까? 하나의 서버는 부하를 감당하지 못할 수도 있을 것이고, 결국 정상적인 서비스가 불가능 해질 것이다. 이를 해결하는 방식에는 2가지가 있다. Scale-up : 서버 자체의 성능을 높이는(확장하는) 것이다. 비유하자면 CPU가 i3인 컴퓨터를 i7으로 업그레이드하는 것과 같다. Scale-out..

    [네트워크] TLS/SSL HandShake

    ✔️ HTTPS를 사용한 안전한 웹 인터넷은 안전한 통신을 위해 암호화를 진행하게 되는데, 암호화란 일반적인 평문(text)를 알아볼 수 없도록 암호문으로 만드는 과정이다. 암호문을 상대에게 전달하고, 상대는 이를 다시 복호화하여 평문으로 확인할 수 있다. 이와 같은 과정을 웹 브라우저와 웹 서버에게 사용하는 기술이 바로 HTTPS(Hypertext Transfer Protocol Secure)이다. HTTPS는 SSL(Secure Socket Layer) / TLS(Transport Layer Security) 전송기술을 사용한다. TCP, UDP와 같은 일반적인 인터넷 통신에 안전한 계층(layer)를 추가하는 방식을 말하며, 이러한 기술을 구현하기 위해 웹 서버에 설치하는 것이 SSL/TLS 인증서..

    [네트워크] HTTP와 HTTPS

    ✔️ HTTP란? HTTP는 HyperText Transfer Protocol의 약자로, 클라이언트/서버 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 인터넷 상에서 자원을 주고 받을 때 사용하는 통신 규약으로, 80번 포트를 사용한다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다. HTTP의 구조 HTTP은 애플리케이션 레벨(OSI 7계층)의 프로토콜로, TCP/IP 위에서 작동한다. 또한, HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다. 그러나 HTTP는 평문 데이터(텍스트)를 전송하는 프로토콜이므로, 누군가 네트워크에서 신호를 ..

    [네트워크] 대칭키와 공개키

    암호화와 복호화에 사용하는 암호키가 같은 지 다른 지에 따라, 암호화 기법이 대칭키 기법과 비대칭키 기법으로 나뉘어진다. ✔️ 대칭키(Symmetric Cryptography) 대칭키 암호는 암호화와 복호화에 동일한 대칭키(암호키)를 사용하는 알고리즘이다. 송신자가 키를 통해 평문을 암호화(Encryption)하여 암호문을 보내면, 수신자는 동일한 키를 이용하여 암호문을 복호화(Decryption)하여 평문을 만드는 원리이다. 대표적인 알고리즘 : DES, 3DES, AES, SEED, ARIA, MASK 등 장점 공개키 암호화 방식에 비해 암호화 및 복호화 속도가 빠르다. 키 크기가 상대적으로 작다. 암호 알고리즘 내부구조가 간단하여 시스템 개발 환경에 용이하다. 대용량 Data 암호화에 적합하다. 단..

    [네트워크] TCP/IP 흐름제어 & 혼잡제어

    📌Index TCP 통신이란? 흐름 제어 Stop and Wait Sliding Window 혼잡 제어 AIMD (Additive Increase/Multiplicative Decrease) Slow Start(느린 시작) Fast Retransmit(빠른 재전송) Fast Recovery(빠른 회복) 기술질문/예상질문 ✔️ TCP 통신이란? 흐름제어와 혼잡제어에 대해 알아보기 앞서, TCP 통신를 보고 넘어가자. TCP 통신이란 네트워크 통신에서 신뢰적인 연결 방식을 의미한다. TCP는 기본적으로 reliable network를 보장할 수 있도록 하는 프로토콜로, network congestion avoidance algorithm을 사용한다. 🔎 Unreliable vs Reliable Unrelia..

    [네트워크] UDP(User Datagram Protocol)

    ✔️ UDP란? User Datagram Protocol의 약자로, 데이터를 데이터그램(Datagram) 단위로 처리하는 프로토콜이다. TCP와는 다르게 데이터를 패킷으로 나누고 반대편에서 재조립하는 과정을 거치지 않으며, 수신지에서 제대로 받든 받지 않든 상관하지 않고 데이터를 보내기만 한다. 즉, 비연결형, 신뢰성 없는 전송 프로토콜로, 데이터그램 단위로 쪼개면서 전송을 해야하기 때문에 전송 계층에 속한다. 또한 목적지에 도달하려고 하지만 에러가 날 수도 있고, 재전송이나 순서 뒤바뀜에 대한 대처는 애플리케이션에서 처리해주어야 한다. 그러나 UDP는 속도가 빠르다. 별도의 연결도 필요하지 않고, TCP 처럼 ACK 메세지를 통해 확인을 받거나 하는 작업이 없기 때문에 TCP보다 빠르며, 이러한 속도의..

    [네트워크] TCP 3 way handshake & 4 way handshake

    ✔️ TCP(Transmission Control Protocol)란 TCP는 네트워크 계층 중 전송 계층(4계층)에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다. TCP의 특징 인터넷 상에서 데이터를 메세지의 형태(세그먼트라는 블록 단위)로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 연결형 서비스로, 가상 회선 방식을 제공한다. 3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking을 통해 연결을 해제한다. (데이터를 전송하기 전에 논리적 연결이 설정되는데, 이를 가상회선이라고 한다, UDP는 데이터그램 교환 방식) 흐름제어 및 혼잡제어를 제공한다. 흐름 제어 ..

    [네트워크] TCP/IP 4계층 모델

    네트워크 전송 시 데이터 표준을 정리한 것이 OSI 7계층이었다면, 이 이론을 실제로 사용하는 인터넷 표준으로, 각종 기능을 계층화하고 복수의 프로토콜을 조합하여 실현시킨 것이 TCP/IP 4계층이다. TCP/IP 모형은 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신 규약(프로토콜)의 모음으로, 각 계층은 담당하는 위치마다 처리 역할을 구분해 진행함으로 서로 간의 간섭을 최소화하여 사용의 편리성을 높인다. 상위 계층인 TCP는 메세지나 파일들을 좀 더 작은 패킷으로 나누어 인터넷을 통해 전송하는 일과, 수신된 패킷들을 원래의 메세지로 재조립하는 일을 담당한다. 반면, 하위 계층의 IP는 각 패킷의 주소 부분을 처리하며 패킷들이 목적지에 정확하게 도달할 수 있게 한다. TCP/IP 4계층..

728x90