[네트워크] HTTP
·
💻 CS/네트워크
HTTP 발전 과정 및 HTTPSHTTP는 애플리케이션 계층으로서 웹 서비스 통신에 사용되며, HTTP/1.0부터 HTTP/3까지 발전을 거듭해 왔습니다.1. HTTP/1.0HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되어 있습니다. 한 연결당 하나의 요청을 처리하는 방식 때문에 RTT 증가를 유발합니다. 다시 말해, 서버로부터 파일을 가져올 때마다 TCP의 Three-Way Handshake를 계속해서 열어야 하므로 RTT가 증가하는 단점이 있습니다.📢 RTT란? 패킷이 목적지에 도달한 후 다시 출발지로 돌아오기까지 걸리는 시간, 즉 패킷의 왕복 시간을 의미합니다.1-1. RTT 증가 문제 해결 방법매번 연결할 때마다 RTT가 증가하면서 서버에 부담이 많이 가고 사용자 응답 시..
[네트워크] IP 주소
·
💻 CS/네트워크
컴퓨터 간의 통신 과정컴퓨터와 컴퓨터 간의 통신은 IP 주소를 통해 이루어진다고 알려져 있지만, 정확히 이야기하면 IP 주소를 통해 ARP를 사용하여 MAC 주소를 찾고, 이를 기반으로 통신합니다.1. ARPARP (Address Resolution Protocol)는 IP 주소로부터 MAC 주소를 구해주는 프로토콜로, IP 주소와 MAC 주소의 다리 역할을 합니다. ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환하며, 반대로 RARP는 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환합니다.장치 A가 ARP Request 브로드캐스트를 보내 IP 주소인 120.70.80.3에 해당하는 MAC 주소를 찾습니다. 이때 해당 주소에 맞는 장치 B가 ARP Reply 유니캐스트를..
[네트워크] 네트워크 기기
·
💻 CS/네트워크
네트워크 기기의 처리 범위네트워크 기기는 계층별로 처리 범위를 나눌 수 있습니다. 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있으며, 상위 계층을 처리하는 기기는 하위 계층도 처리할 수 있지만 반대는 불가능합니다.계층별 네트워크 기기 📡애플리케이션 계층: L7 스위치인터넷 계층: L3 스위치데이터 링크 계층: L2 스위치, 브리지물리 계층: NIC, 리피터, AP스위치는 여러 장비를 연결하고 데이터 통신을 중재하며, 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비입니다. 2. 애플리케이션 계층을 처리하는 기기2-1. L7 스위치L7 스위치는 로드밸런서라고 하며, 서버의 부하를 분산하는 기기입니다. 클라이언트로부터 오는 요청들을 여러..
[운영체제] CPU 스케줄링 알고리즘
·
💻 CS/운영체제
CPU 스케줄러는 CPU 스케줄링 알고리즘을 기반으로, 프로세스를 스레드 단위로 CPU에 할당하는 역할을 합니다. 프로그램이 실행될 때 어떤 프로그램이 CPU를 사용할지 결정하는 것이 바로 CPU 스케줄링 알고리즘입니다. 이러한 알고리즘은 CPU 이용률을 높이고, 주어진 시간 동안 많은 작업을 처리하며 준비 큐(ready queue)에 있는 프로세스를 최소화하고, 응답 시간을 짧게 설정하는 것을 목표로 합니다.CPU 스케줄링 알고리즘은 크게 비선점형(non-preemptive)과 선점형(preemptive) 방식으로 나눌 수 있습니다.1. 비선점형 방식 (Non-preemptive)비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기할 때까지 실행하는 방식으로, 강제로 프로세스를 중단하지 않습니다. 이..
[자료구조] 선형 자료 구조
·
💻 CS/자료구조
선형 자료 구조선형 자료 구조란 요소가 일렬로 나열되어 있는 자료 구조를 의미하며, 연결 리스트, 배열, 벡터, 스택, 큐 등이 있다.연결 리스트(Linked List)연결 리스트는 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료구조를 의미한다. 시간 복잡도 상 삽입과 삭제는 O(1)이 걸리고 탐색에는 O(n)이 걸린다. 앞의 그림처럼 prev 포인터와 next 포인터로 앞과 두의 노드를 연결시킨 것을 연결 리스트라고 하며, 연결 리스트는 싱글 연결 리스트, 이중 연결 리스트, 원형 이중 연결 리스트가 있다.싱글 연결 리스트는 next 포인터만을 이중 연결 리스트는 next 포인터와 prev포인터를 원형 이중 연결 리스트는 마지막 노드의 next 포인터가 헤드 노드(맨 앞에 있는..
[자료구조] 복잡도
·
💻 CS/자료구조
자료구조(Data Structure)는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합을 의미한다.이러한 자료구조를 사용할 때 크게 두가지의 복잡도를 고려하며 사용하게 되는데, 바로 시간 복잡도와 공간 복잡도이다. 앞서 복잡도를 나타낼 때 사용하는 표기법인 빅오 표기법(O(n))이 있다. 빅오 표기법은 입력 범위 n이라는 것이 주어졌을 때 n을 기준으로 로직이 몇 번 반복되는지 나타내는 것을 의미한다. 표기하는 방법은 가장 영향을 많이 끼치는 항의 상수 인자를 빼고 나머지 항을 없애서 계산한다. 왜냐하면 증가 속도를 고려할 때 가장 영향을 많이 끼치는 항의 상수 인자를 제외하고 미미하기 때문이다.  시간복잡도(Time Complexity)알고리즘이 실행되는 데 걸리는 시간을..
[운영체제] 프로세스와 스레드
·
💻 CS/운영체제
프로세스와 스레드: 운영체제의 핵심 개념 이해하기1. 프로세스(Process)란?프로세스는 컴퓨터에서 실행되고 있는 프로그램을 의미합니다. CPU 스케줄링의 대상이 되는 작업(Task)과 거의 같은 의미로 사용되고 있습니다. 프로그램이 메모리(RAM)에 로드되면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행합니다.1.1 프로세스의 상태생성(Create) 상태: 프로세스가 생성된 상태대기(Ready) 상태: CPU 스케줄러로부터 CPU 소유권이 넘어오기를 기다리는 상태실행(Run) 상태: CPU 소유권과 메모리를 할당받고 인스트럭션을 수행 중인 상태중단(Blocked) 상태: 어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태종료(Termin..
[운영체제] 운영체제와 컴퓨터
·
💻 CS/운영체제
운영체제와 컴퓨터 ☕️운영체제와 컴퓨터의 요소들에 대해 알아보는 시간을 가져보겠습니다. 운영체제가 하드웨어와 소프트웨어 사이에서 어떻게 작동하고 있는지, 그리고 컴퓨터의 구성 요소들이 각각 어떤 역할을 하는지 차근차근 살펴보겠습니다.운영체제란 무엇인가? 🤔운영체제(OS, Operation System)는 하드웨어와 소프트웨어를 관리하고, 사용자가 컴퓨터를 쉽게 다루도록 도와주는 일종의 인터페이스입니다. 하드웨어와 사용자 사이에서 "일꾼" 역할을 하는 것입니다.운영체제의 주요 역할 🚀운영체제의 역할은 크게 네 가지로 나눌 수 있습니다.CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할지 결정하고, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리합니다.메모리 관리: 한정된 메모리..