CS 45

[Network] TCP와 UDP

✔️ 들어가기 전 요약 [1줄 요약] TCP와 UDP는 OSI 7 계층 중 전송 계층에서 사용되는 프로토콜이다. ※ 전송 계층은 송신자와 수신자를 연결하는 통신서비스르 제공하는 계층이다. 즉, 데이터의 전달을 담당하며, 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당한다. TCP와 UDP는 각각 가상회선 방식과 데이터그램 방식이라는 점에서 차이를 가지며, 신뢰성과 연속성 두 측면에서 상충관계에 있다. 💡 TCP와 UDP의 차이 - TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만, 속도가 비교적 느리다는 단점이 있다. - UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단..

CS/Network 2023.01.15

[Network] TCP의 3-way-handshake와 4-way-handshake

💡 연결을 성립하고 해제하는 과정을 말한다. 3 way-handshake란? : 연결을 설정하는 과정 TCP 네트워크에서 통신하는 장치가 서로 연결이 잘 되었는지 확인하는 방법 (연결 성립) 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며, 통신이 가능한 상태인지 확인한다. TCP는 정확한 전송을 보장해야 한다. 따라서 TCP/IP프로토콜을 이용해 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다. Client → Server : TCP SYN Server → Client : TCP SYN + ACK Clinet → Server : TCP ACK ※ 참고 - SYN : Synchronize Sequence Numbers - ACK : Acknowledgm..

CS/Network 2023.01.15

[Database] 트랜잭션(Transaction)

트랜잭션(Transaction)이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 💡 데이터베이스의 상태를 변화시킨다는 것을 무엇일까? → SQL 질의어를 통해 DB에 접근하는 것! ※ SQL 질의어 SELECT INSERT DELETE UPDATE 🚨 작업의 단위는 질의어 한문장이 아니다. 작업단위 : 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미. 예시) 사용자 A가 사용자 B에게 10,000원을 송금한다. ✔️ 이때 DB 작업 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE문을 사용해 사용자 A의 잔고를 변경 2. 사용자 B의 계좌에서 만원을 추가한다 : UPDATE문을 사용해 사용자 B의 잔고를 변경 💡 현재 작업 단위 : 출금 UPDATE문 + 입금 ..

CS/Database 2023.01.12

[Database] 인덱스 (Index)

들어가기 전... 인덱스(Index)란 무엇인가? DBMS도 데이터베이스 테이블의 모든 데이터를 검색해서 원하는 결과를 가져오려면 시간이 오래 걸린다. 그래서 칼럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어 두는 것이다. DBMS의 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데는 빠르지만 새로운 값을 추가하거나 삭제, 수정하는 경우에는 쿼리문 실행 속도가 느려진다. (뒤에 나옴) → 결론적으로 DBMS 에서 인덱스는 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능이다. 그래서 인덱스의 목적 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조. 즉, 데이터베이스의 테이블에 대한 검색 ..

CS/Database 2023.01.10

[Database] 이상 현상 (Anomaly)

좋은 관계형 데이터베이스를 설계하는 목적 중 하나가 정보의 이상 현상 (Anomaly)이 생기지 않도록 고려해 설계하는 것이다. 이상 현상은 테이블을 설계할 때, 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말한다. 💡 정규화를 해야하는 이유는 잘못된 테이블 설계로 인해 Anomaly(이상 현상)이 나타나기 때문이다. 이상 현상은 갱신 이상 (Update Anomaly) 삽입 이상 (Insertion Anomaly) 삭제 이상 (Deletion Anomaly) 으로 구성된다. 학번 이름 나이 성별 강의코드 강의명 전화번호 1011 이태호 23 남 AC1 데이터베이스 개론 010-2627-8123 1012 강민정 20 여 AC2 운영체제 010-4665-1941 1013 김현수..

CS/Database 2023.01.10

[자료구조] 스택(Stack) & 큐(Queue)

