전체 글 105

[컴퓨터 네트워크] IPv4주소

IPv4주소는 32비트 주소로 라우터나 호스트의 인터넷 연결을 범용적이고 유일하게 만들어준다. IP주소는 장치가 다른 네트워크로 이동 시 변경되기 때문에 라우터나 호스트가 아닌 연결의 주소이다. IPv4주소는 각 인터넷으로의 연결을 하나씩 유일하게 정의한다. 만약 하나의 장치가 두 네트워크를 통해 인터넷으로 2개의 연결을 가지고 있을 경우, 2개의 Ipv4주소를 가지게 된다. IPv4는 32비트의 주소를 사용하므로 주소 공간은 2^32, 즉 40억개 이상이 된다. 표기법으로는 2진수 표기법, 10진수 표기법(도트 표기법), 16진수 표기법 등이 있다. IPv4주소는 두 부분으로 구분되는 계층적 구조이다. 주소의 첫 부분은 접두사로 네트워크를 정의하고 두 번째 부분은 접미사로 노드(호스트)를 정의한다. 접..

[컴퓨터 네트워크] 네트워크층 성능

네트워크의 성능은 지연(delay), 처리량(throughput), 패킷 손실률(packet loss)로 측정 가능하다. 혼잡 제어는 성능을 향상시킬 수 있는 이슈이다. 전송 지연은 패킷의 첫 비트가 t1, 마지막 비트가 t2ㅡ이 시간에 놓였을 때, t2-t1이 되다. 따라서 패킷의 길이가 길수록 전송 지연도 길어지며, 전송 시간이 짧아진다. 즉 전송 시간은 packet length / Transmittion rate이다. 전파 지연은 전송 매체를 통해 A지점에서 B지점까지 1비트가 전달되는 데 걸리는 시간이다. 즉 전파 지연은 Distance / Propagation speed이다. 처리 지연은 라우터나 목적지 호스트가 입력 포트로 패킷을 받고, 헤더를 제거하고, 오류 탐지를 수행한 뒤, 출력 포트로 ..

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

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