컴퓨터 네트워크 프로토콜44 728x90 반응형 비트코인 광부(채굴)를 위한 HDMI 더미를 샀다. 비트코인을 채굴하는 광부 분들이 많이 사시는 HDMI 더미를 내가 살 날이 올 거라고는 생각하지 못 했는데 결국 그런 날이 왔다. 나는 채굴용으로 사용할 계획은 없지만 최근에 모니터 없이 개인 서버를 운용하려고 하니 팀뷰어에서 3D 연산이 되지 않는 문제가 발생했었다. 원격으로 서버를 제어할 건데 3D 연산이 왜 필요하냐고 싶다만서도 사실 3D 연산만 안 되는게 아니라 3D 연산이 안 되니 윈도우 화면 자체가 다 검은색으로 표현되고 중간 중간에 그래픽 연산이 필요한 것이 있으면 화면이 나오지 않는 문제가 있었다. 편리하게 쓰려고 윈도우 기반 서버를 사용하고 있는데 기본 제공되는 RDP(Remote Desktop Protocol)를 쓰려고 하니 보안 관련 이슈가 있고 최근에 해킹을 당한 적도 있어서 보안적.. 2020. 12. 23. 이클립스로 NS-3 개발하기(1/3) - 이클립스 설치 통합개발환경(Integrated Development Environment, IDE)로 개발하는 것은 생산성을 대폭 향상 시켜준다. 통합개발환경은 버튼 한번으로 빌드와 실행이 가능하고 자동완성 기능 등 다양한 생산성 향상을 위한 도구가 통합되어 있기에 이 시대를 살아가는 개발자들은 다 통합개발환경을 활용하여 개발하고 있다고 볼 수 있다. 마찬가지로 NS-3도 여러 통합개발환경을 통해 개발이 가능하다. 이번 글에서는 개인과 기관 모두 사용료가 무료인 이클립스(Eclipse)를 활용한 NS-3 개발환경 구축을 소개한다. 개발환경 Ubuntu 18.04 OpenJDK 8 Eclipse 2018-09 R 이클립스는 JVM(Java Virtual Machine, 자바가상머신)에서 실행가능하므로 우분투(Ubuntu.. 2020. 12. 7. NS-3에 LoRaWAN 모듈을 설치하고 실행해보자 LoRaWAN은 LoRa Alliance에서 2015년에 1.0을 공개하여 현재까지 활발히 활용되고 있는 저전력 광역 통신망(Low-Power Wide-Area Network, LPWAN) 기술 중 하나이다 [1]. 최근에 나는 LoRaWAN 기반의 IoT(Internet of Things) 응용을 개발하기 전에 통신 실험을 할 필요가 있어서 이 모듈을 활용해서 실험에 활용하려고 한다. 이 NS-3 모듈은 이탈리아 파도바 대학교의 SIGNET 연구실의 학생 중 한 명이 석사학위 논문을 작성하기 위해 개발하였으며 현재는 Github에 공개되어 있다 [2]. 구동환경 CPU : i7-4790K 운영체제 : 우분투 18.04 x64(윈도우 10 x64 기반 VMWARE 가상환경) Github에 공개되어 있는 .. 2020. 11. 29. NS-3를 우분투에 설치하고 실행하자 최근에 실험해보고자 하는 주제가 생겨서 하는 김에 신 버전 NS-3를 설치하다가 설치 방법을 정리하게 되었다. 네트워크 프로토콜 시뮬레이터로 강력한 툴인 NS-3는 우분투(Ubuntu)에서 설치 및 실행이 가능하다. 이번 설치에는 VMWARE로 가상머신을 하나 생성하여 우분투 18.04를 설치한 다음 거기에다가 신 버전 NS-3를 설치했다. 구동환경 CPU : i7-4790K 운영체제 : 우분투 18.04 x64(윈도우 10 x64 기반 VMWARE 가상환경) 의존성 패키지 설치 NS-3를 설치하기 전에 설치해야하는 것들이 있다. 다음 명령어를 터미널에 입력하여 설치한다. sudo apt install gcc sudo apt install g++ NS-3 다운로드 NS-3 공식 홈페이지(www.nsnam.. 2020. 11. 27. NS-3.32 업데이트 정보 네트워크 시뮬레이터 NS-3의 3.32 버전이 출시되었습니다. Wi-Fi 관련 기능이 보충되었고 여러 혼잡 제어 기능과 각종 버그들이 수정되었습니다. 변화된 점 Wi-Fi 802.11ax가 6 GHz 대역을 지원합니다. Wi-Fi 모델에서 RIFS(Reduced Interframe Space) 기능이 삭제되었습니다. NS-3의 Emulation에 Netmap과 DPDK(Data Plane Development Kit) 기능이 추가되었습니다. TCP에서 동적 페이싱이 추가되었습니다. TcpLinuxReno 혼잡 제어가 추가되었습니다. RFC 8033에 있는 PIE queue disc model이 추가되었습니다. FqCoDel 및 CoDel queue disc에 L4S 모드가 추가되었습니다. STL Pair.. 2020. 11. 9. MQTT 서버(브로커) 프로그램 목록 및 정보 본 글은 2016년 3월 30일 17시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. HTTP에 Apache와 NginX, IIS, Tomcat이 있듯이 MQTT에도 Mosquitto와 HiveMQ, WebSphere MQ가 있다. Github에 있는 MQTT 프로젝트의 위키에 가면 MQTT 목록과 지원 되는 기능을 한 눈에 볼 수 있는 표가 있다. 아래가 그 표인데 표에 나타난 모든 기능을 지원하는 서버가 대다수 상용인 점을 고려하면 저비용에 개발하기에는 아직은 시기상조이지 않을까 생각이 든다. ※ 참고 : MQTT에는 브로커(Broker)라는 개념이 있는데 서버-클라이언트 모델의 서버에 해당한다. 현재 MQTT 관련 자료들을 살펴 보면 브로커의 개념을 브로커와 서버라는.. 2020. 10. 14. MQTT로 개발하는 것이 무조건 좋은 것인가? 본 글은 2016년 3월 29일 17시 28분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 현재(2020년 10월 14일)의 MQTT시장과는 상황이 전혀 다릅니다. MQTT를 써야한다면 쓰면 됩니다. MQTT 프로토콜이 적합한 경우 환경과 시나리오, 준비된 기술에 따라서 적합한 프로토콜이 있다. MQTT의 경우 1999년 네트워크의 신뢰성이 낮고 연산과 처리속도, 메모리가 극히 제한적인 상황을 고려해서 설계가 되었기에 2016년 현재 이러한 특징을 살릴 수 있는 상황이 아니라면 MQTT가 큰 의미는 없을 수 있다. 예를 들어 사용할 수 있는 네트워크의 단위 시간당 처리량이 크고 패킷 이용로가 아주 저렴할 때 IoT 장비가 이 네트워크를 사용해서 한달동안 100MB의 패킷을 절약.. 2020. 10. 14. NS-3에서 UAN 프레임워크로 IPv4 수중 시뮬레이션을 하는 방법 본 글은 2016년 10월 11일 17시 31분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. NS-3에서 UAN 프레임워크로 IPv4 수중 시뮬레이션을 하는 것이 가능한 지 조사해보았다. UAN 프레임워크로 생성된 노드는 기본적으로 0-255의 한 바이트(unit8_t) 주소를 부여 받는다. 즉 기본적으론 IPv4를 지원하지 않는다. 이를 해결하기 위한 방법으로 두 가지가 있는데 하나는 적응계층(adaptation layer)을 두는 것과 다른 하나는 NS-3에 구현되어 있는 IPv4 관련 클래스를 수정해서 UAN 프레임워크의 주소를 관리하도록 만드는 것이다. 관련 링크 1 : https://groups.google.com/forum/#!msg/ns-3-users/ag2CoKE.. 2020. 10. 14. NS-3 로그의 종류와 로그를 터미널에 출력하는 법 본 글은 2016년 10월 14일 12시 56분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. NS-3는 각종 정보를 저장하고 확인하기 위한 로그를 지원한다. 이런 로그 정보는 파일로 저장 될 수도 있고 터미널에서 실시간으로 확인할 수도 있다. 로그의 종류는 아래와 같다. 종류 의미 LOG_LEVEL_ERROR 오류가 발생 했음을 의미하는 로그 LOG_LEVEL_WARN 경고용 로그 LOG_LEVEL_DEBUG 디버깅용 로그 LOG_LEVEL_INFO 각종 정보를 알려주는 로그 LOG_LEVEL_FUNCTION 함수 추적(tracing)을 위한 로그. LOG_LEVEL_LOGIC 함수안에서 추적흐름제어(control flow tracing)을 위한 로그 LOG_LEVEL_ALL .. 2020. 10. 14. 왜 TCP/IP에서는 OSI의 5,6,7계층이 하나의 계층에 들어가는가? 본 글은 2016년 2월 26일 9시 58분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. TCP/IP의 어플리케이션 계층은 OSI 7계층의 어플리케이션 계층과 표현(프레젠테이션)계층, 세션계층이 해당에 해당한다고 흔히 알고 있다. 그럼 왜 TCP/IP에서는 ISO(International standasdasdasda)가 심혈을 기울여 만든 OSI 7계층의 3개 계층을 1개의 계층으로 표현했을까? 라는 의문이 들 수 있다. 나도 의문이 들었던 사람 중 한 명으로서 이 의문의 해답을 얻으려 했지만 쉽게 얻지는 못 했다. 나는 지금까지 흔히들 알고 있는 내용인 "지나친 계층화는 각 계층 간의 커뮤니케이션이 불필요하게 많이 일어나게 만드는 문제가 있다. 이는 비용(메모리사용량증가, 수.. 2020. 10. 14. MQTT(Message Queuing Telemetry Transport, 엠큐티티) 개요 본 글은 2016년 3월 29일 11시 58분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. MQTT(Message Queuing Telemetry Transport, 엠큐티티)는 Publish–Subscribe 기반의 경량 메시징 프로토콜이다. 응용계층의 프로토콜로로써 1999년에 IBM과 Eurotech에 의해 제한된 리소스(적은 배터리)를 가진 가진 센서가 사용하는 목적으로 개발하였다. 2013년부터 OASIS(Advaning open standards for the information society)가 표준화를 진행 중이다. 발행-구독 모델을 기초로 제작된 프로토콜이다. 기본포트는 1883이며 SSL용으로 8883을 쓴다. 신뢰성 있는 메시지 전송을 위해 세 종류의 Qo.. 2020. 10. 13. 아이폰에서의 와이파이 다이렉트 지원 여부 조사 본 글은 2017년 6월 23일 13시 35분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 아이폰이 와이파이 다이렉트(Wi-Fi Direct, Wi-Fi P2P)를 지원하는 지에 대해서 조사할 필요가 있어서 조사하게 되었다. 아이폰에서는 블루투스와 와이파이, 와이파이다이렉트, 이더넷 등의 인터페이스를 각기 독립적으로 사용하는게 아니라 여러 인터페이스를 하나처럼 사용할 수 있도록 MultipeerConnectivity라는 프레임워크를 제공하고 있다. 애플 개발자 문서: https://developer.apple.com/documentation/multipeerconnectivity 해당 프레임워크를 사용하면 아이폰에서 지원하는 인터페이스들을 활용하여 근처의 디바이스와 서비스를 찾.. 2020. 10. 13. NS-3 UAN 모듈에 IPv6를 올리다가 생긴 PacketSocketHelper 중복 사용 문제 본 글은 2016년 12월 5일 20시 12분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. UAN(Underwater Acoustic Networks) 모듈에 IPv6를 올려서 예제를 만드는 도중에 발생한 오류이다. IPv6나 IPv4를 노드(Node)에 올리다가 생기는 문제는 주로 PacketSocketHelper의 중복 사용 문제이다. InternetStackHelper가 PacketSocketHelper를 이미 쓰고 있기 때문에 나타나는 현상이라서 소스를 잘 살펴서 PacketSocketHelper가 중복 사용되는 부분만 지워주면 된다. 에러 메시지는 다음과 같다. Object::AggregateObject(): Multiple aggregation of objects o.. 2020. 10. 13. TCP/IP가 성공한 이유는 무엇일까? 본 글은 2017년 11월 25일 0시 15분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 현재 대부분 통신이 TCP/IP 환경기반이다. 하지만 네트워크 관련 공부를 하다보면 OSI 7 Layer가 꼭 나오는데 이는 OSI 7 Layer가 비록 산업적으로나 상업적으로 성공하지는 못 했지만 새로운 네트워크 계층이나 프로토콜을 생각할 때 참고자료로써의 가치가 있기 때문이다. 그럼 왜 TCP/IP가 아닌 OSI 7 Layer가 참고자료로써의 가치가 아직까지도 있는데에도 왜 TCP/IP가 성공했는 지에 대해서 의문이 생긴다. 조사한 결과 이는 TCP/IP가 OSI 7 Layer보다 빨리 출시되었고 이기종간 통신 프로토콜이 최대한 빨리 필요한 미국방성에서 TCP/IP를 공식적으로 사용했.. 2020. 10. 13. IPv4(Internet Protocol Version 4) 개요와 패킷 구조 본 글은 2017년 5월 29일 8시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. IPv4(Internet Protocol Version 4)는 1981년 9월에 IETF RFC 791에 정의된 TCP/IP에서 활용하는 네트워크 주소체계이다. 현재 IPv6와 함께 가장 강력한 인터넷 주소체계로 인정 받는다. IPv4에서는 네트워크 주소를 총 32비트로 표현하기 때문에 약 43억개의 주소를 나타낼 수 있다. 2011년 2월 4일부터 모든 공인 IPv4 주소가 소진되어 IPv4의 공인 IP 할당이 중지되었다. 네트워크에서의 주소를 표현하기 때문에 IPv4는 TCP/IP의 네트워크 레이어에 해당하는 프로토콜이다. 이 프로토콜의 패킷을 데이터그램이라고 부른다. IPv4의 패킷 .. 2020. 10. 13. NS-3에 적합한 통합개발환경(IDE)은 무엇일까? 본 글은 2017년 6월 15일 22시 24분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. NS-3에 적합한 IDE를 검토한 이유 본격적으로 내가 네트워크 시뮬레이터를 사용해야하는 상황이 도래했다. 내가 소속되어 있는 연구실은 주로 NS-2와 NS-3를 네트워크 시뮬레이터로 사용하고 있으며 새롭게 네트워크 시뮬레이션을 익히는 자에게는 NS-3 사용을 권장하고 있다. 사실 나의 경우 작년에는 NS-3를 해도 gedit이나 Geany 같은 텍스트 에디터와 터미널 창으로 꾸역꾸역 버텨왔는데 이 경우 코드 추적, 자동완성 등의 기능을 사용하지 못 해서 생산성이 극단적으로 좋지 않았다. 안드로이드나 윈도우 개발을 주로하던 나에게는 이런 말도 안 되는 생산성으로 결과를 만들어 내니 꽤나 .. 2020. 10. 13. OMNeT++ 소개 및 라이센스 비용 본 글은 2017년 9월 6일 18시 18분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. OMNeT++ 소개 OMNeT++는 네트워크 시뮬레이터 중 하나로 확장성을 고려한 모듈식 설계가 큰 특징이다. 이 모듈식 개발을 위해 C++로 각 모듈의 동작을 구현하고 NED로 이 모듈을 묶는다. OMNeT++은 Eclipse 기반의 IDE를 제공하여 개발하기 용이한 장점이 있다. 사실 많이 사용하는 네트워크 시뮬레이터는 다 이 구조라서 구조자체는 딱히 큰 장점은 없으나 UI로 인한 편리함에 차이가 난다. OMNeT++ 라이센스 개인, 교육 및 연구를 목적으로한 학술기관, 비영리 연구기관 등에 비영리적 목적으로 무료로 제공한다. 하지만 아래의 예와 같이 영리 활동을 하는 경우 라이센스를 .. 2020. 10. 11. NS-3에서 데이터형을 변환 하는 법 본 글은 2017년 10월 27일 11시 28분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 한 날 NS-3 모듈을 개발하는 도중 클래스 형변환을 할 필요가 있었다. NS-3에서는 스마트 포인터를 사용하고 있기에 dynamic_cast(expression), static_cast(expression)를 사용하면 된다 싶었는데 NS-3에서는 이게 안 된다. 찾아보니까 NS-3에는 비슷한 동작을 하는 다른 것이 있었다. DynamicCast(expression)이라는 것인데 dynamic_cast 처럼 동일한 역할을 하는 것 같다. 사용법은 다음과 같다. class NetDevice{}; class WifiNetDevice : public NetDevice{}; . . . // 현.. 2020. 10. 11. NS-3에서 수중 통신 시뮬레이션하는 방법 조사 본 글은 2017년 12월 14일 21시 07분에 썼던 글이며 블로그 자료 이전으로 날짜만 갱신된 글입니다. 우리 연구실에 6년 동안 진행하는 수중 센서 네트워크 연구 프로젝트가 들어오면서 나의 연구 주제에 수중도 추가되었다. 어차피 기존에 익혀두었던 지식을 토대로 수중환경의 특징을 고려해서 연구하면 되니 시간이 충분하다면 주제를 바꾸는 건 큰 문제가 없기에 전환하였다. 우리 연구실은 2007년부터 수중 네트워크 연구를 했었기에 관련 연구 경험이 있는 편이었다고 한다. 지금까지는 시뮬레이터를 주로 NS-2를 썼다고 한다. 이번에 연구 기간이 긴 프로젝트가 생긴 김에 현재 가장 활발히 사용되는 NS-3에서 수중 시뮬레이션이 가능한 지 조사해보았다. 1. UAN(Underwater Acoustic Netwo.. 2020. 5. 19. 시놀로지 DS218J 프로토콜별 파일 전송속도 비교 파일 전송 프로토콜을 비교한 이유 시노롤지 DS218J는 파일 전송을 위해 다양한 프로토콜을 지원하는데 워낙 지원하는 수가 많다보니 어떤 프로토콜을 써야 파일 전송속도가 가장 좋을 지가 궁금하여 테스트해보았다. 비교한 프로토콜은 FTP와 FTPS, SFTP, HTTP, HTTPS, SMB이다. 단순히 생각해보면 암호화-복호화 과정을 거치지 않는 FTP와 HTTP, SMB(평문통신)가 가장 성능이 좋을 것으로 예상한다. 파일 전송 프로토콜 비교를 위한 환경 클라이언트 프로그램으로 FTP와 FTPS는 파일질라(FileZilla)를 활용하였고 SFTP와 HTTP, HTTPS는 레이드라이브(RAIDRIVE) 1.8.0(2019.11.29), SMB는 윈도우 파일 탐색기를 사용하였다. 통신환경은 NAS와 PC는 .. 2019. 12. 25. 이전 1 2 3 다음