본문 바로가기

전체 글138

시스템 콜(System Call) 시스템 콜(System call)이란?응용 프로그램 요청에 따라서 운영체제의 커널 서비스를 받기 위한 일종의 함수 호출을 의미한다. 즉 커널 영역의 기능을 사용자 모드에서 사용 가능하게 하며, 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다. Library Functions (시스템 콜을 호출)종류 : printf(), scanf(), fopen(), fclose(), gets(), puts(), getw(), fread(), fseek()System Calls (커널 함수로도 불림)종류 : open(), create(), close(), read(), write(), lseek(), unlink() 운영체제는 I/O 입출력 장치를 보호하기 위해 두 가지 모드로 구동된다... 2024. 12. 26.
JWT (JSON Web Token) JWT란JSON 객체를 이용해 당사자 간에 안전하게 정보를 전송하기 위해 만들어진 것으로, 인증에 필요한 정보를 암호화하여 담은 토큰을 의미한다. JWT의 구성 요소 Header{ "alg": "HS256", "typ": "JWT"}헤더는 서명 알고리즘의 종류(HMAC SHA256 또는 RSA)와 토큰 유형이 담겨져 있다. Payload{ "sub": "1234567890", "name": "hyeon", "iat": 1516239022}클레임(전달하려는 정보)이 담겨져 있는 부분으로 시스템에서 실제로 사용되는 정보에 대한 내용을 의미한다.이 부분은 수정이 가능하고 노출이 가능하므로 ID와 비밀번호와 같은 개인 정보가 아닌 토큰의 만료 기간이나 발급 시간 등을 담아야 한다.추가로 Payload에.. 2024. 12. 26.
포트(Port) 포트포트란 IP 내에서 프로세스를 구분하기 위해 사용하는 번호로 16비트의 논리적 할당(65,536개)이다. IP 주소가 어떤 PC인지 구분한다면 포트번호는 해당 PC에서 접속할 수 있는 통로(채널)을 의미한다. 포트번호는 잘 알려진 포트(0번~1023번), 알려진 포트(1024번~49151번), 동적 포트(49152번~65535번)으로 나누어져 있다. 잘 알려진 포트 : 어떤 특권을 가진 서비스에 의해서 사용될 수 있도록 이미 예약된 번호를 의미한다.알려진 포트 : 서버 소켓으로 사용하는 포트이다.동적 포트 : 매번 접속 시 포트번호가 동적으로 부여된다.잘 알려진 포트 목록 :FTP : 21번SSH : 22번TELNET : 23번DNS : 53번HTTP : 80번HTTPS : 443번 2024. 12. 26.
문자 집합(Character Set) 컴퓨터는 사람이 일반적으로 사용하는 10진수 숫자를 어떻게 저장할까?예를 들어 50이라는 숫자를 메모리에 저장한다고 하면 컴퓨터는 2진수로 (110010) 바꿔서 저장을 하게 된다.왜냐하면 컴퓨터는 0, 1 중 하나만 담을 수 있는 비트라는 최소 단위를 가지고 정보를 처리하기 때문이다.(메모리는 작은 전자 스위치인 트랜지스터로 이루어져 있는데 전기가 흐르거나, 흐르지 않는 상태로 0, 1 표현) 그렇다면 지금 사용하고 있는 한글, 영어 등의 문자는 어떻게 컴퓨터가 받아들일까?사람들은 문자나 기호를 컴퓨터에서 사용할 수 있도록 집합을 정의하였는데 이를 문자 집합이라고 한다.즉 문자의 경우 이 집합에 정의된 내용에 따라 숫자로 변환하고 이를 2진수로 바꾸어서 저장하는 것이다.문자 인코딩 → 문자나 기호를 컴.. 2024. 12. 26.
[네트워크] IP, TCP, UDP 네트워크란?상호 연결되어있는 사람들이나 사물들로 이루어진 그룹이나 시스템으로 사람이나 사물을 점으로 표시하고 그들 간의 관계를 선으로 표시한 것을 의미한다.즉 컴퓨터 네트워크란 컴퓨터(점)들이 랜선(선)으로 연결되어 있는 시스템을 뜻한다.인터넷이란?네트워크들의 연결이라는 의미로 연결되지 않은 고립된 네트워크(내부망) 역시 존재한다.IP (Internet Protocol)네트워크를 연결할 때 원활한 통신을 위해 정한 프로토콜(규약)을 의미한다.OSI 7계층 중 3계층에 해당하며, 지정한 IP 주소에 데이터를 패킷 단위로 나누어서 전송하고, 지정된 받는 과정을 통해 인터넷 상의 다양한 기기들과 통신할 수 있다.이러한 IP 프로토콜은 비연결성과 비신뢰성의 특징을 지닌다.비연결성 : 송신자와 수신자가 서로 연결.. 2024. 12. 26.
웹 브라우저 요청 흐름과 DNS 만약 우리가 구글에 hello를 검색한다면 어떤 일이 발생할까?요약하자면 다음과 같은 순서로 요청이 실행된다.웹 브라우저에 URL을 입력한다. (https://www.google.com/search?q=hello)DNS 서버에서 해당 도메인 이름으로 IP를 얻어오고 port 번호의 경우 생략되어 있다면 http(80), https(443)으로 지정IP, Port 번호로 HTTP 요청 메세지를 생성소켓 라이브러리를 통해 OS로 전달TCP / IP 계층에서 헤더 부분에 IP, Port를 넣어 3 way handshake 과정을 통해 클라이언트와 서버 간에 논리적인 연결을 함연결이 완료되면 생성된 HTTP 요청 메세지를 TCP 세그먼트 단위로 나누어서 TCP / IP 계층에 전달IP 계층에서 해당 TCP 세그.. 2024. 12. 26.
[Design Pattern] 데코레이터 패턴 데코레이터 패턴이란 런타임 시점에 객체에 동적으로 새로운 기능을 추가할 수 있게 해주는 디자인 패턴으로,서브클래스를 만들지 않고 객체의 결합을 통해 기능을 확장할 수 있다.데코레이터 패턴 구조 Component기본 기능을 정의하는 인터페이스데코레이터와 실제 객체(ConcreteComponent)가 구현해야 하는 공통 인터페이스 역할을 한다.public interface Component { String operation();} ConcreteComponent기본 기능을 제공하는 실제 객체데코레이터가 해당 객체를 감싸서 추가 기능을 제공public class ConcreteComponent implements Component { @Override public String operation() { Sys.. 2024. 12. 26.
[Design Pattern] 프록시 패턴 프록시란 대리자라는 의미로 클라이언트가 원본 객체를 이용하는 것이 아닌 대리자를 거쳐서 원본 객체에 접근하는 디자인 패턴이다.이렇게 중계 역할을 하는 프록시 객체가 되려면, 클라이언트는 원본 객체에게 요청을 한 것인지, 프록시에게 요청을 한 것인지 몰라야 한다.따라서 프록시는 원본 객체와 같은 인터페이스를 사용해서 구현하며, 이로 인해 대상 객체를 프록시로 변경해도 클라이언트 코드를 변경하지 않을 수 있다.프록시 패턴 구조 Subject (공통 인터페이스)실제 객체와 프록시 객체가 공통으로 구현해야 하는 인터페이스클라이언트는 해당 인터페이스를 통해 실제 객체와 프록시 객체를 동일하게 사용할 수 있다. public interface Subject { String operation();} RealSu.. 2024. 12. 26.
[Design Pattern] 템플릿 콜백 패턴 템플릿 콜백 패턴이란 템플릿과 콜백을 활용한 패턴으로 스프링 프레임워크에서 주로 사용하는 특별한 전략 패턴을 의미한다. (GOF 패턴이 아님) 템플릿 콜백 패턴은 주로 함수를 인자로 전달하여 변해야 할 부분을 외부로 위임하는 방식으로 구현한다.즉 런타임 시점에 익명 클래스 형태의 전략 알고리즘을 동적으로 주입한다.스프링의 자주 볼 수 있는 XxxTemplate 객체는 해당 패턴을 사용하여 구현하였다. 참고로 콜백이란 다른 함수의 인수로 전달되는 실행 가능한 코드로, 코드가 호출( call )은 되는데 코드를 넘겨준 곳의 뒤( back )에서 실행된다는 의미다.자바의 경우 콜백을 전달하려면 객체가 필요하다.따라서 자바8 이전에는 하나의 메소드를 가진 인터페이스(함수형 인터페이스)를 구현하고, 익명 내부 클.. 2024. 12. 25.