전체 글

전체 글

    방화벽 설정

    iptables 패킷에 대한 동작은 위에서부터 차례로 각 규칭에 대해 검사하고 그 규칙과 일치하는 패킷에 대하여 타겟에 지정한 ACCEPT, DROP 등을 수행한다. 규칙이 일치하고 작업이 수행되면, 그 패킷은 해당 규칙의 결과에 따라 처리하고 체인에서 추가 규칙을 무시한다. 패킷이 체인의 모든 규칙과 매치하지 않아 규칙의 바닥에 도달하면 정해진 기본정책(policy)이 수행된다. 기본 정책은 policy ACCEPT, policy DROP 으로 설정할 수 있다. 일반적으로 기본 정책은 모든 패킷에 대해 DROP 설정하고 특별히 지정된 포트와 IP 주소 등에 대해 ACCEPT 를 수행하게 만든다. iptables 설정 1) 기본 설정 규칙에 명시되지 않은 패킷에 대한 처리를 어떻게 할 것 인지에 대한 기..

    MSA를 위한 L7 Proxy - Envoy proxy

    네트워크는 애플리케이션에 투명해야하며 장애가 발생했을 시 어디에서 문제가 발생했는지 쉽게 파악할 수 있어야한다. MSA 서비스들이 늘어나면서 서비스들이 네트워크를 통해 서로 통신해야했고 이러한 서비스에서 사용하는 핵심 네트워크 프로토콜은 HTTP, HTTP/2, gRPC, Kafka, MongoDB 등의 L7 프로토콜이다. L3, L4 기반의 프록시들로는 다양한 요건들을 처리하기 어려워졌고 그에 따라 L7 기능을 갖춘 프록시의 필요성이 부각되기 시작했다. Envoy Proxy 는 Serivice Mesh Architecture로 대표되는 Istio의 메인 프록시로 대형 MSA 의 단일 Application과 Service를 위해 설계된 고성능 분산 C++ 프록시이다. Lift 사에서 제작한 프로젝트로 (..

    Service Mesh Architecture & Istio

    Service Mesh Architecture & Istio

    MSA 시스템안에는 수십개의 Micro Service가 분리되어있고 동작하는 수백 ~ 수천개의 서비스 인스턴스들을 모니터링하고 로깅하고 관리해야한다. 또한 서비스간의 통신도 매우 복잡해진다. 이와 같은 프로그래밍 오버헤드를 낮추기 위해 나온 아키텍처가 바로 Service Mesh 이다. Service Mesh 기존 서비스 아키텍처에서의 호출이 직접 호출방식이었다면 service mesh에서의 호출은 서비스에 딸린 proxy끼리 이뤄지게 된다. 이는 서비스의 트래픽을 네트워크단에서 통제할 수 있게 하고 또한 Client 의 요구에 따라 Proxy단에서 라우팅 서비스도 가능하게 할 수 있다. 이런 다양한 기능을 수행하려면 기존의 TCP기반의 proxy로는 한계가 있다. 그래서 Service Mesh에서의 통..

    git manual

    git branch 생성 git checkout master # master 브랜치로 이동 git checkout -b feature/new-feature # 새로운 브랜치 생성 및 이동 git commit 취소 # 가장 최근의 커밋을 취소하고 변경 내용을 스테이징 영역으로 되돌림 git reset HEAD~1 # 이전 상태로 되돌리되 변경 내용은 보존 git reset --soft HEAD~1 git 강제 pull # 특정 파일만 checkout git checkout -- # 강제 pull git fetch --all git reset --hard origin/ # 로컬에서 추가한 파일 삭제 git clean -fd

    비동기 네트워크 서버 프레임워크 Vert.x 개념

    비동기 네트워크 서버 프레임워크 Vert.x 개념

    Tomcat은 HTTP 요청이 도착하면 요청이 처리될 때까지 요청을 대기열에 넣습니다. 이 대기열에 있는 요청들은 Thread Pool에 있는 스레드에게 할당되어 하나씩 처리됩니다. 각 스레드는 요청을 처리하고 작업이 완료되면 응답을 보낸 후 해당 요청에 대한 작업을 종료합니다. 작업이 완료된 스레드는 다시 스레드 풀로 돌아갑니다. Tomcat에서 동시에 처리할 수 있는 Connection수는 일반적으로 50~500개의 스레드가 적절합니다. 즉, 하나의 Tomcat 서버는 동시에 최대 500여개의 연결을 처리할 수 있습니다. 서비스의 규모와 요구 사항이 증가함에 따라, 수십만 또는 수백만 개의 동시 연결을 처리해야 할 필요가 있을 수 있습니다. 그러나 일반적인 WAS로는 이러한 요구를 충족하기 어렵습니다..

    IntelliJ IDEA Keymap, Code template, Debugging 정리

    KeyMap tab 닫기: ctrl + F4 project 창 선택: alt + 1 (esc로 돌아감) (space로 미리보기) editor 창 늘리기: ctrl + shift + f12 editor 창 이동: ctrl + e 새파일 생성: ctrl + alt + insert 사용처? 찾기: alt + f7 / ctrl + b (빠르게 찾기 그 코드로 이동함) 구현부 찾기: ctrl + shift + i 코드 생성: alt + insert Override : ctrl + o Implement: ctrl + i 터미널 창 선택: alt + f12 실행: ctrl + shift + f10 / shift + f10 종료: ctrl + f2 line 복사: ctrl + d line 삭제: ctrl + y par..

    [Linux System Programming] File System #3

    Linux File Structure 리눅스는 모든 게 다 파일로 이루어져있다. 파일 시스템을 이해하는 것은 파일 입출력 작업을 수행하고 리눅스/유닉스 시스템을 이해하는 데 시작점이라고 할 수 있다. System Call open read write close ioctl (device driver에 제어 정보 전달) Low-Level File Access 리눅스에선 기본적으로 3가지의 파일이 열려있고 각 파일을 id로 구분한다. 다음 3 파일은 운영체제가 시작되면서 바로 오픈된다. 0: standard input(stdin) 1: standard output(stdout) 2: standard error(stderr) write 사용법 man 2 write 1번 매뉴얼: 리눅스 명령어관련 2번 매뉴얼: ..

    [Linux System Programming] GCC 컴파일러 사용법 #2

    컴파일 과정 소스코드는 다음과 같은 과정으로 컴파일되어 실행파일이 된다. 전처리기(preprocessor): 소스코드의 주석제거, define을 치환하는 기능 컴파일러(compiler): 어셈블리 파일로 변환(어셈블리어는 CPU 명령어 조합으로 CPU에 의존적) 어셈블러(assembler): object 코드 파일로 변환. object 파일은 0과 1로 이루어진 바이너리 코드(아직 주소 정보가 확정되지 않음) 링커(linker): object 파일을 묶어 실행 코드 파일로 변환. 운영체제가 로딩할 수 있도록 주소 정보를 할당한 파일을 만들어 낸다.(링커는 운영체제에 의존적) GCC 명령어 명령창에서 gcc 매뉴얼을 확인해보자. GCC(1) GNU GCC(1) NAME gcc - GNU project C ..

    [Linux System Programming] vi cheat sheet #1

    전체 명령어 정리 입력모드 i 현재 커서 앞에 입력한다. a 현재 커서 뒤에 입력한다. o 커서가 위치한 행의 다음 행에 입력한다. I(대문자 i) 커서가 위치한 행의 첫 컬럼으로 이동하여 입력한다. A 커서가 위치한 행의 마지막 컬럼으로 이동하여 입력한다. O 커서가 위치한 행의 이전 행에 입력한다. 커서 이동 k 커서를 위로 이동한다. j 커서를 아래로 이동한다. h 커서를 왼쪽으로 이동한다. l 커서를 오른쪽으로 이동한다. ^ / O 커서를 현재 행의 처음으로 이동한다. $ 커서를 현재 행의 마지막으로 이동한다. - 커서를 한줄 위 처음으로 이동한다. + / Enter 커서를 다음 행의 처음으로 이동한다. H 커서를 화면의 맨 윗행으로 이동한다. M 커서를 화면의 중간 행으로 이동한다. L 커서를 ..

    [HardWare] HACKTHEBOX Debugging Interface  Write Up

    [HardWare] HACKTHEBOX Debugging Interface Write Up

    debugging_interface_signal.sal 파일이 제공됨 🔍 파일분석 로직 애널라이저에서 파일을 열면 아래와 같이 나온다. 확대하거나 축소할 수 있다. 우측의 1F 아이콘이 표시된 Analyzer 탭을 클릭한 다음 Async Serial을 클릭한다. 기본설정이 나오는데 아래와 같이 저장한다. 그래프를 보면 16진수 값의 브런치에 많은 프레이밍 오류가 있다는 것을 알 수 있다. 비동기 직렬 통신에 대한 정보를 기반으로 전송되는 각 데이터가 ASCII이고 시작 및 중지 비트가 있음을 알 수 있다. 따라서 우측상단에 햄버거 메뉴에서 ASCII로 변환한 다음 값을 확인해보자. 훨씬 더 읽기 쉬어진 것을 확인할 수 있다. 이제 프레이밍 오류를 해결할 차례이다. UART 등과 같은 신호는 병렬형태로 들..