전체 글 113

[컴퓨터 네트워크] 패킷 스위칭 방식

데이터그램 방식: 비연결 서비스 인터넷을 처음 만들 때, 네트워크층의 간소화를 위해 모든 패킷을 독립적으로 처리하는 비연결형 서비스를 제공하도록 설계되었다. 네트워크층의 기본 개념은 근원지에서 목적지로 패킷을 전달하는 것이였다. 이 방식에서는 메시지의 패킷들이 목적지까지 같은 경로나 혹은 다른 경로로 전달될 수 있게 한다. 네트워크층에서 비연결형 서비스를 제공할 때 인터넷 상의 모든 패킷은 각각 독립적인 개체이다. 가상 회선 방식: 연결 지향형 서비스 (virtual-circuit approach) 가상 회선 방식에서는 한 메시지에 속한 모든 패킷은 연관성이 있다. 메시지의 모든 데이터그램이 전송되기 전에 데이터그램을 위한 가상의 경로가 설정된다. 연결이 설정된 뒤, 데이터그램을 모두 같은 경로로 전송할..

[컴퓨터 네트워크] 라우팅(routing)과 포워딩(forwarding)

네트워크층은 패킷이 근원지에서 목적지까지 갈 수 있도록 경로를 라우팅해야 한다. 물리적인 네트워크(LAN과 WAN)와 네트워크를 연결하는 라우터의 조합이다. 이는 근원지에서 목적지까지 적어도 하나 이상의 라우터가 있다는 의미이다. 네트워크층은 가능한 모든 경로 중 가장 좋은 경로를 찾는 역할도 수행한다. 따라서 네트워크층은 가장 좋은 경로를 정의하는 구체적인 규칙이 필요하다. 각 라우터의 의사결정 테이블을 만들기 위해 라우팅에 규칙을 적용하고 라우팅 프로토콜을 실행할 때 포워딩(forwarding)은 라우터 상의 하나의 인터페이스로 패킷이 도착했을 때 라우터가 취하는 행동으로 정의할 수 있다. 이런 행동을 취하기 위해 라우터가 일반적으로 사용하는 의사결정 테이블은 포워딩 테이블(forwarding tab..

[Node] mysql 쿼리문 안에 변수 삽입

먼저 쿼리문을 하나 만들어 보자 AND 또는 OR를 사용해 조건을 연결할 수 있으며 변수로 넣을 데이터에 '?' 를 넣어주면 쿼리문 안에 변수를 삽입할 수 있다. 또한 order by rand()구문을 사용하여 결과 튜플을 무작위로 섞을 수 있다. query 함수의 첫 번째 인자로 쿼리문, 두 번째 인자로 '?'안에 넣어 줄 변수, 세 번째 인자로 콜백함수를 넣어주면 된다. '?'가 하나일 경우 [] 안에 값을 입력하지 않아도 되지만, '?'가 여러개일 경우 반드시 대괄호 안에 값을 나열해주어야 한다.

Node.js 2021.09.26

[JAVA] 랜덤 수(난수)생성

JAVA에서 난수를 생성하기 위해서는 Random 객체를 사용하면 된다. Random 객체를 생성하기 위해 먼저 Import java.util.Random 명령어를 사용하여 Random 라이브러리를 사용한다고 명시해 준다. 이후 위와 같이 Random 키워드를 통해 객체를 생성해주면 된다. 객체의 메소드인 nextInt를 사용해서 난수(정수)를 생성할 수 있다. 위 코드는 난수를 생성하여 주사위를 20번 던진 것과 같은 결과를 보여준다. nextInt 메소드의 매개변수로 6을 넣어준다면 0~5사이의 난수를 발생시킨다. 이에 1을 더해주면 1~6사이의 난수, 즉 주사위를 던지는 경우를 가정할 수있다.

Java 2021.09.19

[Node] mysql 접속

sudo npm install mysql --save 명령어를 사용하여 먼저 mysql을 설치하여준다. 이후 const mysql = require('mysql'); 을 추가하여 라이브러리 사용을 명시해준다. 아래와 같은 방법으로 mysql DB에 연결할 수 있다. let connection = mysql.createConnection({ host: 'localhost', user: 'username', password: 'pw', database: 'DBname' }); connection.connect(); 쿼리문을 사용하기 위해서는 connection.query 함수를사용한다, 매개변수로는 쿼리문과 콜백함수(에러, 결과, 필드)가 들어간다. 작업이 끝나면 connection.end() 함수를 사용하..

Node.js 2021.09.15

[Node] React, NodeJS hppt통신 CORS 문제 해결

보안상의 이유로 서로 다른 포트나 도메인에 http 통신을 시도하면 CORS 에러가 발생한다. localhost 환경이라면 react 프로젝트 파일의 package.json에서 "proxy":"[접근할 포트]를 입력해주면 된다. 또 다른 방법은 nodeJS의 cors 라이브러리를 활용하는 것이다. sudo npm install cors --save 명령어를 사용해 cors를 설치해준다. 이후 자원 공유를 허락할 origin을 지정해주면 된다. origin 부분에 '*' 를 넣어주면 모든 origin과의 자원 공유를 허락하게 되지만 보안에 취약하므로 이와 같은 방법은 피하자.

Node.js 2021.09.13

[React]React서버, Node서버 동시에 실행하기

프론트엔드로 React, 백엔드로 Node를 사용한 경우 http통신을 테스트하기 위해 React서버와 Node서버를 동시에 실행해야 하는 경우가 있다. 즉, npm start 로 React서버를 실행시킴과 동시에 node [파일명] 명령어를 통해 Node서버까지 실행시키는 방법을 알아보자. 먼저 concurrently 라이브러리를 프로젝트의 root 디렉토리에 설치해준다. 설치가 끝나면 package.json 파일을 열고 "scripts"의 내용을 변경해주어야 한다. "dev" 부분을 먼저 살펴보자. npm run dev 명령어를 실행했을 때 동작하는 부분이다. npm run node, npm run react를 동시에 실행시킨다는 내용이다. node와 react에는 각각 Node서버, React서버를..

React.js 2021.09.11

[Node.js] 전역 변수와 전역 객체

웹 브라우저에서 동작하는 자바스크립트의 최상위 객체는 window객체다. 하지만 window객체는 웹 브라우저에서 동작하므로 Node.js에는 존재하지 않는다. 대신 전역 변수와 전역 함수를 가지고 있다. __filename 전역변수는 현재 실행 중인 코드의 파일 경로를 나타내며, __dirname 전역변수는 현재 실행중인 코드의 폴더 경로를 나타낸다. 코드를 실행시키면, 파일과 폴더의 경로가 정상적으로 출력되는것을 확인할 수 있다. console 객체는 log(), time(), timeEnd() 메소드를 갖고 있다. log()메소드를 통해 특수 문자를 이용해 문자열을 출력할 수 있으며 time()과 timeEnd() 메소드를 사용해 실행 시간을 출력할 수 있다. time()과 timeEnd() 메소드..

Node.js 2021.09.07