네트워크 15

사용자(클라이언트)를 식별하는 네트워크 헤더

네트워크 헤더 사용자(클라이언트)가 접속한 기기(Web, Mobile 등), 아이피, 프로토콜 등 사용자를 식별할 수 있는 데이터가 담겨있다. 종류 Host 반드시 하나가 존재해야 하며 포트를 포함한 도메인 이름을 나타낸다. User Agent 브라우저 또는 다른 HTTP 클라이언트가 서버에게 자신을 식별할 수 있는 정보를 전달하는 HTTP 헤더 중 하나다. 해당 헤더는 클라이언트의 소프트웨어 또는 브라우저, 운영 체제 등의 정보가 담겨있다. 서버는 해당 헤더의 담겨있는 정보를 통해 클라이언트의 브라우저가 호환되지 않는다면 대체 콘텐츠를 제공하거나 페이지를 다르게 렌더링 할 수 있다. 식별 정보 브라우저 종류(Chrome, Safari, IE 등)와 버전 운영 체제(Windows, MacOS, Linux..

네트워크 2023.10.10

webRTC

webRTC webRTC(Web Real Time Communication)이란 웹 브라우저에서 실시간 커뮤니케이션을 가능하게 해주는 기술이다. 구글에서 개발되었으며 Client의 브라우저가 서로 연결됨으로써 별도의 서버를 경유하지 않고 데이터를 송수신 할 수 있다. 자바스크립트 API의 조합인 webRTC는 P2P(Peer To Peer Connection) 연결 방식을 사용한다. 핵심 API P2P 기존의 서버와 클라이언트가 데이터를 송수신하는 과정과는 본질적으로 다른 구조를 가지고 있다. 중앙 서버 없이 관련 프로그램에 접속돼있는 단말 또는 사용자들끼리 실시간으로 데이터를 공유할 수 있는 연결 방식이다. 구현 방식 하이브리드 (Hybrid) 기존 서버와 클라이언트의 구조와 동일하다. 중앙 서버가 존..

네트워크 2022.12.01

동기와 비동기 블로킹과 논 블로킹

자바스크립트는 싱글 스레드 기반 언어다. 이론적으로 여러 작업을 동시에 처리할 수 없으며 하나의 콜 스택과 실행 컨텍스트를 가진다. 한 번에 하나의 코드만 실행할 수 있으며 만약 브라우저에서 사용자의 요청을 모두 동기 방식으로 처리하면 어떨까. 하나의 작업이 실행되어 완료되는 시점까지 다른 그 어떤 작업도 실행될 수 없으므로 말이 안 된다. 자바스크립트가 싱글 스레드임에도 논 블로킹 비동기 작업이 가능한 이유는 이벤트 루프다. 이벤트 루프와 밀접하게 연관돼있는 동기와 비동기 블로킹과 논 블로킹을 포스팅해보자! 동기와 비동기 블로킹과 논 블로킹 보통 동기/블로킹 & 비동기 논/ 블로킹으로 많이 알려져있지만 각각의 단어가 의미하는 내용이 다르므로 명확히 짚고넘어간다. 동기/비동기: 프로세스 실행 순서 보장에..

네트워크 2022.11.02

OSI 7 Layer

OSI 7 Layer 네트워크 통신의 각 과정을 계층별로 개념화한 모델이다. 각 계층의 구간별로 데이터의 움직임을 알 수 있으며 장치 간의 데이터 통신을 설명하는데 유용하게 활용된다. 등장 배경 초기 OSI 모델은 업체가 다를 경우 통신 장비의 호환이 불가능하였다. 이에 따라 여러 통신 업체 간 장비들의 호환성이 필요해 등장하게 되었다. 통신 과정에서 오류가 발생할 경우 특정 계층에서 이상이 생길 경우 해당 단계의 하드웨어나 소프트웨어를 고쳐 문제를 해결할 수 있다. 역할 7개 층으로 구성되어 있으며 각 계층마다 수행하는 역할이 다르다. 프로토콜 물리 데이터 링크 네트워크 전송 세션 표현 응용 X Ethernet Token Ring IP ARP ICMP TCP UDP NetBIOS SSH TLS ASCI..

네트워크 2022.10.09

URI URL

URI Uniform Resource Identifier의 약자로 네트워크 상의 자원을 나타내는 통합 자원 식별자이다. Identifier은 식별자의 의미로 고유해야 한다. 네트워크 상의 겹치지 않는 고유한 id URL Uniform Resource Locator의 약자로 네트워크 상의 웹 자원에 위치를 지정하는 웹 자원에 대한 참조이다. 네트워크 상 자원의 위치를 나타내는 주소 > 차이 URI는 URL을 포함하는 상위 개념이다. > 구분 1. https://example.io https://example.io 라는 서버를 의미하므로 URL이면서 URI 2. https://example.io/images example.io 서버의 images라는 네트워크 상의 자원의 위치를 의미하므로 URL이면서 URI..

네트워크 2022.10.05

JWT

Jwt JWT(Json Web Token)이란 정보 수/발신자 간 정보를 JSON 객체로 안전하게 전송하기 위한 방법을 정의하는 개방형 표준(FC 7519)이다. 이 토큰은 서명되어 있으며 확인과 신뢰가 가능하다. 거의 모든 프로그래밍 언어에서 지원되며 자가 수용적이며 쉽게 전달될 수 있다. 자가 수용적(Self-contained) 특징 JWT는 필요한 정보를 자체적으로 지니고 있다. 발급된 토큰은 토큰에 대한 기본 정보와 전달할 정보(사용자 정보) 그리고 신뢰할 수 있는 토큰이라는 걸 의미하는 시그니처를 포함하고 있다. 웹 서버의 경우 토큰 전달 방법은 HTTP 헤더에 넣을 수도 있고 URL 파라미터(쿼리 스트링)로도 넣을 수 있다. 보통 헤더에 넣는 방법만 사용해왔었는데 최근 진행했던 프로젝트를 통해..

네트워크 2022.09.25

Dto Repository Architecture

Dto 계층 간 데이터 교환을 위한 객체(Data Transfer Object)를 의미한다. 일반적인 Dto는 로직을 갖고 있지 않으며 순수한 데이터 객체 형태로 존재한다. 프로젝트 진행 전 올바른 Dto의 설계는 필수조건이다. Dto 설계란 도메인에서 필요한 데이터값 들을 객체화시키고 어떤 타입의 데이터로 정의하는지에 대한 의미로 해석하면 될 거 같다. 다음은 효과적인 Dto 사용을 위해 준수해야할 사항이다. 상용구 코드 최소화를 최소화해야 함(코드를 일일이 새로 작성하므로) 작성이 용이해야 함 작성이 어려울 정도로 복잡해서는 안 됨 누구든지 코드 구문을 분석할 수 있어야 함 간단한 회원가입 앤드 포인트 router.post("/create", new UserController().createUser)..

네트워크 2022.08.31

Nginx

Nginx 경량 웹 서버이다. 경량 의미 그대로 매우 가벼우며 적은 자원의 사용으로 최상의 퍼포먼스를 목표로 만들어졌다. 클라이언트의 요청으로부터 정적 리소스를 응답해 주는 웹 서버로 활용될 수 있으며 Reverse Proxy Server로 설정하여 WAS 서버의 부하를 분산하는 로드밸런서로 활용할 수 있다. Web server HTTP 프로토콜을 기반으로 작동하는 서버이다. WAS 서버의 부하가 몰릴 경우 WAS 서버 앞단에 웹 서버를 두어 정적 리소스는 웹 서버가 처리하고 서비스 로직과 같은 동적 작업은 WAS가 담당하여 WAS 서버의 부하를 줄일 수 있다. 정적 리소스 제공 Reverse Proxy Server(로드밸런싱) 메일 서버 WAS 서버 장애 발생 시 웹 서버에서 별도의 화면 처리 가능 대..

네트워크 2022.08.11

쿠키와 세션

등장 배경 쿠키와 세션은 HTTP 프로토콜 특성의 한계점을 보완하기 위해 등장했다. 서버와 클라이언트가 데이터를 송/수신하는 동안 상태를 저장하지 않는 무상태성(Statusless)과 서버의 응답이 종료되면 클라이언트와의 연결을 끊는 비연결성(Connectionless)이 그러하다. 하지만 웹의 발전으로 요청과 응답간의 상태가 유지(로그인) 되어야 할 필요가 생겼다. 쿠키 브라우저 접속 시 생성되는 정보를 담은 임시 파일이다. 서버가 사용자의 정보를 브라우저에 저장하는 데이터를 의미하며 Key와 Value로 구성된 문자열(String)이다. 사용자가 서버로 요청을 보내면 요청안에 쿠키가 포함되어 있으므로 서버는 이 쿠키를 통해 사용자를 식별한다. 브라우저마다 저장되는 쿠키가 다름 크롬 브라우저의 쿠키와 ..

네트워크 2022.08.04

로드밸런서

로드밸런서 서버에 가해지는 부하(로드)를 분산(밸런스) 해주는 장치 또는 기술을 의미한다. 서버와 클라이언트 사이에 위치하고 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각 서버가 최적의 퍼포먼스를 낼 수 있도록 한다. 로드밸런서를 제대로 이해하기 위해서 Scale-up과 Scale-out을 이해해야 한다. Scale-up 물리적 장비 하드웨어를 통해 서버 성능을 향상시킨다. Scale-out 기존과 동일하거나 성능이 조금 낮은 서버를 2대 이상 증설하여 운영한다. 로드밸런싱 알고리즘 2대 이상의 서버를 증설하는 Scale-out 방식을 사용하면 하나의 서버에 트래픽이 몰리지 않도록 분배하는 로드밸런싱을 해야 한다. 로드밸런싱 알고리즘의 종류는 대표적으로 5가지가 존재한다. 1. 라운드로빈 현..

네트워크 2022.08.03