분류 전체보기 235

컴퓨터 용어 정리

👣 구성 요소 CPU - Computer Processing Unit ALU, 제어 장치, 레지스터로 이뤄진 명령어를 실제로 실행하는 부품. ALU - 산술논리연산장치 덧셈, 뺄셈 같은 산술 연산, XOR, AND 등의 논리 연산을 계산하는 디지털 회로. 제어 장치 I/O 장치 사이의 통신을 제어, 명령어를 읽고 해석, 데이터 처리 순서 결정. 레지스터 CPU 내부의 임시기억장치. 연산 속도가 메모리보다 훨씬 빠르다. 인터럽트 CPU를 잠깐 정지시키는 신호. 인터럽트 발생 시, 인터럽트 핸들러 함수들이 있는 인터럽트 벡터로 가서 핸들러 함수를 실행. 각 인터럽트 사이엔 우선 순위가 있다. 크게 HW 인터럽트, SW 인터럽트로 나뉜다. HW 인터럽트 마우스를 연결하거나 프린트 준비가 끝났을 때 등등의 I/..

운영체제 2023.07.21

운영체제 기초 정리

👣 개요 하드웨어와 소프트웨어 간의 상호작용을 관리하고 제어하는 시스템 소프트웨어. 👣 역할 1. CPU 스케줄링, 프로세스 관리 - CPU CPU 소유권을 어떤 프로세스에 할당할지를 관리. 2. 메모리 관리 - Memory 프로세스에 얼마나 메모리를 할당할지 제어. 3. 디스크 파일 관리 - Disk 디스크에 파일을 어찌 관리할 것인지 관리 4. I/O 디바이스 관리 - Device 마우스, 키보드, 프린터 등등의 컴퓨터와 통신하는 기기 관리 👣 구조 드라이버 하드웨어를 제어하기 위한 소프트웨어. 커널 System Call로 Interface를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스 등등을 관리하는 주체. OS의 핵심 부분. 시스템 콜 어플리케이션이 커널에 접근할 수 있게 O..

운영체제 2023.07.21

객체 지향 프로그래밍

👣 개요 객체들의 집합으로 프로그램을 표현하며 데이터를 객체로 취급해 객체 내부에 선언된 메서드를 활용하는 방식. 👣 OOP 특징 1. 추상화 복잡한 시스템으로부터 핵심 개념을 간추리는 것. 2. 캡슐화 객체의 속성, 메소드를 하나로 묶고 외부에 감추는 것. 3. 상속성 상위 클래스의 하위 클래스가 이어받아 재사용, 확장하는 것. 4. 다형성 하나의 메서드를 다양한 방법으로 동작시키는 것. 👣 OOP 설계 원칙 1. SRP - 단일 책임 원칙 모든 클래스는 하나의 책임만 가진다. // 위반 예시 class Report { public void generateReport() { // 보고서를 생성하는 코드 } public void saveReportToFile() { // 보고서를 파일로 저장하는 코드 }..

디자인 패턴 2023.07.21

TCP Handshake

👣 TCP 연결 성립 과정 - 3-Way Handshake SYN 단계 [Client -> Server] Client가 ISN(임의의 32Bits 시퀀스 번호)와 함께 SYN 전송. SYN+ACK 단계 [Server -> Client] Server가 서버의 ISN과 클라이언트의 ISN+1값을 함께 SYN+ACK 전송. ACK 단계 [Client -> Server] Client가 서버의 ISN+1값을 함께 ACK 전송. 👣 TCP 연결 해제 과정 - 4-Way Handshake FIN 단계 [Client -> Server] Client가 FIN 세그먼트를 전송 ACK 단계 [Server -> Client] Server가 FIN에 대한 답변으로 ACK를 전송. 그리고 실제로 작업 중지를 시작. FIN 단계 ..

네트워크 2023.07.21

SSL/TLS

👣 개요 SSL은 초기 버전으로 차후 TLS로 명칭이 변경되었으나 보통 SSL/TLS라고 부른다. SSL은 Client와 Server가 통신할 때, 제 3자가 도청하지 못하도록 변조를 하는 방법이다. SSL은 비대칭키와 대칭키를 이용해서 성능적 이점과 보안적 이점 모두를 취한 기술이다. Http 통신 중에 절대 원문 그대로 정보를 주고 받지 않고 대칭키로 암호화 후에 전송하는 것이 특징이다. 위 방법으로 인해 제 3자가 패킷을 탈취하더라도 알 수 없는 암호로 적혀있어 보안에 유리하다는 특징이 있다. 👣 사전 지식 대칭키는 암호화와 복호화 과정에 사용되는 컴퓨터 자원이 비교적 적고 속도가 빠르다. 하지만 최초에 대칭키를 결정하고 교환하는 과정 중 탈취를 당할 염려가 있어 보안적으로 불안정하다. 비대칭키는 ..

