Network 18

UTC(협정 세계시)에 대해 & 지역마다 다른 시간값의 대처

1. 개요 시간 관련된 개발을 하다보면 로컬과 서버의 시간이 맞지 않아서 문제가 발생하는 경우가 있다. 그러면 자연스레 UTC시간이라는것을 접하게 되는데, 이게 무엇인지 알아보자. 2. UTC(협정 세계시)란? UTC(Universal Time Coordinated) 는 국제적인 표준 시간의 기준으로 쓰이는 시각을 말한다. 1972년 1월 1일부터 시행된 국제 표준시로, 국제 사회가 사용하는 과학적 시간의 표준이다. 기존에 사용하던 평균태양시 기준의 그리니치 표준시(GMT)를 대체하여 사용하기 시작한 표준시이다. UTC에서 0시, 즉 기준점에 달하는 도시는 런던(영국) 이며, 이를 기준으로 +, -로 시간을 계산한다. 우리나라(대한민국)은 런던을 기준으로 +9시이다. 3. 지역마다 다른 시간값의 대처 위..

쿠키(Cookie), 세션(Session), 토큰(Token [JWT])에 대해

개요 웹 서비스를 운영하다보면 아래와 같이 자주 듣는 말들이 있다. "인증을 쿠키 방식으로 진행할게요" "세션 끊긴거 아닌가요?" "토큰이 없어서 인증이 안되는 것 같아요" 바로 쿠키, 세션, 토큰이라는 단어들이다. HTTP통신에서 이들이 등장한 이유와, 각각이 무엇을 의미하는지 한번 알아보고자 한다. 1. 쿠키, 세션, 토큰의 등장 이유 HTTP 통신은 요청(Request) -> 응답(Response) 이 종료되면 stateless(상태가 유지되지 않음)한 특징 때문에 연결을 끊는 처리 방식이다. 1. Connectionless 프로토콜(비연결 지향) 클라이언트가 서버에 요청을 했을 때, 요청에 맞는 응답을 보낸 후 연결을 끊는 처리 방식이다. 2. Stateless 프로토콜(상태정보 유지 안함) 클라..

Network 2023.02.10

NETCONF에 대해

1. NETCONF란? 1.1 NETCONF란 IETF NETCONF WG에서 표준화한 network management 프로토콜이다. (RFC 6241) 흔히 '프로토콜' 하면 7계층에 매핑되는 스택에 메시지 교환 절차 및 형식을 떠오르기 마련인데, NETCONF는 TCP/SSH 위에서 정의되는 응용 계층 프로토콜로 주로 xml 형식과 그 형식에 따른 동작에 대한 내용이 주가 된다. 1.2 NETCONF 의 구조 NETCONF layer 구조는 다음과 같다. 그림의 제일 오른쪽에 있는 example을 기준으로 설명하자면, 태그는 message 단위를 정위한다. 이외에 그 응답인 와 이벤트 발생 시 그 알림을 위한 이 있다. 그 내부의 는 message로 전달하고자 하는 동작의 종류를 정의한다. 다음의 ..

Network 2022.09.05

P2P와 P2MP의 차이

P2MP (Point-to-Multipoint) 무선 통신에서 Point-to-Multipoint 커뮤니케이션(P2MP, PTMP or PMP) 는 단일 위치에서 여러 위치로의 다중 경로를 제공하는 고유한 유형의 일대다 연결을 통해 수행되는 통신이다. P2MP의 경우 중앙 안테나 또는 안테나 배열이 여러 수신 안테나로 브로드캐스트하고 시스템은 양방향 트래픽 흐름을 허용하기 위해 주파수 분할 다중화 또는 시분할 다중화를 사용한다. 다음은 간단한 개략도이다. P2P (Point-to-Point) Point-to-Point (P2P)은 두 노드 또는 엔드포인트 간의 통신 연결을 의미한다. 두 장치는 양방향 트래픽 흐름을 허용하기 위해 주파수 분할 다중화 또는 시분할 다중화를 사용하여 통신한다. 고정 링크의 경..

SDN(Software-Defined Networking) 에 대해

1. SDN이란? 소프트웨어 정의 네트워킹 (Software-Defined Networking)은 네트워크 리소스를 최적화하고 변화하는 비즈니스 요구, 애플리케이션 및 트래픽에 신속하게 네트워크를 채택하는 데 도움이 되는 네트워크 가상화 및 컨테이너화에 대한 접근 방식이다. SDN은 네트워크의 제어와 데이터 평면을 분리하여 소프트웨어 프로그래밍 가능 인프라를 만드는 방식으로 작동한다. 이는 전용 하드웨어 디바이스(라우터 및 스위치)를 사용하여 네트워크 트래픽을 제어하는 기존 네트워크와는 차이가 있다. SDN은 가상 네트워크를 생성 및 제어하거나 소프트웨어가 포함된 기존 하드웨어 네트워크를 제어한다. 기존 네트워크 가상화 방식 SDN 차이점 하나의 물리적인 네트워크 내에서 다양한 가상 네트워크를 세분화하거..

