오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
node.js를 처음 접하는 개발자를 위한 스터디 자료입니다.
실습 위주로, 간단한 웹 페이지를 만들어 보는 것을 목표로 하며,
express를 활용하기에 앞서, node.js 기본 API만으로 GET/POST 처리 방식을 알아봅니다.
내용의 깊이가 있지는 않으며, 단지 node.js의 입문을 위한 가벼운 수준으로 내용이 구성되었습니다.
인터넷의 역사부터 웹의 탄생, HTTP 와 REST 등, 우리가 현재의 웹을 이해하는데 필요한 것들만 정리 했습니다.
현업에 개신 개발자 분들은 다들 아시는 내용이겠지만, 정작 우리 주위엔 웹을 많이들 쓰고, 관련해서 일을 하면서도 웹의 내부에 대해서는 잘 모르고 있는 사람들이 많습니다.
웹의 기반기술을 제대로 아는것이, 우리가 좀더 웹을 진지하게 접근하는 것의 시작이라고 생각합니다.
인터넷의 역사부터 웹의 탄생, HTTP 와 REST 등, 우리가 현재의 웹을 이해하는데 필요한 것들만 정리 했습니다.
현업에 개신 개발자 분들은 다들 아시는 내용이겠지만, 정작 우리 주위엔 웹을 많이들 쓰고, 관련해서 일을 하면서도 웹의 내부에 대해서는 잘 모르고 있는 사람들이 많습니다.
웹의 기반기술을 제대로 아는것이, 우리가 좀더 웹을 진지하게 접근하는 것의 시작이라고 생각합니다.
웹 사이트의 빠른 로딩을 위한 프론트 엔드 최적화 기법과 더불어 알아두어야 할 HTTP 프로토콜 최적화를 언급하며, 최근 발표된 HTTP/3를 소개합니다.
HTTP/3는 "Hyper Text Transfer Protocol over QUIC"의 내용을 근간으로 UDP의 장점을 HTTP에 활용한 버전입니다.
HTTP/3를 알기 위해서는 QUIC에 대한 이해와 함께, 기존 버전인 HTTP/2에서 어떤 부분이 개선되었는지에 대한 이해가 동시에 필요합니다.
Chrome을 활용한 웹 성능 비교 예제들은 HTTP/3의 기술들을 빠르게 이해하는 데 도움이 될 것입니다.
2. 1
IPv6
Features
. IPv4 의 32bit 주소 체계에서 128bit 주소 체계 로 확장을 의미하며, 아래와 같은 추가적인 특징을 지닌다.
1) Packet 크기 확장 : 64KB에서 제한이 없도록
2) 효율적인 Routing : IP header 확장 (단순화 된 고정 Header + 확장 Header)
3) QOS : Flow Label 개념 도입, 특정 Traffic high priority
4) 인증 및 보안 기능
5) 이동성 : 물리적 위치에 제한 받지 않고 같은 주소를 유지 하면서 자유롭게 이동
적용 되어야 할 Protocols
구성도
구분 IPv4 IPv6 비고
Socket DOMAIN : PF_INET4
Sockaddr
DOMAIN : PF_INET6
Sockaddr6
TCP / UDP TCP / UDP TCP / UDP 동일
IP IPv4 IPv6 IP Header 가 확장되어 IPv6 feature 를 표현한다
DHCP DHCPv4 DHCPv6
IP Layer Protocol ARP / ICMP / IGMP ICMPv6 3가지 기능 및 DHCP 일부 기능이 통합 됨
기타 getHostByName getHostByName2 Linux System Call
App Socket v6 TCP
UDP
IPv6
ICMPv6
DHCPv6
Network
Device
3. 2
IPv6
IPv6 주소 획득 방법
. 아래 두 가지 방법이 사용 된다
(1) Stateless 방법 : Router 가 ICMPv6 의 RA message 로 지정
(2) Stateful 방법 : DHCPv6 를 사용 (우선 RA message 의 M/O flag 정보를 보고 판단한다)
주소체계
용도 Range 설명
Unicast 2000::/3 Global Unicast 주소로 칭 한다
Multicast ff00::/8 . 두 가지 rule 이 있다
Rule-1 : Flag ORPT – Scope – Group ID
Rule-2 : Flag ORPT – Scope – Prefix – Network Prefix – Group ID
. Scope : 네트웍 레벨 전파 범위를 나타낸다
Global > Org Local > Site Local > Link Local > Node Local
Site Local = Router 단위, Link Local = Switch 단위, Node Local = Host 를 의미
. Group : 서버 레벨 전파 범위를 나타낸다
All Nodes, All Routers, PIM Router, All DHCP Agents, All DHCP Servers, NTP server
Local fe80::/10
fec0::/10
Link Local 내 에서 관리용 으로 사용되는 주소 (예. RA 시 Router 의 소스 IP 로 사용)
Site Local 내 에서 관리용 으로 사용되는 주소
Unique Local fc00::/8 ~ fcff::/8
fd00::/8 ~ fdff::/8
Unique Local Reserved
Unique Local Random /48 subnets
All 0 ::/128 IP 미 설정 상태 의 발신주소
All 1 ::1/128 Local Loop back 주소 (IPv4 의 127.0.0.1 과 동일)
주1. 2000::/3 의 의미는 2000:000x:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx 이다
주2. HW MAC 주소는 기존과 동일하며, Unicast 와 Multicast 만이 사용된다 (Broadcast 적용이 없다)
Multicast 는 33:33:xx:xx:xx:xx 형태 이며, 하위 32 bit 는 IPv6 주소의 하위 32 bit 와 동일하다
4. 3
Mobile IP
Features
. TCP / IP 를 기반으로 하며, 기지국 이동 시 부가 주소 (CO Address) 를 사용한다
. Triangle routing, Tunneling 기법이 사용된다
. 기지국 이동 시, 절차도 (Step 1~6) 그림
Internet
Home
Agent
Foreign
Agent
Mobile
Home
Network
Data Base
Mobile
Node-1
Server
Source-IP : Server
Destination-IP : Mobile Node Home Address
전화번호,HA,,,
Foreign
Home
Network
Mobile
Node-1
1) 이동 2) Search FA
3) Registration FA
4) Assign CoA
5) 신고
6) Tunneling
Home Address CO Address
RX Datagram
TX Datagram
5. 4
HTTP
Hyper Text Transfer Protocol
. TCP (connection oriented) 응용 계층으로, Web 상에서 서버 와 client 간 data 전송방법
. Text 기반 Message, Message 의 종류를 구분하는 것을 Method 라 칭 하며, 작업 의 종류를 구분한다
. HTTP Message 는 Header 와 Body 로 구성
MAC Header IP Header TCP Header HTTP Message
Packet Switching
Network
HTTP
TCP
IP
Socket
Data Link & PHY
HTTP
TCP
IP
Socket
Data Link & PHY
Web
Browser
Client
Web
Browser
Server
< Method >
GET retrieve header and body
POST insert
PUT update
DELETE delete
HEAD retrieve header only
OPTIONS supported methods
TRACE echo test
WebKit
index.html
http://www.hungrok.com:80/index.html www.hungrok.com
6. 5
HTTP
URI (Uniform Resource Identifier)
. URI = URL (Locator) + URN (Name)
. URN : 불변하지 않는 자원이름, 거의 사용이 되지 않는다
. URL
주1. 서버의 resource 를 지칭 하며, 위치 및 query parameter 를 포함 할 수 있다 : http://host [:port] [ abs_path [?query]]
주2. 특정한 자원이 지정되지 않으면, 서버는 default 자원을 대상으로 한다 (/index.html)
주3. query parameter 는 Get Method 시 에만 사용된다 (?)
Method 상세 설명
. 사용자 가 브라우저 에서 지정하여 사용하는 방식은 GET method 를 사용한다
Method 설명
GET . Request URI 에 명기된 Information 을 가져오는 것 (retrieve) 이다
. Information 은 정적인 data 뿐만 아니라 data producing process 도 의미한다
. 상기 사유로 Form 에 대하여 Get Method 를 사용하는 것이 가능하다
. Request Line : GET do1.asp ?name=kwon&age=28 HTTP/1.1
POST . Request URI 에 지정된 서버의 resource 에 새로운 종속물로서 Entity 를 보낸다
. Submit 개념으로 종속물은 Entity Body 로 간다
. 서버의 리소스는 서버의 action 을 의미하며, 무슨 action 을 하는지는 서버의 고유사항 이다
. 예 : Posting message, Providing a block of data (Form), Extending a database, File 송부
. Request Line : POST do1.asp HTTP/1.1
Entity Body : name=kwon&age=28
PUT . Request URI 에 지정된 서버의 resource 하부 (under) 에 stored 하는 목적으로 enclosed entity 를 보낸다
. Upload 개념으로 enclosed entity 는 Entity body 로 간다
. 만약 기존에 있는 resource 라고 하면, Replace 되어야 한다
. 보안을 위하여 서버에서 일반적으로 사용되지 않는다
. Request Line : PUT /image/mypicture.jpg HTTP/1.1 단일 파일만 전송가능 할 것이다 (?)
7. 6
HTTP
POST MultiPart 전송
. Multi Entity 를 보내는 것을 의미한다 (email 에서 다수의 첨부파일 송부 도 마찬가지 개념)
. Entity Header 의 Content-Type 에 정의를 한다 (이를 MIME 이라한다)
. HTML Form 을 사용하여 전송 시 Content-Type 사용 예
1) 단일 Part 송부, 쌍 (Key & Value) 으로 송부 : Content-Type = “application/x-www-form/urlencoded”
Entity Body = Name=Steve+Johnson&email=xyz@hanmail.net
2) 단일 Part 송부, text 로 송부 : Content-Type = “text/plain”
3) MultiPart 송부 : Content-Type = “multipart/form-data;boundary=XXXX”
boundary 는 특정한 text 형식으로 (예. “-------end of part --------”), 서버에서 Parsing 을 용이하게 하기 위함이다
. 파일을 송부하는 경우에는 MultiPart 방식 으로만 가능하다
. Form 사용 시 MultiPart 전송 모습
Resource
(action)
POST
Entity Header
Part 1
Entity Body
Part 2
Entity Body
Part 3
Entity Body
Boundary (Text)
Boundary (Text)
Boundary (Text)
Boundary (Text)
Content-Type =“multipart/form-data;boundary=XXXX”
Content-Disposition; form-data; name=“Name”
Content-Disposition; form-data; name=“email”
Content-Disposition; form-data; name=“upload”, filename=“x”
Content-Type =“text/html
8. 7
HTTP
MultiPart 전송
. JAVA 에서 POST 를 사용하여 file 송부 하는 template code
HttpURLConnection conn = null; BufferedReader br = null; DataOutputStream dos = null; DataInputStream inStream = null;
InputStream is = null; OutputStream os = null; boolean ret = false;
String StrMessage = "";
String exsistingFileName = "C:account.xls";
String lineEnd = " ";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1*1024*1024;
String responseFromServer = "";
String urlString = "http://localhost:8080/FileUpload/requestupload";
FileInputStream fileInputStream = new FileInputStream( new File(exsistingFileName) );
url = new URL(urlString);
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
dos = new DataOutputStream( conn.getOutputStream() );
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name="upload";" + " filename="" + exsistingFileName +""" + lineEnd);
dos.writeBytes(lineEnd);
// create a buffer of maximum size
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// read file and write it into form...
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0)
{ dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize); }
// send multipart form data necesssary after file data...
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
9. 8
HTTP
Message 구성
. Request Line : GET /my/main.html HTML/1.1
. Response Line : HTTP/1.1 200 OK
< Request Header >
Accept
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Expect
From
Host
If-Match
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referrer
TE
User-Agent
< Response Header >
Accept-Ranges
Age
ETag
Location
Proxy-Authenticate
Retry-After
Server
Vary
WWW-Authenticate
< General Header >
Cache-Control
Connection
Date
Pragma
Trailer
Transfer-Encoding
Upgrade
Via
Warning
< Entity Header >
Allow
Content-Encoding
Content-Language
Content-Length
Content-Location
Content-MD5
Content-Range
Content-Type
Expires
Last-Modified
< Cookie Header >
Set-Cookie
Cookie
Request Message
. Request Line
. General Header
. Request Header
. Cookie Header
. Entity Header
Entity Body
If Entity Header
Response Message
. Response Line
. General Header
. Response Header
. Cookie Header
. Entity Header
Entity Body
If Entity Header
10. 9
MIME
Multipurpose Internet Mail Extension
. 전송되는 파일 (entity) 에 대한 실체를 명확하게 하기 위하여, HTTP 나 SMTP Header 에서 표현되는 내용 이다
. Entity Header 의 내용 중 에 content-type 과 content-transfer-encoding, content-id, content-description 으로 실체를 명확하게 표현한다
. 실체 의 표현 : 응용계층 종류, 적용된 Character Set, Transfer-encoding 종류
. Character Set : Text 파일이 만들어 질 때 적용된 문자 code
. Transfer-encoding : 전송 format (text 인지 binary 인지)
Base64
. Binary 를 text 로 encoding 하는 방법 이다
. 그냥 Binary 로 보내면 되지, 특별히 encoding 을 사용하는 이유는 아래와 같다
(1) 초기 SMTP 에서 원래의 Binary 를 Text 로 encoding 하는 방법 만을 사용 하였다 – 왜
(2) Web HTML 표준의 Java Script 초기에는 Text 만으로 HTTP Get 을 적용 하였다 (XMLHttpRequest)
(3) 현재는 Binary 만으로 송신하는 방법이 나왔으나, 그전 사용 분 의 유지로 인하여 상당부분 Base64 는 사용 되어지고 있다
전송
Entity
HTTPHTTP Header
. MIME Header
Original
Entity (Binary)
Binary to
Text
Encoding
Base64
TCP Packet
Original
Entity (Text)
파일 (Entity) 은 크게 분류하면
Text 혹은 Binary 두 가지 로 분류 된다
11. 10
MIME
Multipurpose Internet Mail Extension
. Binary data 를 Text 로 변환하는 일반적인 과정이다
. HTML 에서 사용하는 Form 객체는 아래와 같은 과정을 통하여 전송된다
< Content-type >
text/xml charset=UTF-8
text/html charset=UTF-8
text/plain charset=UTF-8,
text/plain charset=x-user-defined
application/json
application/xml
application/pdf
application/ms-tnef; name="winmail.dat"
image
audio
video
< Content-transfer-encoding 종류 들>
1) SMTP 처음부터 적용
7 bit ; ASCII 임을 나타낸다
Quoted-printable
Base 64 ; Binary Text (ASCII) encoding
2) SMTP 개정버전 에서 적용
8 bit ; 8 bit Text 임을 나타낸다
Binary ;
< Character Set 종류 들 >
ASCII ; 7 bit (메모리 상에서는 8 bit 점유)
ANSI, ISO8859, KSC_5601, EUC_KR ; 8 bit
Unicode ; 24 bit
UTF-8 ; Unicode Encoding (Unicode 가 메모리에 저장될 때 부터 UTF-8 로 저장된다)
X-user-defined ; 브라우저 에게 parse 를 하지 말고 bypass 시키라는 의미이다. Text/plain 이나 binary 를 가져 올때 사용 (구식)
BinaryObject
Serialize
Text
Form or File Byte Array
Base64 HTTP
12. 11
IP Streaming 기술
일반
. 서버 와 Client 간 교신 (Protocol) 및 Content 를 전송 (송수신) 하는 방법
. Content 의 포장은 Container 라 하고, 내용물은 Codec 으로 지칭 한다 (MPEG-2, MPEG-4,VC1,,)
. ABS (Adaptive Bitrate Streaming) 를 통한 QOS 보장
. 주요 IP Streaming 기술
1) RTP / RTSP : IETF Standard (RFC 2326) , IPTV 에서 대부분 사용 중
2) Smooth Streaming : Micro Soft
3) HLS (Http Live Streaming ) : Apple
4) MPEG4-DASH : MPEG4 Standard
Internet
Streaming
Server
Client
Client
Contents
< Provider >
. ISP
. YouTube, Apple
. Netflix, Amazon, BUDU, HULU
13. 12
IP Streaming 기술
RTSP / RTP
. RTSP : Session (Signaling) Protocol 을 담당하며, HTTP Message 와 거의 유사한 TCP 응용계층 이다
. RTP : Streaming 전송을 담당한다 , SIP Protocol 에서도 사용
. Methods : DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, RECORD, GET-PARAMETER, SET-PARAMETER, ANNOUNCE, OPTION
Session
Server
Stream
Server
Session
Client
Player
Client
RTP over UDP
Streaming Video, Audio
RTSP over TCP
Methods (Describe Setup Play )
Request Request
Presentation
Description
Content
Version | Padding | Extension Header | CSRC Length | Marker | Payload Type | Sequence Number |Time Stamp | SSRC | CSRC | Payload
Extension Header : 확장 Header 사용여부
Marker : RTP profile 에 따라 정의 및 사용이 결정된다
Payload Type : DynamicRTP-Type-96
SSRC : Synchronization Source, 무작위 번호로서, 각 RTP session 에 대해 RTP stream 소스를 식별하는데 사용
CSRC : Contribution Source, RTP 세션에 기여한 여러 스트림 의 소스를 나타내는데,
RTP 세션에서 각 소스의 SSRC 값이 RTP 믹서에 의해 CSRC 값에 추가됩니다.
Content
Server
10.10.10.10/movie1.mpg
Session
Client
HTTP Get (Content ID)
Response (10.10.10.10/movie1.mpg )
14. 13
IP Streaming 기술
RTSP Message
. Request Line : Method RTSP/1.0 URI
. Response Line : RSTP/1.0 200 OK
. Entity Body 가 있어야 만이 Entity Header 는 존재한다
< Request Header >
Accept
Accept-Encoding
Accept-Language
Authorization
From
If-Modified-Since
Range
Referrer
User-Agent
< Response Header >
Location
Proxy-Authenticate
Public
Retry-After
Server
Vary
WWW-Authenticate
< General Header >
Cache-Control
Connection
Date
Via
< Entity Header >
Allow
Content-Base
Content-Encoding
Content-Language
Content-Length
Content-Location
Content-Type
Expires
Last-Modified
Extension-Header
Response Line
CSeq
General-Header
Response-Header
Entity-Header
Entity Body
Request Line
CSeq
General-Header
Response-Header
Entity-Header
Entity Body
15. 14
IP Streaming 기술
HLS
. Container & Codec : MPEG-TS , Video-H.264, Audio-AAC/AC3
. The PAT/PMT shall be included in MPEG-TS
. m3u8 file for meta data
HLS
Stream
Segmentation
Web
Server
Meta data
(m3u8)
Ts-1
Ts-2
Ts-n
http get
Adaptive
Bitrate
. Meta data 는 순차적으로 계속 Update
. TS 는 일반적으로 10초 정도 duration
Client
< 순서 >
1) Get meta file
2) Get TS file according to meta
3) Playing
* 상기 과정을 반복
16. 15
Open Platform - Android
Features
. JAVA 및 Linux 기반 이며, DALVIK JVM 을 사용하며, Bionic Tool Chain 을 사용하는 특징을 지닌다
. App 개발의 편의성을 위하여 IDE 에서 UI 작업을 쉽게 할 수 있는 툴 (layout XML r.java) 을 제공한다
Android App
Native
Libraries
App Framework
(Java)
Run-time Core Lib.
DALVIK JVM
LINUX Kernel
HAL
JNI
Bionic
Tool Chain
Activity Manager
Window Manager
Content Provider
View Systems
Package Manager
Telephone Manager
Location Manager
Notification Manager
Surface Manager
Media Framework
SQLite
OpenGL/ES
FreeType
SGL
SSL
LibC
POSIX
Network
File System
Root
File System
/System /Data /Sdcard
Manifest.xml
Resource.xml
Layout XML
17. 16
Open Platform - WebKit
Features
. Web Engines 계열 들 : Webkit (Safari, Chrome), Gecko (Moziila-FireFox), Tridant (IE), Opera
. Webkit has 3 Processors : Web, GPU and Plug-In
Frame View Loader
DOM
HTML 4.5
CSS
SVG
Render TreeJava Script
CORE
WebView (WebkitWebFrame, WebkitWebView)
UI framework
Port
Plug-In
Bridge
HTML
Parser
Graphic Port Multimedia
Port
Network
Port
Device, DB
Port
Web Core
WebKit BE APIs
SPNAV
NPAPI
Plug-Ins
GTK+ Cairo
FreeType
UniPlayer
GStreamer
Lib Soup
18. 17
Open Platform - DLNA
Features
. 여러 기기간 Content 를 전송하고 Share (Play) 하는데 목적이 있다
. 특정화 된 규약이 아닌, 여러 가지 기존의 관련 규격 을 채용한 집합체 이다
-. Media Transport : HTTP, AV & Device Architecture : UPnP
-. Media Formats : DVB, Link Protection : DTCP-IP, Network Connectivity
. 미디어 레벨에서 상호운영을 보장하기 위한 Media Format 에 대한 Command base 를 제공한다
규격 별 Device Class 명칭
. OCAP 은 DLNA 를 이용한 App 및 MW 역할 까지 확대하여 OCAP Home Network 표준을 적용 함.
개념도 및 Server 의 service 종류
UPnP DLNA OCAP-HN
Device Class Player
Server
Render
Media Server Control Point
Media Server Device
Media Render
DMP
DMS
DMR
OC-DMP
OC-DMS
UPnP
Screen
Media Server
Device
Contents
Media Server
Control Point
Content
Transfer
Subsystem
Content
Create
Subsystem
Content
Management
Subsystem
Content
Storage
Database
AV
Transport
Service
Schedule
Recording
Service
Content
Directory
Service
Connection
Manager
Service
19. 18
Open Platform - DLNA
UPnP Architecture
. 모든 메시지 및 Data 가 http 로 전송 되어진다
. 별도 Protocol 의미는 특별한 HTTP (Method, Header, Body) 를 지니는 것을 의미한다
Works Protocol Method in
CP
Method in
Device
Message
Body
비고
Discovery SSOP
M-Search
Advertising
Notify
None
None
None
Multicast, Sub network 내 에서만 탐색가능
Description Generic Get XML 디바이스 가 지닌 서비스 및 임베디드 Device 에 대한
Capability 및 구체적인 정보획득
Control Generic
(SOAP)
Post XML CP 가 특정 action 을 Device 의 서비스 에게 요청하고
결과를 받는 것 이다
Eventing GENA Subscribe
Unsubscribe
Notify
None
None
XML
CP 가 Device 에게 특정 Event 를 요청 하는 것이다
Presentation Generic Get HTML 표현 할 UI 를 위함 (미사용)
Media
Transport
Generic Head
Get MPEG-TS
Content 를 playback 하기 위함
Head request 를 통하여 Playback (JMF) 정보
. Byte Seek for position
. Play Speed for set rate
20. 19
암호
암호 방식의 분류 : 대칭 Key 대 비대칭 Key
대칭 Key 방식은 아래와 같은 특징을 지닌다
1) 암호 및 해독에 필요한 Key 를 송신자, 수신자 간 사전에 공유하여 같이 사용한다.
2) 공유하는 방법을 Secure 하게 적용 하여야 하며, 이를 SAC (Secure Auth. Channel) 이라 칭한다.
3) DES, 3DES, AES, DVBCSA 가 범용적으로 사용되는 대칭 Key 종류이다.
RSA 비 대칭 Key 방식은 PKI 기반 (인증서) 의 공개 Key 를 사용하는 것으로서 아래와 같은 용도로 사용된다
1) 상호 인증 (Mutual Authentication) : 송, 수신자간에 인증 chain 에 의하여 상호 인증.
2) 전자 서명 (Signature) 및 검증 (Verify) : 특정한 data 에 대한 무결성 목적으로 서명
주로 지문을 Private Key 로 signature 하고 Public Key 로 검증 (verify)
3) 특정한 data 의 암호 및 해독 : 주로 대칭 Key 를 암호화 해서 보낼 때 사용.
Public Key 로 enciphered 시키고, Private Key 로 deciphered 를 적용한다
* Public Key 의미는 상기 기능을 적용하기 위하여, 외부에 공개하는 key 를 의미한다
Private Key 의미는 나 만이 지는 고유한 Key 로서 공개하지 않는다
* PKI 기반 인증서 내용
구분 내용
Header 버전,일련번호,
서명알고리즘,서명Hash알고리즘,
발급자,유효기간,주체
공개 Key
(Public Key)
1024 Bit
(각 개별적인 (최종 3단계) 인증서 마다 내용이 상이하다)
Extension 기관키 식별자,
키사용 (Digital Signature, Key encipherment)
지문
(인증서내용 Hash)
지문 알고리즘,
지문 – SHA 를 이용한 hash-code 값 (160bit)
21. 20
암호
RSA 전자서명 (Signature) 및 검증 (Verify)
. 수신 측은 발신 측에 보내준 Public Key 를 사전에 지니고 있다
. Hash (지문) 이란 압축되어 표현되는 data 이다
. 서명은 인감도장 이고, Verify 가 인감을 증명하는 것이다
RSA Data Encryption and Decryption
. 발신 측 은 사전에 수신 측 으로 부터 Public Key (인증서 에 포함) 를 획득한다
. HTTPS 에서 이 방법을 사용한다 (서버 가 수신 측 이며, Client 가 발신 측 이다)
Private KeyHashData
Hash Code Signature
Data
Signature
Public Key
Hash Code
Verify
발신 측 수신 측
Hash
Data Encipher
Enciphered
Data
Public Key발신 측 수신 측
Decipher
Data
Private Key
22. 21
암호
Open SSL
. Utility 로 아래 기능을 담당한다 (DOS 용 버전)
(1) RSA 기반 (비대칭) private, public Key 발행, 인증서 발행
(2) RSA 기반 Signature, Verify, Encryption, Decryption
(3) Message Digest
(4) 대칭 Key 기반 Encryption / Decryption
. Key 및 인증서 제작과정
genrsa
prvkey.pem
rsa
pubkey.key
base64
private.key
req
private.csr
X509
private.cer
- out pverkey.pem 1024 - in pverkey.pem
- out pubkey.key
- pubout
- outform DER
- new
- key private.key
- out private.scr
- req
- days
- in private.scr
- out private.cer
- signkey private.key
- d in prvkey.pem –out private.key
rsautl
- sign
- verify
- encrypt
- decrypt
23. 22
OFDM (Orthogonal Frequency Division Multiplexing)
. 고속의 전송률을 갖는 데이터열을 낮은 전송률을 갖는 많은 수의 데이터열로 나누고, 이들을 다수의 부반송파를 사용하여 동시에 전송
. 따라서 OFDM 기법은, 1개 채널의 고속의 원천 데이터열을 다중의 채널로 동시에 전송한다는 측면에서는 "다중화 기술"이며,
다중의 반송파에 분할하여 실어 전송한다는 측면에서는 일종의 "변조 기술"이다.
. 각 부 반송파의 파형은 시간축 상으로는 직교(Orthogonal)하나, 주파수축상에서는 겹치게(Overlap)된다
. 직교란 decoupling 의미이며, sub carrier 간 간섭을 없게 하는 방법이다
. OFDM 과 다중 Access 방식 :
OFDM – TDMA : 사용자를 시간 slot 에 배정 , 802.11n
OFDM – FDMA : 사용자를 sub-carrier 에 배정
OFDMA : 사용자를 RB 에 배정 – 특정 귀속 없이 무작위 (?) , 4G-LTE
. In the OFDM signal for the IEEE 802.11n Wi-Fi standard, 56 subcarriers are spaced 312.5 kHz in a 20-MHz channel.
Data rates to 300 Mbits/s can be achieved with 64QAM.
. OFDMA
Divides a channel into multiple narrow orthogonal bands that are spaced so they don’t interfere with one another.
Each band is divided into hundreds or even thousands of 15-kHz wide subcarriers.
To implement OFDMA, each user is assigned a group of subchannels and related time slots. The smallest group of subchannels assigned is 12
and called a resource block (RB). The system assigns the number of RBs to each user as needed.
F1
F2
F3
F4
F5
F6
F7
F8
Time Slot
TDMA FDMA OFDMA
전송기술
24. 23
전송기술
대역폭 확산 (Spread Spectrum)
. Shanon 통신용량 공식 : 주파수 대역을 크게 하면, S/N 이 작더라도 동일한 통신 용량으로 통신 할 수 있는 원리
. 주파수 대역을 크게 하는 이유는 정보를 추가하기 위함이며, 추가된 정보 (확산코드) 는 암호 (사용자 고유화) 및 동기화 (전송순서) 목적
. 예로, 15Khz 대역에 1 bit 를 전송 시킬 수 있다고 하면, 5배의 대역폭 확대로 5 bit 를 전송시킬 수 있다 (Direct Sequence 방식)
당연히 전력밀도 (Power Level) 는 낮아질 것이며, 이에 상응하는 S/N 은 작아 질 것이다
. 확산코드 로 의사잡음부호 (Pseudo Noise Code) 로 를 사용하며, 주로 피나보츠 의 LSPR (Linear Sequence Shift Register) 이 사용된다
LSPR 은 주기적-순차적-패턴화가 적용된다
. 예를 들어 PNC 가 10110 라 하면, 원 송신 data (1 혹은 0 ) 에 PNC 를 Exclusive OR 하여 1 인 경우 01001, 0 인 경우 10110 을 송신한다
. 사용된 확산코드 는 사용자 별 고유화 (예를 들어 PIN 값으로 LPSR 상위 값 을 가져간다) 를 통하여 Multi user 가 가능하다
. 대역폭 확산방식
1) Direct Sequence 방식 : CDMA 에서 사용 , 확산code 사용
2) Frequency Hoping 방식 : BlueTooth 에서 적용 , Hoping code 사용
Hoping 에 따라 일정 간격으로 채널 영역내의 sub-carrier 를 이동 하면서 전송, 사용되는 sub-carrier 가 확산code 목적을 가져감
10110
15Khz
1
75Khz
25. 24
전송기술
대역폭 확산
. 3G - CDMA 에서 적용
This code spreads the voice signal over a bandwidth of 1.25 MHz.
Many such signals can occupy the same channel simultaneously. For example, using 64 unique chipping codes allows up to 64 users to
occupy the same 1.25-MHz channel at the same time.
At the receiver, a correlating circuit finds and identifies a specific caller’s code and recovers it.
The third generation (3G) cell-phone technology called wideband CDMA (WCDMA) uses a similar method with compressed voice and
3.84-Mbit/s chipping codes in a 5-MHz channel to allow multiple users to share the same band.
. Time slot (1초 내에서 분할한 시간) 개념이 없이, 1초 내에 10,000 개의 Symbol 을 전송하는 능력을 가졌다면 아래와 같이
Multi User 는 표현 될 것 이다 - 시간 이나 주파수를 고유하게 할당하지 않는 공유 개념
DOCSIS (Cable Internet ) 전송기술
. 하향 : Shared 개념으로 전체 사용자에게 data 송신, 사용자는 자기에 해당하는 data (MAC 주소) 만 수신한다 (CSMA 방식)
. 상향 : Single channel TDMA, CDMA 방법 사용
만번째 Symbol
사용자-C
1st Symbol
사용자-A
1초
. . . .
26. 25
전송기술
Modulation (변조)
. 변조 란 : 디지털 정보를 전송을 위하여 아날로그 형태로 변환
. 64 QAM 복조 방법
1) 아날로그 적으로 표현되는 단위를 Symbol 이라 한다
2) 해당 심볼 이 0 도 위상 (In phase, 가로축) 에서의 진폭 8가지 중에 어디에 해당하는가
3) 해당 심볼 이 90 도 위상 (Quadrature phase, 세로축) 에서의 진폭 8가지 중에 어디에 해당하는가
4) 상기 를 조합하면 해당 성좌 점이 나오며, 성좌 점에 해당하는 bit pattern (사전 약속사항) 이 특정 Symbol 에서 표현하는 data 이다
. 각종 Modulation 방법
Modulation Bits per Symbol Remark
FSK
GMSK
BPSK
QPSK
8PSK
16 QAM
64 QAM
256 QAM
< 1
1.35
1
2
3
4
6
8
주파수위상변조
180 도 위상
180 도 위상, 2단계 진폭
2가지 위상 (I,Q) + 4단계 진폭 , 16개의 성좌점
2가지 위상 (I,Q) + 8단계 진폭 , 64개의 성좌점
2가지 위상 (I,Q) + 16단계 진폭 , 256개의 성좌점
I Phase
Q Phase
1 symbol in 64QAM
<성좌 점>
. Bit0~5 중 하나의 pattern 을 지칭
. 예 “110110”
. 총 64개 (이진으로 6 bit 를 표현)
< Symbols Per Second >
. DOCSIS : 5.0596941 Mega symbols