CS 31

[매일매일 CS] HTTPS에 대해

HTTP와 HTTPS의 차이점은 뭔가요? 라고 물으면 대부분은"HTTP에 암호화를 추가한게 HTTPS 입니다" 정도로 대답합니다. 이에 대해서 오늘 HTTP와 HTTPS의 차이에 대해서자세히 분석해보고, 차이를 확실히 알아가려 합니다. HTTP (Hypertext Transfer Protocol)는 웹에서 클라이언트와 서버 간의 통신을 위한 통신 규약입니다. 하지만1. HTTP는 암호화 되지 않는 평문 데이터를 전송하기 때문에, 제 3자가 정보를 조회할 수 있다는 위험이 있습니다.2. HTTP는 중간에 메세지가 변경되도 알 수가 없가 없으며,3. HTTP는 올바른 상대와 통신하고 있는지 알 수 없습니다. 즉 데이터의 기밀성, 데이터 완정성, 통신 상대 인증에서 보안적으로 취약한 문제가 발생할 수 ..

CS/Computer Network 2025.09.16

[매일매일 CS] WAS와 웹 서버의 차이점은 무엇인가요?

웹 서버는 정적 컨텐츠 (HTML,CSS,JS,이미지)를 제공하는 역할을 수행합니다.동적 컨텐츠 요청 시 요청을 WAS로 전달할 수도 있습니다. 대표적인 웹 서버로는 Apache, NginX 등이 있습니다. 반면, 자바 진영에서 WAS(Web Application Server)는 서블릿 컨테이너 기능을 제공하고,동적 컨텐츠를 생성하거나, 애플리케이션 로직을 실행하는 데 특화되어 있습니다. 대표적인 WAS로는 Tomcat이 있습니다. 즉 웹 서버는 정적 컨텐츠 제공에 특화되어 있으며, WAS는 동적인 컨텐츠 생성과 데이터 처리에 특화되어 있습니다. 그럼 WAS도 정적 컨텐츠를 제공할 수 있는데 웹 서버가 따로 필요한 이유는 무엇일까요 ? 🤔 WAS가 너무 많은 역할을 담당하면 과부하될 수 있습니..

CS/Computer Network 2025.09.15

[매일매일 CS] 공유 락 & 배타 락

DBMS에서 트랙잭션을 특별한 제어 없이 병행 수행을 허용하면 데이터의 일관상 & 무결성을 보장하기 어려울 수 있습니다.이때 병행 수행되는 트랜잭션들을 제어하기 위해서 락을 사용할 수 있으며 DBMS에서 락은 크게 공유 락과 배타 락으로 분류할 수 있습니다. 공유 락 ( Shared Lock ): 읽기 락이라고 부르며, 공유 락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유 락을 획득할 수 있지만, 배타 락은 획득할 수 없습니다. 즉 공유 락을 사용하면, 트랜잭션 내에서 조회한 데이터가 변경되지 않는다는 점을 보장합니다. SELECT * FROM table_name WHERE id = 1 FOR SHARE; 배타 락 ( Exclusive Lock ): 쓰기 락이라고 부르며, 배타 락이 걸린 ..

CS/필수지식 2025.09.08

[매일매일 CS] 얕은 복사와 깊은 복사에 대해

