Computer Science (CS) 8

[CS공부 - 8회] www.google.com을 접속할 때 일어나는 일

URL 파싱 및 HTTP 요청 생성: 브라우저가 URL을 해석하여 HTTP 요청 메시지를 생성하고, 이를 운영체제에 전송 요청합니다. DNS 룩업: 도메인 이름을 IP 주소로 변환하기 위해 DNS 룩업을 수행합니다. 크롬 같은 브라우저는 먼저 로컬의 hosts 파일과 DNS 캐시를 확인합니다. 프로토콜 스택을 통한 패킷 처리: 운영체제 내의 프로토콜 스택이 HTTP 요청을 네트워크 패킷으로 변환하고 제어 정보를 추가합니다. LAN 어댑터를 통한 전송: LAN 어댑터가 패킷을 전기 신호로 변환하여 네트워크로 송출합니다. 인터넷 접속 경로를 통한 이동: 패킷은 스위칭 허브를 거쳐 ISP를 통해 인터넷으로 전송됩니다. 인터넷의 핵심부를 통한 전달: 패킷은 여러 고속 라우터를 거쳐 인터넷의 핵심부를 통과하여 목..

[CS공부 - 7회] 트랜잭션의 개념과 격리 수준

정의 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미합니다. // 트랜잭션 시작 BEGIN TRAN //변경할 쿼리문 UPDATE tbl_admin SET nickname = "babo" WHERE no= 1; //결과 확인해 본 후 select * from tbl_admin //성공 처리 COMMIT TRAN //실패 처리 ROLLBACK TRAN 이론공부만 하던 시절에는 와닿지 않았던 개념이었는데, 현업에서 사용하게 되어서 CS의 주제로 선정하게 되었다. 위의 쿼리문 처럼 변경을 시작하기 전에 " BEGIN TRAN "을 실행하고, 변경하는 쿼리문을 실행한다. 잘 변경되었나 확인해..

[CS공부 - 6회] 멀티 프로세스와 멀티 스레드

개인적으로 멀티프로세스와 멀티스레드를 한방에 이해 시켜준 사진 멀티 프로레스(크롬) VS 멀티 스레드 (익스플로어) 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위 프로세스의 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용 프로그램 프로세스 어떤 작업을 하기 ..

[CS공부 - 5회] RESTful API

REST란? REpresentational State Transfer의 약자, 자원을 이름으로 구분해 해당 자원의 정보를 주고 받는 모든 것을 의미 = 자원 (resource)의 표현 (representation)에 의한 상태 전달을 뜻함 (네트워크 상의 Client와 Server 사이의 통신 방식 중 하나) 정의 자원: 해당 SW가 관리하는 모든 것 (문서, 그림, 데이터 등) 표현: 그 자원을 표현하기 위한 이름 (예: 학생 정보가 자원이라면 ‘students’ 등) 상태 전달: 데이터가 요청되는 시점에 자원의 상태를 전달 (JSON 혹은 XML) 개념 어떤 자원에 대해 CRUD 연산을 수행하기 위해 URI (Resource)로 GET, POST 등의 방식 (Method)을 사용하여 요청을 보내면, ..

[CS공부 - 4회] 동기와 비동기 (블로킹과 논블로킹)

동기 (Synchronous)와 비동기(Asynchronous) 동기는 요청을 보낸 후 응답을 받아야지만 다음 동작이 이루어지는 방식이다. 어떠한 태스크를 처리할 동안 나머지 태스크는 대기한다. 실제로 cpu가 느려지는 것은 아니지만 시스템의 전체 효율이 저하된다고 할 수 있다. function func1(){ console.log('1'); func2(); } function func2(){ console.log('2'); func3(); } function func3(){ console.log('3'); } func1(); //결과 1,2,3 비동기는 요청을 보낸 후 응답의 수락 여부와는 상관없이 다음 태스크가 동작하는 방식이다. 자원을 효율적으로 사용할 수 있다. 이때, 비동기 요청시 응답 후 처리..

[CS공부 - 3회] 객체지향과 절차지향 프로그래밍

절차지향 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법으로 대표적인 절차지향 언어는 C언어가 있습니다. 장점은 컴퓨터의 처리구조와 유사해 실행속도가 빠르지만, 단점으로 유지보수가 어렵고, 실행 순서가 정해져 있으므로 코드 순서가 바뀌면 동일한 결과를 보장하기 어려우며, 디버깅하기도 어렵습니다. 하지만 하드웨어의 발전으로, 성능에 조금 부담을 주더라도 큰 단점이 아니게 되었기에 모듈화, 캡슐화해서 개념적으로 접근하는 형태를 갖는 객체지향 프로그래밍이 탄생했습니다. 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체라는 독립된 단위들의 모임으로 보고 개발하는 것입니다...

[CS공부 - 2회] 대칭키와 비대칭키(비밀키와 공개키)

대칭키 암호화는 암호화와 복호화에 같은 키를 사용하는 암호화 방식 비대칭키 암호화는 암호화와 복호화에 다른 키를 사용하는 암호화 방식 1. 대칭키(비밀키) 암호화 장점: 데이터를 암호화하기 위한 연산이 빨라 대용량 Data 암호화에 적합, 구현이 용이, 기밀성을 제공 단점: 키를 교환해야하는 문제, 탈취 관리 걱정, 사람이 증가할 수록 키 관리가 어려움, 확장성 떨어짐 하나의 비밀키를 서버&클라이언트 모두 함께 사용 암호화와 복호화에 같은 키를 사용하는 방식 비밀키 하나만 알아내면 암호화된 내용 해킹 가능 속도가 빠르다는 장점이 있지만, 키를 교환해야 한다는 문제가 있어서 중간에 탈취 당해 해킹당할 수 있다. ( 위험한 이유 : 처음 상대방에게 대칭키를 전송하는 과정에서 탈취당하면 통신내용 모두 해킹 가..

[CS공부 - 1회] TCP와 UDP

TCP는 Transmission Contorl Protocol으로, 전송 제어 프로토콜입니다. TCP는 신뢰성 있는 데이터 전송을 위해 사용되는 연결지향 프로토콜입니다. UDP는 User Datagram Protocol으로 사용자 데이터그램 프로토콜입니다. UDP는 빠른 데이터 전송을 중요시하는 비연결 프로토콜입니다. 두 단어 모두에게 존재하는 프로토콜(Protocol)이 디지털 장치간의 서로 통신하고 상호작용하기 위한 규칙의 집합입니다. TCP와 UDP의 차이점은 다음과 같습니다. 신뢰성 TCP는 데이터 손실이나 순서의 뒤섞임이 발생하지 않습니다. UDP는 정확성을 확인하거나 재전송을 요청할 수 없기에 데이터가 손실 되거나 순서가 뒤섞일 수 있습니다 연결 TCP는 데이터를 전송하기 전에 연결을 설정하고..