스택(Stack) 선형 자료구조의 일종으로, 가장 나중에 들어온 것이 가장 먼저 나온다. LIFO (Last In First Out, 후입선출) ※ 스택(stack)이란, 쌓아 올린다는 것을 의미한다. 따라서 스택 자료구조라는 것을 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다. 스택의 특징 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. 즉, 스택의 경우 자료의 삽입과 삭제는 한 곳(top)에서만 이루어지게 된다. 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는 구조적 특징을 가졌다. 만약 스택이 비어있을 때 자료를 꺼내려고 시도를 하면 스택 언더플로우(Stack Underflow)가 ..

CS/자료구조 2023.01.09

[자료구조] Array vs ArrayList vs LinkedList

세 자료구조를 한 문장으로 정의하면 아래와 같이 말할 수 있다. Array는 index로 빠르게 값을 찾는 것이 가능하다. ArrayList는 데이터를 찾는데 빠르지만, 삽입 및 삭제가 느리다. LinkedList는 데이터의 삽입 및 삭제가 빠르다. ArrayList vs LinkedList 차이 ArrayList는 데이터들이 순서대로 늘어선 배열의 형식을 취하고 있지만, LinkedList는 자료의 주소값으로 서로 연결된 형식을 가지고 있다. 이러한 구조에 의해 둘은 각각의 장단점을 가지고 있다. ArrayList 원하는 데이터에 무작위로 접근할 수 있다. 리스트의 크기가 제한되어 있으며, 리스트의 크기를 재조정하는 것은 많은 연산이 필요하다. 데이터의 추가 / 삭제를 위해서는 임시 배열을 생성하여 복..

CS/자료구조 2023.01.07

[Network] OSI 7 계층 & TCP/IP 4 계층

OSI 7 계층이란? 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 7 계층은 왜 나눌까? 통신이 일어나는 과정을 단계별로 알 수 있고, 네트워크 관리자는 어떤 문제의 원인이 어디에 있는지 범위를 좁힐 수 있다. 특정한 곳에 이상이 생기면 다른 단계를 건들이지 않고도 그 단계만 수정할 수 있기 때문 7계층 – 응용 계층(Application) HTTP, FTP, DNS 등 디핑 소스 비유를 확장하면, 응용 계층은 가장 위에 있다. 사용자에게 보이는 부분이다. OSI 모형에서는 "최종 사용자에게 가장 가까운" 계층이다. 7계층에서 작동하는 응용프로그램은 사용자와 직접적으로 상호작용한다. 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 사용자 인터페이스, 전..

CS/Network 2023.01.07

[Database] SQL과 NOSQL의 차이

기본적으로 두 기술의 가장 큰 차이점은 SQL은 관계형 데이터베이스이고, NoSQL은 비관계형 데이터베이스이다. 보통 Spring에서 개발할 때는 MySQL을, Node.js에서는 MongoDB를 주로 사용했을 것이다. 하지만 그냥 단순히 프레임워크에 따라 결정하는 것이 아니다. 프로젝트를 진행하기에 앞서 적합한 데이터베이스를 택해야 한다. 차이점을 알아보자. SQL (관계형 DB) SQL을 사용하면 RDBMS(관계형 DB 관리 시스템)에서 데이터를 저장, 수정, 삭제 및 검색할 수 있다. 주로 데이터의 다양한 엔티티와 변수 간의 관계가 있는 구조화된 데이터를 관리하는 데 사용된다. 관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. 데이터는 ..

CS/Database 2023.01.05

[Database] SQL Injection

SQL Injection이란? 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 ※ 인젝션 공격은 OWASP Top10 중 첫 번째에 속해 있으며, 공격이 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격 (OWASP이란? → 보안 취약점 등을 연구하고, 10대 웹 애플리케이션의 취약점(OWASP TOP 10)을 발표) 왜 발생할까? 웹 어플리케이션은 User의 행동(클릭, 입력 등)에 따라 DB에 있는 데이터를 서로 다르게 표시한다. 이를 위해 Query는 User가 입력한 데이터를 포함하여 Dynamic하게 변하므로 개발자가 의도하지 않은 정보를 열람할 수 있게 된다. 주로 어떨 때 발생할..

CS/Database 2023.01.04