본문 바로가기

네트워크

(13)
[네트워크/개념] gRPC(remote procedure call) 목차1. grpc란 무엇인가2. grpc의 장점3. rpc의 핵심 목표4. 예제 코드5. 마치며  🤔 grpc란 무엇인가회사에서 grpc라는 개념을 접하면서 흥미를 가지게 되었다. 그래서 따로 시간을 내서 공부한 내용을 정리해보려한다. gRPC는 Google에서 개발한 고성능, 오픈소스 원격 프로시저 호출(Remote Procedure Call, RPC) 프레임워크입니다. 간단히 말해서, 네트워크를 통해 다른 서버의 함수를 마치 로컬 함수처럼 호출할 수 있게 해주는 기술입니다.  gRPC에 대한 정의는 위와 같다. Remote Procedure Call. 말그대로 서버에 작성된 함수(프로시저)를 클라에서 선언한 함수마냥 쓸수 있게 해주는 기술이다. 물론 실제로 서버의 코드를 클라에서 쓸수 있다는 이야기..
[Network] - 네트워크 계층 목차1. 들어가며2. 네트워크 계층?3. 네트워크 4계층4. 마치며     들어가며  네트워크 계층은 이전에 학교 수업시간에도 들었던 내용이지만 블로그에 따로 정리해놓은 글이 없어서 이번 기회에 정리를 해놓으려고 한다.    네트워크 계층?더보기  인터넷 protocol suite는 인터넷에서 정보(패킷)을 주고받는 일종의 규약인 프로토콜들의 집합이다. 가장 유명한 것이 OSI 7 layer, 그리고 TCP/IP 4계층 모델 두가지 이다. TCP/IP 4계층을 좀 더 세분화해서 설명하는 것이 OSI 7 layer이므로 결국 둘다 같은 개념을 설명하고 있다고 보면 된다.           OSI 7 layer에서는 애플리케이션 계층을 3개로 세분화하고 Network Access(data link) 계층을 ..
[Network] - 프록시(proxy) 목차 1. 프록시란? 2. Forward Proxy VS Reverse Proxy 3. 마치며 1. 프록시란 더보기 프록시 서버(proxy server)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. - 위키백과 위키백과에서는 프록시에 관해 위와같이 정의하였다. 즉 프록시는 인터넷상에서 대리자 역할을 하며 클라이언트와 서버 어느쪽에 붙는 지에 따라 Forward, Reverse 프록시로 구분된다. 2. Forward Proxy VS Reverse Proxy 더보기 앞서 언급하였듯이 프록시가 붙는 위치에 따라 Forward Proxy, Reverse Proxy로 구분된다. 먼저 Forward Proxy는 위의 그림과 같이..
[Network] - 로드 밸런싱(Load Balancing) 목차 1. 로드 밸런싱(LB) 이란? 2. ELB(Elastic Load Balancer) 3. Nginx란? 4. 마치며 1. 로드 밸런싱(LB) 이란? 더보기 로드 밸런싱(load balancing)은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. - 위키백과 위키백과에서는 로드 밸런싱에 대해 위와같이 정의하고 있다. 쉽게 이해하자면 서버 이용자가 많아짐에 따라 트래픽이 과부하되어 서버가 뻗는 것을 방지하기 위해 트래픽을 분산시키는 일련의 작업을 의미한다. 현재 시장에 나와있는 서비스들은 많은 수의 이용자들을 대상으로 개발되기 때문에 로드 밸런싱은 필수적으로 이루어진다고 볼 수 있다. 2. ELB(Elastic Lo..
[Network] - Java로 구현한 소켓 통신 서버(2) https://teachingforme.tistory.com/25 [Network] - Java로 구현한 소켓 통신 서버(1) 졸업 작품에서 모바일(안드로이드)과 메인 스테이션(데스크탑 컴퓨터)간의 통신을 구현해야해서 자바로 서버 코드를 작성하게 되었다. 그래서 한번 처음부터 끝까지 개발 일지 형식으로 글로 teachingforme.tistory.com 저번에 작성하였던 서버 코드를 대거 수정하였다. 지난 번에 작성하였던 서버 코드는 blocking synchronous 방식으로 짜여진 코드로, 클라이언트가 접속할 때마다 쓰레드를 하나씩 늘리는 방식이다. 구현은 쉽지만 클라이언트가 접속할 때마다 쓰레드를 하나씩 늘린다는건 정말 비효율적이고 한계가 뚜렷한 방식이기 때문에 아쉬움이 많이 남았고 이번에 시간을..
[Network] - Overlapped IO vs Nonblocking IO 흔히 IOCP서버에 대해 공부하다보면 Overlapped IO라는 개념에 대해 먼저 공부하게 된다. 개념 자체는 직관적이나 이전에 알고 있었던 Nonblocking IO(비동기 입출력)과 다른 것이 없는 데 자료마다 부르는 이름이 달라지는 것 같아 혼란이 와서 이 글에 정리 하려고 한다. 먼저 Overlapped IO라는 것은 입출력이 중첩되는 상황을 말하는데, 그림으로 보자면 아래와 같다. 중첩된 입출력이란 대상에 대해 입출력 작업이 진행되는 와중에 다른 입출력 작업을 진행되는 경우로 위와 같은 상황을 말한다. Overlapped IO라는 것은 따라서 비동기 작업을 기본 전제로 한다. 즉 이런 중첩된 입출력을 위해서는 기본적으로 비동기 방식으로 동작해야 한다는 것이다. 그럼 여기서 한 가지 의문이 드는..
[Network] - Session 네트워크를 배우면서 Session이란 용어가 자주 나오는데, 정확한 의미를 알 수가 없어서 조금 알아보았다. session명사 1.(의회·회의가) 개회 중임; (법정이) 개정 중임; (거래소의) 개장, 입회go into session개회하다 2.회의, 회합 3.(의회의) 회기, 개회기, 개정기 a long session 긴 회기 영단어로써의 의미는 위와 같지만 네트워크 통신 분야에서의 의미는 조금 다르다. 위키백과에는 아래와 같이 session이란 용어에대해 설명하였다. 세션(session)은컴퓨터 과학에서, 특히 네트워크 분야에서 반영구적이고 상호작용적인 정보 교환을 전제하는 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 송수신 연결상태를 의미하는 보안적인 다이얼로그(dialogue) 및 시간대를..
[Network] - Java로 구현한 소켓 통신 서버(1) 졸업 작품에서 모바일(안드로이드)과 메인 스테이션(데스크탑 컴퓨터)간의 통신을 구현해야해서 자바로 서버 코드를 작성하게 되었다. 그래서 한번 처음부터 끝까지 개발 일지 형식으로 글로 써서 기록으로 남기고자 한다. 코드 전체 구조는 이런 형식으로 되어 있다. 대체적으로 인프런의 Rookiss 강사님의 서버 강의를 수강하고 나름대로 재해석하여 만들었다. 다만 내가 강의의 모든 부분을 이해한 것이 아니고 언어(C#) 자체도 다르다(JAVA) 보니 완전히 같은 구조로 갈 수가 없었다. 따라서 모든 코드는 자바에 맞게 다시 작성하였고, 서버의 구조자체도 어느정도 변경이 필요하였다. 서버동작이 시작하게 되면 서버는 3개의 Listener 객체를 생성하여 클라이언트의 접속을 기다린다. Listener의 개수를 늘릴 ..