얕은 복사란 ? (Shallow Copy) : 객체 자체만 복사하고, 내부에 포함된 데이터는 그대로 같은 메모리 주소를 공유한다.에에 따라 원본과 복제본이 같은 하위 객체를 가리킴 (한쪽에서 데이터 수정하면 다른쪽도 영향을 받는다) 자바로 간단하게 예를 들어보면 class Address { String city; Address(String city) { this.city = city; } } class Person implements Cloneable { String name; Address address; Person(String name, Address address) { this.name = name; this.address = ..

CS/필수지식 2025.09.05

Nework Application Layer

Cookie HTTP 프로토콜은 stateless (상태 비저장) 이며, 서버는 클라이언트가 이전에 누구였는지 기억하지 못한다. 그래서 쿠키(cookie) 를 사용해서 사용자 상태를 식별하고, 세션을 유지한다. 쿠키는 서버가 생성하여 클라이언(브라우저)에 저장하는 작은 데이터 조각. Cookie 동작 과정 1. 클라이언트 → 서버 요청사용자가 브라우저로 amazon.com 접속 (HTTP request 보냄)2. 서버 → 클라이언트 응답 (쿠키 발급)서버가 유저를 구분하기 위해 ID를 생성 (예: 1678).HTTP response header에 Set-Cookie: 1678 을 넣어 전달.브라우저는 이 값을 로컬에 저장.3. 이후 요청 시 쿠키 전송클라이언트가 다시 Amazon 서버에 요청할 때,..

CS/Computer Network 2025.08.27

Network 기본

컴퓨터 네트워크는 3부분의 기본 프레임워크로 나뉘어서 설명할 수 있다. 1. Network Edge 구성 요소: Application, Hosts (즉, PC, 스마트폰, 서버 등)역할: 네트워크의 "끝단"에서 실제로 데이터를 생성하고 소비하는 주체client→ user (웹브라우저, 앱)server → 웹서버, 게임 서버, 스트리밍 서버 등즉, 네트워크 엣지는 "네트워크를 이용하는 당사자들"이 위치한 부분 2. Network Core 구성 요소: Routers 역할: 네트워크 엣지에서 온 데이터를 빠르고 효율적으로 목적지로 전달패킷 스위칭(packet switching) 기반경로 선택(routing) 알고리즘 사용네트워크 자체는 데이터를 이해하지 않으며, 단지 최적 경로로 전달하는 역할 (고속도..

CS/Computer Network 2025.08.27

Application Layer

OSI (Open Systems Interconnection): 네트워크 통신을 계층화해서 각 단계별로 역할을 나눠놓은 표준 모델 🔹 1계층 – 물리 계층 (Physical Layer) 0과 1의 비트 스트림을 전기적/광학적으로 전송케이블, 허브 등 물리적 장비장비: 허브, 리피터, 전선, 광케이블 🔹 2계층 – 데이터 링크 계층 (Data Link Layer) MAC 주소(랜카드에 박혀있는 주소) 기반으로 프레임 단위 전송같은 네트워크 내 장비들 간 통신오류 감지, 흐름 제어장비: 스위치, 브리지 🔹 3계층 – 네트워크 계층 (Network Layer) IP 주소 기반으로 라우팅목적지까지의 경로 설정패킷 단위 전송프로토콜: IP, ICMP, IGMP장비: 라우터 🔹 4계층 – 전송 계층 (..

CS/Computer Network 2025.08.04

인증(Authentication) 기본 개념 (Spring boot / Flask

Flask와 Spring boot 프로젝트를 진행하면서 회원가입/로그인 및 인증부분은 프로젝트 완성도 면에서 중요하다고 생각되어 이번기회에 이부분에 대해서 실제 서비스에서 사용되는 로직과 가깝게 구현할 수 있도록 공부를 진행중이다.  인증(Authentication) 기본 개념인증이란?👉 “이 사용자가 누구인지 증명하는 과정”(예: 로그인 → 사용자 정보를 확인하고 ‘누군지’ 알아내는 것) Authentication로그인처럼 "이 사람이 누군가?" 증명Authorization권한 검사 (예: 관리자인가 ??)Session서버에 저장하는 로그인 정보JWT (Token)클라이언트에 저장하는 로그인 정보 (stateless)OAuth2소셜 로그인 방식 (카카오, 네이버, 구글 등)HttpOnly 쿠키보안 강..

CS/필수지식 2025.04.10

Compiled language vs Interpreted language

오늘 회사에서 팀장님이 OJT 를 해주시는데, C, C++, Java. / Python, Javascript 의 차이에 대해서 물어보셨다. 다 아는 언어들인데, 막상 두가지 차이에 대해 답하려니까 쉽지가 않았다. 뭔가 strict한 언어와 유연한 언어로 나뉜거 같기도 하고, 또 C가 묶여있는 것을 보니 객체지향 절차지향으로 나뉜거 같지는 않고,,, 결국 답을 못했고, 이 둘의 차이는 컴파일언어와 인터프리트 언어이다. 컴파일 언어란, 소스코드 전체를 기계어로 번역한 후(컴파일) 이 기계어를 cpu를 통해 실행하는 방식으로 동작한다. 반대로 인터프리트 언어는, 소스 코드를 컴파일 하지 않고, 인터프리터를 통해 한줄 씨 번역하며 실행하는 방식으로 동작한다. 컴파일 언어의 경우, 실행 시에는 실행만 하면 되므로..

CS/필수지식 2022.06.21

공주 구하기 (덱, 큐 )

큐 관련해서 쉬운 문제인데, 분명 유명한 테이블 문제인데 이름이 생각이 안난다... 무슨... 용어가 있는데 이름이 생각이 안나서 너무 괴로운 문제였다. 여튼 문제 풀이는 간단하다. 명수만큼 덱에 넣어준 뒤, while 문을 덱 안에 마지막 한 사람만이 남을 때 까지 돌려준다. 그리고 경우를 cnt로 추적하며, 이 cnt가 K의 배수가 될 때는 이를 리스트에서 삭제시키고, (popleft()) 그 외 나머지 경우네는 popleft()를 해서 그대로 다시 오른쪽에 append 시키고, 이 반복문을 계속하다보면 최후의 왕자가 남게된다. import sysfrom collections import deque#sys.stdin=open("input.txt", 'rt')N, K = map(int, input()...