728x90

Base 58

L4, L7 스위치 정리

일단 둘 다 스위치이다. L4는 ip+port 로 구분해서 적절한 서버로 요청을 보낼 수 있다. L7은 ip+port+패킷의 url,쿠키 등의 정보 등도 체크해서 적절한 서버로 요청을 보낼 수 있다. 이로 인해 L7은 L4가 가지고 있는 기능들을 모두 수용하면서 불필요한 트래픽을 차단할 수 있다. ​ 스위치는 일반적으로 이중화 혹은 로드벨런싱 용도로 사용된다. 스위치 처리과정을 간단하게 정의하면 아래와 같다. 1. 사용자가 브라우저 주소창에 도메인을 입력하면 pc에 설정된 로컬 DNS 서버로 DNS Query를 한다. 2. 로컬 DNS 서버는 해당 도메인을 관리하는 DNS 서버에 다시 DNS Query 요청을 해서 해당 도메인 스위치의 vip주소를 획득한다. 3. 로컬 DNS서버는 브라우저에게 해당 도메..

Base/OS, Network 2021.04.02

Linux crontab

어떠한 작업을 일정주기로 반복적으로 수행하게 해준다. /usr/local/test.sh 라는 쉘파일이 있고 그걸 수행시킨다고 가정하고 정리한다. ​ 현재 등록되어 있는 crontab 을 확인하려면? crontab -l crontab 을 등록하려면? 아래와 같이 입력하면 수행할 명령을 입력할 수 있는 편집기가 호출된다. crontab -e 만약 수행할 작업이 root 권한이 필요한 작업이라면? sudo crontab -e 편집기를 반드시 vim으로 띄우고 싶다면? sudo EDITOR=vim crontab -e 만약 매시 30분 마다 test.sh 라는 쉘을 실행시키고 싶다면 아래와 같이 입력하고 저장하면 된다. /usr/local 이 PATH에 등록되어 있다면 그냥 test.sh 로 호출해도 된다. 30..

Base/OS, Network 2021.04.02

ssh-keygen

ssh키를 통한 인증을 할 경우 인증서버에 ssh공개키를 미리 알려줘야 한다. 이와 관련하여 가장 흔하게 접할 수 있는게 github 인데 로컬 PC에서 github 원격저장소의 소스를 내려 받기 위해서 checkout 명령을 수행할 때 github 입장에서는 checkout 명령을 보낸 클라이언트(로컬PC)를 인증해야 하는데 그 인증 수단으로 id/password 를 사용할 수도 있지만 이는 네트워크 패킷에 그대로 노출되는 문제가 있어 ssh 공개키 암호화 방식을 사용한다. 이때 github에 공개키를 등록해놓고 클라이언트는 개인키를 가지고 ssh 인증을 시도한다. ​ ssh키는 ssh-keygen 을 이용하면 되는데 ssh가 설치되어 있다면 기본적으로 함께 설치되어 있다. 기본적으로 아래와 같이 아무..

Base/OS, Network 2021.04.02

싱글쓰레드와 멀티쓰레드, 동기와 비동기

개념이 자꾸 헷갈려서 정리해 놓는다. ​ 싱글쓰레드 : 하나의 쓰레드로 일을 수행한다. 멀티쓰레드 : 다수의 쓰레드로 일을 수행한다. 동기 : 이전작업이 종료된 뒤에 다음 작업을 수행한다. 비동기 : 이전작업의 종료여부과 관계없이 다음 작업을 수행한다. ​ 써놓고보니 더 헷갈린다. 싱글쓰레드==동기, 멀티쓰레드==비동기 같은데 다들 아니라고 한다. 싱글쓰레드도 내부작업은 비동기로 할 수 있고, 멀티쓰레드도 내부작업은 동기로 할 수 있다. 싱글쓰레드, 멀티쓰레드는 단순히 일을 하는 사람이 몇명인지로 구분하고 동기, 비동기는 실제로 일을 어떤식으로 처리하는지로 구분한다. 에초에 연관지어서 생각하면 안된다. ​ 예를 내가 우체국 사장이라고 생각해보자. 아침에 우편배달을 업무를 시작하는데 집배원은 한명이라면 싱..

Base/개념정리 2021.04.02

32비트, 64비트 차이점?

컴퓨터는 모든 데이터를 2진수로 변환해서 처리한다. 2진수란 0, 1로만 구성된 숫자를 의미한다. 이때 하나의 자릿수가 1bit의 공간을 차지한다. ​ 2bit의 공간으로는 아래와 같은 데이터를 나타낼 수 있다. 00 01 10 11 ​ 3bit라면 아래와 같다. 000 001 010 011 100 101 110 111 ​ 4bit라면 아래와 같다. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 ​ nbit는 2^n까지의 정보를 나타낼 수 있으며 1bit가 증가할 때마다 정보량도 2배로 증가한다. 다르게 말하면 비트가 클수록 한번에 표현할 수 있는 정보도 커진다. 극단적으로 생각하자면 땅을 판다고 할 때 삽으..