네트워크 2023.07.21

HTTP

👣 HTTP/1.0 1개의 연결당 1개의 요청만 처리. 이는 RTT[패킷 왕복 시간]를 증가시켰다. 👣 RTT 증가 대처 방안 1. 이미지 스플리팅 하나의 이미지를 여러 조각으로 잘라서 병렬적으로 다운로드 받는 것 2. 코드 압축 HTML과 같은 코드들의 개행, 띄어쓰기 등등의 무의미한 문자를 없애는 것. 3. 이미지 Base64 인코딩 바이너리 형식의 이미지를 문자열로 변환해 일반 텍스트 기반의 프로토콜에서도 다룰 수 있게 한 방법. 이미지를 위한 별도의 요청을 열지 않아도 되어 RTT를 줄일 수 있다. 👣 HTTP/1.1 TCP는 Handshake로 인해 연결을 맺는 것 자체가 비용이 크기 때문에 Keep-alive 옵션을 이용해서 1 번의 연결로 n 번의 요청, 응답을 가능하게 했다. Http/1...

네트워크 2023.07.21

IP

👣 ARP - Address Resolution Protocol IP에서 MAC 주소로 변환하는 프로토콜. IP로 주소를 찾는 것처럼 묘사가 되지만 사실은 실제 통신은 MAC 주소로 구분된다. 실제로 IP에서 MAC 주소를 찾는 과정은 다음과 같다. 1. IP 주소로 MAC 주소를 요구하는 Request를 전역적으로 네트워크에 흩뿌린다. 즉, 브로드캐스트한다. 2. 해당 IP를 가진 기기가 자신의 MAC 주소를 Request를 보낸 기기에 1:1로 알려준다. 즉, 유니캐스트한다. 👣 IPv4 vs IPv6 IPv4 IPv6 표기법 32bit 를 8bit 씩 64bit 를 16bit 씩 예시 123.45.67.89 2045:ec4::3nj5:25:2634 👣 클래스 기반 할당 방식 기업과 같은 경우 많은 ..

네트워크 2023.07.21

네트워크 기기

👣 각 계층에서의 기기 애플리케이션 계층 L7 스위치 인터넷 계층 라우터, L3 스위치 데이터 링크 계층 L2 스위치, 브리지 물리 계층 NIC, 리피터, AP 👣 애플리케이션 계층에서의 기기 👣 L7 스위치 로드 밸런서로 불리며, 서버의 부하를 분산시키는 기기. 단순히 트래픽을 분산시키기만 하는 것이 아니라 각 서버의 헬스 체크를 하며 분산을 한다. L4 스위치와 달리 IP, 포트뿐만 아니라 URL, 쿠키, HTTP 헤더 등등으로 분산 전략을 선택한다. 👣 인터넷 계층에서의 기기 👣 L3 스위치 라우터라고 불려도 되지만 특히나 하드웨어 기반으로 라우팅하는 장치를 L3 스위치라고 한다. L2 스위치 L3 스위치 참조 테이블 MAC 주소 테이블 라우팅 테이블 잠조 PDU 이더넷 프레임 IP 패킷 참조 주소..

네트워크 2023.07.20

TCP/IP 4 계층

👣 개요 각 계층은 특정 계층이 변경되어도 영향을 받지 않도록 설계되어 있다. 👣 Application Layer - L7 실질적으로 사람들에게 서비스를 제공하는 층. Ex) HTTP - WWW을 위한 데이터 통신의 기초, 웹 사이트에서 사용되는 프로토콜. FTP - 파일을 전송하는 프로토콜 SSH - 암호화 네트워크 프로토콜 SMTP - 전자 메일 전송을 위한 프로토콜 DNS - 도메인명과 IP 주소를 매핑하는 서비스. 👣 Transport Layer - L4 통신의 신뢰성, 흐름 제어를 제공하는 계층. Ex) TCP - 패킷 순서, 연결성 등을 확인해서 연결하는 프로토콜. [가상회선 패킷 교환] UDP - 패킷 순서, 연결성 등을 확인하지 않고 단순히 데이터만 전달하는 프로토콜. [데이터그램 패킷 교..

네트워크 2023.07.20