본문 바로가기

IT

[네트워크] 라우터에 대하여 라우터 Layer-2 스위치만 있는 네트워크는 모든 컴퓨터와 스위치가 동일한 네트워크에 속하게 된다. 허브나 스위치는 네트워크를 분할할 수 없지만 라우터는 네트워크를 분할할 수 있다. 네트워크를 분할한 뒤 다른 네트워크에 있는 컴퓨터로 데이터를 전송하려면 라우터의 IP주소를 설정해야 하는데, 이는 네트워크의 출입구를 설정하는 것으로 기본 게이트웨이라고 한다. 라우팅 테이블 현재 네트워크에서 다른 네트워크로 데이터를 전송할 때 라우팅의 경로 정보를 바탕으로 최적 경로로 데이터를 전송한다. 이는 라우팅 테이블에 경로 정보가 등록되어 있기에 가능한 것이다. 라우팅 테이블은 자동 등록, 수동 등록 모두 가능하며 자동 등록은 대규모 네트워크, 수동 등록은 소규모 네트워크에 적합하다. 대표적인 라우팅 프로토콜은 R.. 더보기
[대학원 논문용] Bufferbloat와 TSN에 대한 정리글 대학원 논문 작성을 위해 정리해놓은 글입니다. 네트워크 쪽에서 중요하게 여기는 것은 delay의 최소화, 즉, 빠른 통신이다. 수신지에서 목적지까지 데이터를 빠르게 보낼수록 사용자 입장에서는 편리하기 때문이다. 하지만, 하나의 건물 내에서 통신이 이루어지는 LAN(Local Area Network)환경이 아닌, 지역 간의 통신이나 국가 간의 통신에서는 여러 네트워크 장비를 거치게 되고 해당 네트워크 장비에는 내가 보낸 데이터 이외에도 많은 데이터들이 오가므로 트래픽이 많아 지연(delay)이 발생하게 된다. * 종단간 지연(End to End Latency) - time taken for a packet to be transmitted accross a network from source to desti.. 더보기
[대학원 과제] Extended Euclidean Algorithm(확장 유클리드 호제법)을 이용한 모듈러 역원 구하기 with Java 앞의 포스팅에 앞서서 확장 유클리드 호제법을 이용한 모듈러 역원 구하는 방법을 코드화하였습니다. 해당 방법을 코드화 하여 구현하였으며 과제로 나온 문제 예시는 다음과 같습니다. 이를 Java로 코드화하였을 때, 결과가 올바르게 나온 것을 확인할 수 있습니다. 코드는 아래 Repository에 담아 두었습니다. https://github.com/ahrizwell/myRepository/blob/java/extendedEuclideanInverse.java ahrizwell/myRepository Everything I did. Contribute to ahrizwell/myRepository development by creating an account on GitHub. github.com 물론 연산속도.. 더보기
[대학원 과제] 모듈러(Modulo, %)의 역원 구하는 프로그램 with Java 이번에는 모듈러의 역원을 구하는 문제가 과제로 나왔습니다. 원래 모듈로의 역원을 구하기 위해서는 1) 유클리드 호제법, 그리고 이를 확장한 2) Extended 유클리드 호제법, 그 후 3) Multiplicative Inverse 를 배우고 구하는 방식을 권고(?)하고 있습니다. 하지만 생각해보니 단순히 모듈러의 역원을 구하는 것이라면, 위 방식을 응용한 방법을 사용하는 것이 좋다고 생각하여 알고리즘들을 찾아보았습니다. 원래 네트워크 암호학 배울 때 다 그렇지만 시험기간이 다가올수록 꼼수(?)를 사용하여 한방에 구할 수 있는 공식 혹은 알고리즘을 만들어 시험장에 가는게 정석(?)이기 때문이죠. 참고로, 구하는 속도 측면에서는 확장된 유클리드 호제법을 이용한 Multiplicative Inverse를 이.. 더보기
[네트워크] IP Protocol(아이피 프로토콜) 네트워크 계층 - 데이터 링크 계층은 이더넷 규칙을 기반으로 데이터의 전송을 담당 = 같은 네트워크에 있는 컴퓨터에는 데이터 전송이 가능하지만 다른 네트워크에 있는 컴퓨터에는 전송이 불가능 - 네트워크 계층을 통해 서로 다른 네트워크간의 통신을 가능하게 하며, 라우터(집에 있는 인터넷 공유기)라는 네트워크 접속장치를 통해 통신 - 데이터 전송과 경로 선택 기능을 제공하며, 라우팅 프로토콜을 통해 최적의 경로를 선택 네트워크를 통한 데이터 통신에는 수신지의 주소를 알아야 한다. LAN에 있는 MAC주소로 통신은 가능하지만 다른 네트워크에 있는 컴퓨터에게는 데이터를 전송할 수 없다. 서로 다른 네트워크끼리 통신하기 위해서는 네트워크를 식별할 주소가 필요하고 이를 IP주소라고 한다. 라우팅(Routing) -.. 더보기
[네트워크] 프로토콜과 TCP/IP 프로토콜이란? 서로 다른 시스템에 있는 개체 간에 성공정으로 데이터를 전송하는 통신 규약 (네트워크에 연결된 컴퓨터들끼리 데이터를 주고받을 수 있도록 미리 약속한 전송 규약 및 규칙) 프로토콜은 계층적 구조로 정의되어 있고, 계층별 역할이 구분됨 예를 들어서 인터넷을 이용한다고 하면 인터넷의 기본 프로토콜 - TCP/IP 원하는 웹사이트의 웹페이지를 볼 수 있는 - HTTP 메일을 주고 받을 시 - SMTP, POP3 인터넷으로 데이터나 파일의 업로드, 혹은 다운로드 시 - FTP 등의 프로토콜이 사용된다. 프로토콜이 필요한 이유는 무엇인가? 사용자 별로 환경이 다르고 통신의 규칙이 없으면 충돌, 지연 등 여러가지 문제가 발생할 수 있기 때문이다. 예를 들어 한쪽은 맥북(Linux 기반)을 사용하고, 다.. 더보기
[대학원과제]Finite Field Program with Java Finite Field에서 p(x)(Primitive Polynomial)의 계수와 차수가 주어지면 Finite Field의 원소를 벡터의 형태로 출력하는 프로그램입니다. 간단하게 예를 들자면 p(x) = x^3 + x + 1이 주어지면 차수는 3이 되고 계수는 1 0 1 1이 입력됩니다. 그렇게 되면 결과 값으로, 0 = 000 / 1 = 100 / a = 010 / a^2 = 001 / a^3 = 110 / a^4 = 011 / a^5 = 111 / a^6 = 101 이 출력되게 됩니다. 즉, 사용자가 3과 1 0 1 1 을 입력하면 해당 Finite Field의 원소를 벡터의 형태로 출력하게 되어있습니다. 더불어 2번문제 Multiplicative Representation과 3번문제 Additiv.. 더보기
[Java] Java 코딩 실행환경 구축하기(Eclipse 설치법) Java는 안드로이드 어플리케이션이나 웹 구축 시 많이 사용하는 객체 지향 언어입니다. 최근 많은 기업에서 Java를 사용하여 개발한다고 합니다. 이는 Java를 사용하는 빈도가 예전에 비하여 많이 늘었다는 이야기로써 제일 많이 사용하는 언어가 Java라는 의미는 아닙니다. Eclipse는 C언어 공부할 때 Visual Studio와 비슷한 프로그램이라 보시면 됩니다. 물론 메모장에 코딩하고 cmd 상에서 java를 실행할 수도 있지만 초심자가 사용하기엔 난해한 방법이며, 무엇보다 코드 정렬과 디버깅이 굉장히 어렵습니다. 포스팅을 하기 위해서 새로운 컴퓨터에 Eclipse를 다운로드 받아봤는데 예전보다 많이 간단해졌습니다. 예전에는 JVM, JDK를 따로 Oracle가서 다운받아야 했는데 지금은 그냥 E.. 더보기