CS/네트워크
-
[네트워크] NettyCS/네트워크 2021. 4. 22. 19:07
Netty? 프로토콜 서버, 클라이언트 등 네트워크 애플리케이션 개발을 쉽고 빠르게 하기 위한 NIO 클라이언트-서버 프레임워크이다. 기존 자바 소켓 라이브러리 블로킹 함수 새로운 클라이언트 Socket마다 새로운 Thread를 할당해야 함 단점? 여러 Thread가 입출력 데이터가 들어오기를 무한정 대기 → 리소스 낭비 많은 수의 Thread가 필요하고 컨텍스트 스위칭이 잦아 오버헤드 발생 자바 NIO (Non-Blocking Input Output) 네트워크 리소스 사용률을 세부적으로 제어하는 Non-Blocking 호출이 포함한다. (비동기적 네트워크 통신) 시스템의 이벤트 통지 API를 통해 논 블로킹 소켓을 등록하면 해당 소켓의 정보를 확인 할 수 있다. Selector에 하나 이상의 채널을 등..
-
[네트워크] gRPCCS/네트워크 2021. 4. 22. 19:06
RPC란? Remote Procedure Call의 약자로 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술 gRPC란? google의 마이크로서비스에서 사용하던 단일 범용 RPC 인프라 Stubby에서 시작 gRPC의 장점 높은 생산성과 효율적인 유지보수 IDL(Identity Definition Lanuage)로 protocol buffers(protobuf)를 사용 IDL만 정의하면 높은 성능을 보장하는 서비스와 메세지에 대한 소스코드가 각 언어에 맞게 자동 생성 다양한 언어와 플랫폼 지원 높은 메세지 압축률과 성능 gRPC는 내부적으로 HTTP/2를 사용하여 헤더의 압축률이 높고 protobuf에 의해 통신 시점에서 바이너리 데이터로 통신하기 때문에 데이터 사이즈가 작다
-
[네트워크] HTTP/2CS/네트워크 2021. 4. 22. 19:06
HTTP/1.1의 단점 TCP 기반 위에서 동작하는 프로토콜이기 때문에 신뢰성 확보를 위해 연결을 맺고 끊는 핸드 셰이크가 이루어진다. HTTP는 비연결성 프로토콜이기 때문에 한 번의 요청과 응답이 끝나면 연결을 끊어 버린다. 핸드 셰이크 오버헤드 극복? Keep-alive 기능 추가 한 번 맺어졌던 연결을 끊지 않고 지속적으로 유지 파이브라이닝 하나의 커넥션에서 한 번에 순차적으로 여러 요청을 연속적으로 하고 그 순서에 맞춰 응답을 받는 방식으로 지연 시간을 줄이는 방법 HOL(Head Of Line) Blocking 이슈 발생 먼저 받은 요청이 끝나지 않으면 그 뒤의 요청이 끝났더라도 기다려야 하는 이슈 HTTP/2 바이너리 프레이밍 계층을 이용해 요청과 응답의 멀티플렉싱을 지원 (양방향 스트림 통신..
-
[네트워크] Sticky SessionCS/네트워크 2021. 4. 22. 17:55
로드 밸런싱 대용량 트래픽을 장애 없이 처리하기 위해 여러 대의 서버에 적절히 트래픽을 분배하는 것 라운드로빈 방식 (Round Robin Method) 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식 가중 라운드로빈 방식 (Weighted Round Robin Method) 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분합니다. IP 해시 방식 (IP Hash Method) 클라이언트의 IP 주소를 특정 서버에 매핑하여 요청을 처리하는 방식 IP 주소를 해싱해 로드를 분산하기 때문에 동일한 서버로 연결되는 것을 보장한다. 최소 연결 방식 (Least Connection Method) 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을..
-
[네트워크] OSGI 7 계층CS/네트워크 2021. 4. 5. 01:06
물리 계층 (Physical layer) 상위 계층에서 전달받은 데이터를 하드웨어에서 하드웨어로, 다른 장비에 전기적 신호를 전송하는 역할 데이터 링크 계층 (Data link layer) 두 포인트 간의 신뢰성 있는 전송을 보장하기 위한 계층 비트의 형태로 전송한 데이터를 받는 계층 물리 계층에서 발생할 수 있는 오류를 찾아 수정하는 역할 (오류 수정) 네트워크 계층 (Network layer) 라우팅(routing)을 포함한 패킷 포워딩을 담당하는 계층 전송 계층 (Transport layer) 실 사용자(end-to-end)가 신뢰성 있는 데이터를 주고 받을 수 있도록 해주는 계층 TCP (연결지향, 신뢰성, 흐름 제어) 세션 계층 (Session layer) 응용 프로세스가 맺는 연결에 관한 것들..
-
[네트워크] URI와 웹 브라우저 요청 흐름CS/네트워크 2021. 4. 5. 01:04
웹브라우저에서 api 호출 시 동작 원리 URI (Uniform Resource Idendifier) URI 사람을 주민등록번호로 식별 할 수 있듯이 리소스를 식별 할 수 있는 식별자 (URL과 URN을 모두 포함하는 개념) Uniform : 리소스를 식별하는 통일된 방식 Resource : 자원, URI로 식별 할 수 있는 모든 것 (제한 없음) Identifier : 다른 항목과 구분하는데 필요한 정보 URL (Uniform Resource Locator) Locator : 리소스가 있는 위치를 지정 URN (Uniform Resource Name) Name : 리소스에 이름을 부여 URL 전체 문법 scheme://[userinfo@]host[:port][/path][?query][#fragment..
-
[네트워크] HTTPSCS/네트워크 2021. 4. 5. 01:03
HTTPS 동작 원리 HTTPS (Hyper Text Transfer Protocol over Secure Socket Layer)란? SSL (Secure Socket Layer)을 이용한 HTTP 통신 방법 SSL 사용 목적? 데이터를 암호화 통신하려는 상대를 보증 할 수 있음 SSL을 활용한 통신 절차 server hello 인증서에는 서비스 정보(인증서를 발급한 CA, 서비스 도메인, etc)와 public key가 들어있음 client 인증 client에는 믿을 수 있다고 판단한 CA 기관 목록을 가지고 있음 인증서가 CA에 의해서 발금된 것인지 확인? (전자서명) 클라이언트에 내장되어 있는 CA의 공개키로 인증서를 복호화 → 복호화 성공 시 클라이언트가 접속한 서버가 신뢰가 있는 서버임을 증명..