Base/개념정리 2021.04.02

TCP/UDP 그리고 IP

TCP와 UDP는 둘 다 정보를 패킷 형태로 인터넷에서 전송할 때 쓰이는 프로토콜이다. IP(Internet Protocol) 위에 설계된 프로토콜로 IP주소가 있는 곳으로 정보를 전달하는데 그 방법으로 TCP와 UDP가 있는 것이다. ​ TCP는 데이터를 전송하기 전에 상대방이 준비가 되었는지 확인하고 준비가 되었을 때 별도의 소켓을 연결해서 전송을 시작한다. 또한 전송이 모두 끝났으면 잘 받았는지 확인하고 제대로 가지 않았다면 재전송을 시도한다. 이런 이유로 연결지향형 프로토콜이며 신뢰성 서비스라고도 부른다. 다만 TCP는 데이터를 전송할 때 패킷단위로 잘게 나눠서 전송을 하기 때문에 받는 쪽에서는 이를 다시 재조립하는 과정이 필요하다. ​ UDP는 TCP와 달리 상대방이 준비가 되었는지, 전송은 잘..

Base/개념정리 2021.04.02

HTTP1.0 , HTTP1.1, HTTP2.0

일단 http의 정의는 다음과 같다. 인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약이다. 하이퍼텍스트는 문서 중간중간에 특정 키워드를 두고 문자나 그림을 상호 유기적으로 결합하여 연결시킴으로써, 서로 다른 문서라 할지라도 하나의 문서인 것처럼 보이면서 참조하기 쉽도록 하는 방식을 의미한다. [네이버 지식백과] HTTP [hypertext transfer protocol] (두산백과) 여기에서 중요한 것은 하이퍼텍스트인데 처음부터 하이퍼텍스트가 제공 되었던 것은 아니고 초기에는 단순히 새로운 텍스트를 연결하는 링크만 제공할 뿐이었다. 그러다가 그림, 동영상 같은 미디어 결합이 추가되면서 서서히 발전해나갔고 그 과정 속에서 http1.0, http1.1, http2.0 ..

Base/개념정리 2021.04.02

페이로드(payload)

위키백과의 설명을 그대로 빌리자면 아래와 같다. 페이로드(영어: payload)는 사용에 있어서 전송되는 데이터를 뜻한다. 페이로드는 전송의 근본적인 목적이 되는 데이터의 일부분으로 그 데이터와 함께 전송되는 헤더와 메타데이터와 같은 데이터는 제외한다. restApi 를 기준으로 생각해보자면 request parameter 를 의미한다. 그 형태는 json 이 많이 사용된다.

Base/개념정리 2021.04.02

User-Agent

웹페이지 접속시에 접속한 기기가 어떤 정보를 가지고 있는지 확인할 수 있는데 그중 user agent 를 통해 어떤 브라우저( 익스플로러, 크롬, 사파리 등..)로 접속했는지 알 수 있다. ​ Servlet 를 사용하는 웹서버라면 request header 에서 아래와 같이 확인할 수 있다. String userAgent = request.getHeader("User-Agent") javascript 에서는 navigator 를 통해 아래와 같이 확인할 수 있다. var broswerInfo = navigator.userAgent; 간단하게 크롬브라우저에서 Console 창에서 아래와 같이 확인할 수 있다. ​ 이 값은 모바일에서 WebVnew 를 호출할때 임의로 변경할 수도 있다. 하지만 이를 활용하는..

Base/개념정리 2021.04.02

DAO와 Repository

둘은 모두 Persistence 을 구현하는 객체이다. Persistence는 한글로 표현하면 영속성이다. 그럼 영속성은 뭔가? 좀 더 익숙한 동의어로 표현하면 지속성을 의미한다. IT 기준에서 본다면 프로그램이 종료되어도 유지될 수 있는 데이터를 저장하는 것을 의미한다. 데이터베이스를 사용한다고 했을 때 프로그램상에서 데이터베이스와 통신하는 객체를 우리는 Repository 또는 DAO 라고 부른다. ​ 예전부터 뜻도 모르고 DAO 라는 객체를 만들어서 써왔는데 어느순간 Repository 라는 용어가 등장했다. 이렇게 비슷한 의미를 가진 용어가 등장하게 되면 패키지명, 클래스명, 변수명 등을 정할 때 바빠죽겠는데 불필요한 고통에 시달리게 된다. 이를 사전에 방지하고자 의미를 좀 더 명확하게 정리해보고..

Base/개념정리 2021.04.02
728x90