Network 2022.07.15

[Node.js] socket.io를 이용한 실시간 채팅방 기능 구현하기

1. 개요 본 포스팅을 읽기 위한 기본 전제 사항은 다음과 같다. socket.io 라이브러리에 대한 기초 지식이 있다.(socket.io 기본 사용법은 이 포스팅 참고 ) 클라이언트 측 채팅방 UI구현은 NodeJS + React로 구현하였다. 본 포스팅은 socket.io 라이브러리를 중점적으로 살피기 위한 포스팅이므로, UI 구현 코드는 다루지 않는다. 채팅방 기능 구현에 정답은 없지만, 기능 구현을 위해 내가 사용했던 방법을 공유하고자 한다. 2. 서버 설정 2.1 socket key 상수 선언 const SOCKET_KEY_CHAT_FROM_CLIENT = "SOCKET_KEY_CHAT_FROM_CLIENT"; const SOCKET_KEY_CHAT_FROM_SERVER = "SOCKET_KEY..

Network/WebSocket 2022.06.21

직렬화(Serialization)에 대해

1. 직렬화(Serialization)란 무엇인가? 객체의 직렬화(Serialization)는 객체의 내용을 Byte 단위로 변환하여 파일 또는 네크워크를 통해서 스트림(송수신)이 가능하도록 하는 것을 의미한다. 반대로 Byte로 변환된 데이터를 다시 객체가 저장되었던 상태로 재 변환하는 기술을 역직렬화(Deserialization)라고 한다. [객체 전송의 단계] 직렬화된 객체를 바이트 단위로 분해한다. (이를 Marshalling이라고도 한다.) 직렬화 되어 분해된 데이터를 순서에 따라 전송한다. 전송 받은 데이터를 원래대로 복구한다. (이를 Unmarshalling이라고도 한다.) 2. 직렬화 & 역직렬화를 하는 이유? 자바의 I/O 처리는 정수, 문자열 바이트 단위의 처리만 지원했었다. 따라서 복..

CORS에러를 서버 우회 방법을 통해 해결

1. 개요 때는 웹사이트를 개발할 때의 일이였다. Tistory 블로그에 작성한 글을 크롤링하여서 웹사이트에 뿌려주고 싶은데, CORS에러가 발생하게 되었다. (CORS에 대해 알고자 한다면, 지난포스팅 참조) 웹사이트 상에서 직접적으로 axios 라이브러리를 통해 Tistory 게시글을 fetch하려고 하니, 당연하게도 origin이 달라서 브라우저에서 막는 것이었다. 그래서 해결하기 위한 방법 중 일종의 우회 서버를 두는 방식으로 해결을 하고자 하였고, 이에대해 오늘 포스팅 할 예정이다. 2. 서버 우회 환경 구축 아래 그림 중 서버 우회 환경을 구축하기 전의 흐름도는 아래의 좌측과 같고, 우회 서버를 거치는 방식은 우측과 같다. 좌측 방식은 Tistory글을 직접적으로 가져오려고 했지만, 우측 방식..

Network 2022.05.16

Serial 통신 한글깨짐 문제(Encoding 처리)

1. 개요 NodeJS의 Serialport라이브러리를 사용하여 Serial 통신을 통해 USB단자로 연결된 단말기 포트(COM)로 출력 데이터를 전송하였는데, 아래 사진과 같이 한글이 깨져서 출력되는 문제가 발생했었다. 이는 Javascript의 표준 내장 method charCodeAt 를 통해 Charactor의 UTF-16 code를 구해 배열에 담아서 넘겼었는데, 이러한 출력이 되었다. 그래서 UTF8 code로 인코딩하는 함수를 통해 배열에 담아 보냈는데도, 동일하게 깨져서 출력되었었다. 2. 해결 과정 .NET사이트를 탐색해보니 위의 사진과 같이 Windows desktop의 .NET Framework의 기본 속성은 시스템의 활성 코드 페이지를 가져오고, 이에 해당하는 Encoding 개체를..

[NodeJS] socket.io 웹 소켓 모듈 기본 사용법

# socket.io 모듈이란? socket.io는 웹소켓 통신 기능 구현시 필요한 다양한 편의 기능을 제공하는 모듈로, 웹소켓이 지원되지 않는 브라우저에서도 작동하도록 내부적으로 구현해준다. (ws 프로토콜이 지원되지 않는 경우, http 프로토콜로 반복적으로 서버와 통신하는 polling 방식을 이용한다.) 전체 샘플코드: https://github.com/Bumdayy/first_websocket 1. socket.io 모듈 설치 npm install socket.io 2. 서버 측 socket.io 설정 작업 1) http 서버 생성 const app = require("express")(); const server = app.listen(30001, ()=>{ ... codes ... }); -..

Network/WebSocket 2022.01.27
반응형