서브메뉴
검색
본문
Powered by NAVER OpenAPI
-
실전 IoT 네트워크 프로그래밍 (라즈베리 파이와 C#을 활용한 사물인터넷 통신 프로토콜과 서비스 플랫폼 이해)
저자 : 피터 웨허
출판사 : 에이콘출판
출판년 : 2015
정가 : 35000, ISBN : 9788960777231
책소개
이 책에서는 사물인터넷, 즉 IoT에서 활용할 수 있는 대표적인 프로토콜 HTTP, UPnP, CoAP, MQTT, XMPP를 하나씩 소개하고, 각 프로토콜을 이용해 네트워크 토폴로지를 구성하고 통신하는 방법과 방화벽이 통신에 미치는 영향에 대해 알아본다. IoT 통신의 보안을 위한 핵심 도구로서 사물 레지스트리(Thing registry)와 신뢰 위임(delegation of trust)을 이용하는 방법도 소개한다. 여러 프로토콜을 하나씩 살펴본 뒤에는 IoT의 강력함과 유연성을 그대로 유지하면서 최종 사용자와 사적인 데이터를 보호하는 보안 개념이 반영된 아키텍처를 구성하는 방법에 대해 알아본다.
목차
1장 실습 환경
센서 프로젝트
라즈베리 파이 설정
클레이스터 라이브러리
하드웨어 구성
하드웨어 제어
하드웨어 인터페이스 만들기
코드에서 센서 값 표현하기
데이터 영속성 보장
센서 값에 대한 외부 전달용 포맷
센서 데이터 내보내기
액추에이터 프로젝트
하드웨어 구성
하드웨어 인터페이스 만들기
컨트롤러 프로젝트
코드에서 센서 값 표현하기
센서로부터 받은 데이터 파싱
제어 상태 계산하기
카메라 프로젝트
하드웨어 구성
라즈베리 파이의 시리얼 포트 설정
하드웨어 인터페이스 만들기
디폴트 설정 값
설정 속성 추가
설정 값 유지
현재 설정 값 유지
카메라 초기화
정리
2장 HTTP
HTTP 개요
센서 프로젝트에 HTTP 기능 추가
센서에 HTTP 서버 설치
센서에 HTTPS 서버 설정
루트 메뉴 추가
측정한 데이터를 HTML 페이지에 표시
동적으로 그래프 생성
센서 데이터에 대한 웹 리소스 생성
리드아웃 요청 처리
센서 데이터를 외부에 제공하는 기능 테스트
사용자 인증
네트워크 성능 향상을 위해 이벤트 사용하기
액추에이터 프로젝트에 HTTP 기능 추가기
웹 서비스에 대한 웹 리소스 만들기
디지털 출력을 하나씩 다루기
디지털 출력 전체를 한꺼번에 다루기
알람 출력 다루기
테스트 폼
WSDL 문서 보기
REST 방식 웹 서비스 만들기
컨트롤러 프로젝트에 HTTP 기능 추가
이벤트 구독
제어용 스레드 만들기
액추에이터 제어
정리
3장 UPnP
UPnP
서비스 아키텍처 구성
장치 설명서와 서비스 설명서
장치 설명서 만들기
장치 종류 지정
사람도 읽기 좋게 표현하기
장치 ID 지정
아이콘 추가
서비스 정보 지정
웹에 표현할 페이지의 URL 지정
서비스 설명서 만들기
액션 추가
상태 변수 추가
고유 장치 이름 지정
웹 인터페이스 만들기
UPnP 인터페이스 만들기
UPnP 리소스 등록
빈 칸 채우기
SSDP 지원 기능 만들기
네트워크에 장치 알리기
검색에 응답하기
카메라로 찍은 사진을 제공하는 서비스 만들기
이벤트 상태 변수의 초기화
웹 서비스의 프로퍼티를 제공하는 메소드 정의
서비스 프로퍼티 추가
액션 추가
카메라
컨트롤러에 UPnP 설정
장치와 서비스 찾기
이벤트 구독
이벤트 받기
액션 실행
정리
4장 CoAP
HTTP 바이너리 만들기
CoAP 관련 개발 도구
센서 프로젝트에 CoAP 기능 추가
첫 CoAP 리소스 만들기
이벤트 알림 직접 발생하기
데이터 리드아웃 리소스 등록
XML 리턴
JSON 리턴
일반 텍스트 리턴
CoAP 리소스 찾기
CoAP 리소스 테스트
액추에이터 프로젝트에 CoAP 기능 추가
컨트롤 리소스 정의
CoAP에서 URL 파싱
CoAP로 출력 제어
컨트롤러에 CoAP 기능 추가
리소스 모니터링
알림 받기
제어 동작 수행
정리
5장 MQTT
게시하고 구독하기
센서 프로젝트에 MQTT 기능 추가
스레드의 라이프 사이클 관리
중요한 이벤트에 대한 플래그 설정
MQTT 서버에 연결
콘텐츠 게시
액추에이터에 MQTT 기능 추가
토픽 콘텐츠 초기화
토픽 구독
게시된 콘텐츠 받기
콘텐츠 디코딩하고 파싱하기
컨트롤러에 MQTT 기능 추가
센서에서 발생한 이벤트 처리
센서 값 디코딩하고 파싱하기
센서 이벤트 구독
액추에이터 제어
LED 출력 제어
알람 출력 제어
정리
6장 XMPP
XMPP의 기본 구조와 동작
페더레이션으로 무한대로 확장하기
글로벌 ID 제공
통신 권한 검사
온라인 상태에 있는지 확인
XML 사용
통신 패턴
XMPP 확장
서버에 연결하기
보안을 적용하여 프로비저닝하기
XMPP 지원
XMPP 네트워크에 연결
연결 상태 모니터링
친구에게 알림 보내기
XMPP를 통해 들어온 HTTP 요청 처리
보안 기능 추가
프로비저닝의 기본 구조와 동작
Thing Registry 인터페이스 초기화
장치 등록
공용 장치 업데이트
장치에 대한 사용 권한 요청
레지스트리에서 장치 삭제
장치에 대한 사용 권한 포기
프로비저닝 서버 인터페이스의 초기화
친구 요청 처리
친구 관계를 끊기
프로비저닝 서버 찾기
레지스트리 정보 제공
연결 유지
친구 관계 맺기
프레즌스 구독 요청 처리
중단된 친구 맺기 과정 계속 진행하기
센서에 XMPP기능 추가
센서 서버 인터페이스 추가
이벤트 구독 업데이트
contract 게시
액추에이터에 XMPP 기능 추가
컨트롤러 서버 인터페이스 추가
카메라에 XMPP 기능 추가
컨트롤러에 XMPP 기능 추가
센서 클라이언트 인터페이스 만들기
센서 데이터 구독
들어온 센서 데이터 처리
컨트롤러 클라이언트 인터페이스 만들기
카메라 클라이언트 인터페이스 만들기
XMPP로 카메라 이미지 가져오기
상대방이 제공하는 기능 확인
상대방 상태 확인하기
규칙이 변경됐는지 확인
모두 합치기
정리
7장 IoT 서비스 플랫폼
IoT 플랫폼 고르기
클레이스터 플랫폼
클레이스터 플랫폼 다운로드
서비스 프로젝트 만들기
레퍼런스 추가
클레이스터 모듈 만들기
서비스 실행
패키지 매니페스트 사용
비주얼 스튜디오에서 실행
클레이스터 시스템 설정
CMT
데이터 소스 살펴보기
XMPP로 장치 다루기
센서에 대한 XMPP 인터페이스 클래스 만들기
가장 적합한 클래스 찾기
센서 데이터 구독
가져온 센서 데이터 해석
액추에이터에 대한 XMPP 인터페이스 클래스 만들기
제어 연산 커스터마이즈
카메라에 대한 XMPP 인터페이스 클래스 만들기
컨트롤러 애플리케이션 만들기
렌더링 이해하기
애플리케이션 클래스 정의
컨트롤러 초기화
제어 규칙 추가
애플리케이션 레퍼런스 이해하기
브리플릿 정의
게이지 표시
바이너리 시그널 표시
클라이언트에게 업데이트 알리기
애플리케이션 완성
애플리케이션 설정
10-foot 인터페이스 애플리케이션으로 서비스 보기
정리
8장 프로토콜 게이트웨이
프로토콜 브릿징 이해
추상 모델 사용하기
클레이스터 추상 모델
편집 가능한 데이터 소스
편집 가능한 오브젝트
공통 데이터 소스
핵심 프로퍼티와 메소드 오버라이드
구조 제어 관련 프로퍼티와 메소드
속성 게시 관련 프로퍼티와 메소드
명령 게시 관련 프로퍼티와 메소드
장치와 통신하기
장치 읽기
장치 설정
CoAP 게이트웨이 아키텍처
정리
9장 보안과 상호운용성
IoT 환경에서 발생할 수 있는 문제
기존 솔루션을 다시 만드는 이유
네 이웃을 알라
흔히 볼 수 있는 공격 유형
서비스 거부
자격증명 추측하기
저장된 자격증명에 접근하기
중간자 공격
네트워크 통신 스니핑
포트 스캐닝과 웹 크롤링
검색 기능과 와일드카드
암호 깨기
보안 관련 도구
가상 사설 네트워크, VPN
X.509 인증서와 암호화
ID 인증
유저네임과 패스워드
메시지 중개자와 프로비저닝 서버
중앙 집중형 아키텍처와 분산 아키텍처의 비교
상호운용성의 중요성
복잡도 줄이기
비용 절감
새로운 서비스로 장치 재활용하기
보안과 상호운용성이 공존하기
정리
부록 A 프로젝트 개발 환경 및 프로그래밍 기초
콘솔 애플리케이션
샘플링과 히스토리
오브젝트 데이터베이스
제어
부품 구성표
부록 B HTTP 프로젝트 구현 기법
HTTP의 기초
센서 데이터의 쿼리 파라미터
HTTP에서 제공하는 인증 방법
HTTP에서 이벤트 구독 메커니즘 구현
부록 C UPnP 프로젝트 구현 기법
UPnP의 기초
UPnP에서 지원하는 데이터 타입
카메라 웹 인터페이스
텍스트 인코딩 관련 주의 사항
카메라로 찍은 사진을 메일로 보내기
카메라 관리
부록 D XMPP 프로젝트 구현 기법
인증서
채팅 인터페이스
QR 코드