얇지만얇지않은 tcp/ip 소켓프로그래밍 판 - 김건웅 교수...

48
목포해양대 해양전자통신공학부 얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2Chap. 5 Sending and Receiving Data

Upload: vutram

Post on 28-May-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부

얇지만 얇지 않은

TCP/IP 소켓 프로그래밍 C 2판

Chap. 5 Sending and Receiving Data

Page 2: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

제 5장 데이터의 송수신

5.1 정수 인코딩

5.2 메시지 생성, 프레이밍, 그리고 파싱

5.3 마무리

Page 3: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

TCP/IP 바이트 전송

TCP/IP 프로토콜은 바이트(bytes)를 전송함

응용 프로그램끼리 의미를 부여할 뿐, TCP/IP는 단지 단위데이터를 전송

택배 기사는 내용물에 큰 의미를 부여하지 않으며 단지 택배 박스를원하는 곳으로 전달할 뿐

Application

TCP/IP

byte stream

Application

TCP/IP

byte streamHere are some bytes. I don’t

know what they mean.

I’ll pass these to the app. It knows

what to do.

Page 4: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

전송 데이터의 자료형 (1)

문자열(String) 전송: 가변 길이 전송

장점 사람이 읽기 쉬움

메시지의 확장이 용이하며 무제한

단점 전송량 대비 전송 내용 비효율, 수싞 루틴 비효율, 연산 비효율

상호 협의 할 내용 문자 코드 페이지

ASCII, Unicode, UTF

메시지 경계 구분 (프레이밍: framing) 길이 명시 방식: 전송할 문자열의 크기를 고정크기의 자료형에 담아서 전송. 수싞자는 크기를

미리 파악하고 정확한 문자열만큼 수싞

구분자 방식: 널 문자 혹은 임의의 문자를 메시지의 경계에 삽입. 수싞자는 바이트 단위로읽다가 구분자가 나오면 메시지의 끝으로 확인

Page 5: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

전송 데이터의 자료형 (2)

문자열(String) 전송

숫자 전송의 예

문자 전송의 예

49 55 57 57 56 55 48 10

„1‟ „7‟ „9‟ „9‟ „8‟ „7‟ „0‟ \n

M o m \n

3 77 111 109

0 77 0 111 0 109 0 10

Page 6: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

char string[strBuffSize];

send(sock, string, strBuffSize, 0)

문자열 전송의 예(TCP)

주의점 : 버퍼의 크기

TCP는 운영체제에 의존적인 TCP 버퍼가 있으며이 보다 작은 크기로 send()를 호출해야 한다.

Page 7: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

전송 데이터의 자료형

정수형(Integer)의 전송

기본 자료형의 단위로 전송 2바이트, 4바이트 단위의 전송

주의 사항 2바이트 이상의 데이터 전송갂에는 항상 네트워크 바이트 순서로 전송해야 함

1바이트 교홖은 의미가 없음

Network byte order (Big-Endian)

- 다중 바이트의 메시지 교홖에 필수

- 호스트 바이트-네트워크 바이트 변홖 함수들 htonl(), htons(), ntohl(), ntohs()

0 0 92 246

23,798

246 92 0 0Big-Endian

Little-Endian

Page 8: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

int data;

send(sock, &data, sizeof(data), 0)

정수 자료형 전송의 예(TCP)

‘short’, ‘long’, ‘double’, ‘char’도 동일한방식으로 처리

Page 9: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

Encoding Integers by Hand

BruteForceCoding.c

byte ordering

signedness

각 함수들 내용 이해

Page 10: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

Wrapping TCP Sockets in Streams

FILE stream

FILE *fdopen( )

int fclose( )

int fflush( )

size_t fwrite( )

size_t fread( )

Page 11: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

Structure Overlays

실제로 구조체가 어떻게 구현되는지 이해필요

alignment를 위해 필요한 padding 이해

Page 12: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

Strings and Text

old-fashioned text

ASCII

“internationalizable” code

C99 extensions

wchar_t

size_t wcstombs( )

size_t mbstowcs( )

Page 13: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

Bit-Diddling : Encoding Booleans

C 언어의 bitwise 연산자 이해 필요

<<

>>

|

&

~

Page 14: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

5.2 Constructing, Framing, and Parsing

Voting Protocol

UDP로 구현시

TCP로 구현시

하나의 메시지 크기(경계)를 어떻게 판단할 것인가하는 문제 존재

방법 1: delimiter-based

방법 2: Explicit length

Text-based Message Encoding

Binary Message Encoding

Page 15: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 소개(1)

a machine independent data description language

CCITT (X.208) and ISO (ISO 8824) standard

define abstract syntax of application data

define the structure of application and presentation protocol data units (PDUs)

define SNMP, VOIP and IEC61850 MMS

Page 16: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 소개(2)

Application

component

data transfer

component

(e.g, TCP, OSI

session)

data transfer

component

(e.g, TCP, OSI

session)

Application

component

Local storage

(e.g, MIB)

Local storage

(e.g, MIB)

User User

local

mapping

user presentation

mapping

user presentation

mapping

Abstract

Syntax

(e.g., ASN.1)

local

mapping

encoding

rules

encoding

rules

Transfer

Syntax

(e.g., BER)

Page 17: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 소개(3)

Application Entity에 대한 규격 표현에 주로사용 Application Entity

정보의 의미(sematics)에만 의미를 두고 정보의 표현형식(syntax)에는 무관 함

추상구문을 기술하기 위한 기법 Application/Presentation Layer PDU(Protocol Data Unit) 표현

다양한 인터페이스나 통싞매체를 통하여전송되어야 할 정보를 기술하기 위한INL(Interface Notation Language)로 사용

Page 18: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 소개(4)

다양한 데이터 타입들의 표현

BOOLEAN

INTEGER

BIT STRING

OCTET STRING

NULL

REAL

ENUMERATED

SEQUENCE

SEQUENCE OF

GeneralizedTime

IA5String

BMPString

UTF8String

Page 19: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

BER(Basic Encoding Rules)(1)

BER 은 전송되는 데이터가 어떻게 인코딩되어야 하는지를 기술

기기특성, 프로그래밍 언어, 에플리케이션표현방법과 독립적

Application 1 Application 202 01 06

Age ::= INTEGER (0..7)firstGrade Age ::= 6

ValueLength

Tag } 전체

24 bits

Page 20: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

BER(2)

CCITT (X.209) and ISO (ISO 8825) standard

based on the use of a type-length-value (TLV) structure

Type Length Value

Page 21: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

PER-Packed Encoding Rules

BER과 마찬가지로 전송되는 데이터가 기기의 종류, 프로그래밍언어, 어플리케이션 프로그램의 표현방법과는 독립적으로 어떻게인코드 되어야 하는지를 기술

BER과는 달리 기본적으로 태그는 전송 앆 됨 그리고 length와value가 종단갂에 이미 약속이 되어 있다면 전송되지 않음

PER은 전송 시 대역폭을 보다 적게 사용하기 위한 목적으로정의되었으며, 소리와 영상을 전송하는 인터넷, 공중파 통싞과 같이대역폭이 중요한 곳이라면 어느 곳이라도 유용하게 사용

Application 1 Application 2110

Age ::= INTEGER (0..7)firstGrade Age ::= 6

total length of 3 bits

Page 22: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

XER-XML Encoding Rules

BER, PER과 마찬가지로 , 전송하기 위한 데이터의 장치의 종류, 프로그래밍언어 또는 어플리케이션 프로그램의 표현에 대해 독립적

축소된 규칙과는 달리 곧바로 읽기 쉽다.

좀 더 읽기 쉽게 하는데 목적이 있다.

추가 대역폭을 필요로 한다.

BCN 등 대규모 대역폭을 갖는 홖경에 적합하다.

Application 1 Application 2<Age>6</Age>

Age ::= INTEGER (0..7)firstGrade Age ::= 6

total length of 12 octets

Page 23: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1/인코딩 규칙 표준 문서

ITU-T Rec. X.680 | ISO/IEC 8824-1 - Basic ASN.1 Notation

ITU-T Rec. X.681 | ISO/IEC 8824-2 - Information Object Classes

ITU-T Rec. X.682 | ISO/IEC 8824-3 - Constraints

ITU-T Rec. X.683 | ISO/IEC 8824-4 - Parameterization

ITU-T Rec. X.690 | ISO/IEC 8825-1 Basic Encoding Rules (BER)Canonical Encoding Rules (CER)Distinguished Encoding Rules (DER)

ITU-T Rec. X.691 | ISO/IEC 8825-2 Packed Encoding Rules (PER)

Page 24: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 데이터 타입(1)

프로그래밍 언어와 같이 미리 정의된 몇 가지타입을 가진다.

사용자는 ASN.1이 제공하는 기본 타입 외에새롭게 정의된 타입을 사용할 수 있다.

타입 정의를 위한 일반적인 형식<typereference> ::= <type>

타입의 이름은 반드시 대문자로 시작해야 한다.

대부분의 ASN.1에서 미리 정의된 타입은대문자로 표기된다.

Page 25: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 데이터 타입(2)

BIT STRING

비트의 임의의 스트링

BOOLEAN

True/False

OCTET STRING

8진수 스트링

IA5STRING

ASCII 스트링

INTEGER

임의의 정수

REAL

임의의 실수

NULL

널값

Page 26: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 데이터 타입(3)

PrintableString

프린트 가능한 스트링

OCTET IDENTIFIER

객체를 식별하는 정수 값의 연속

SEQUENCE

서로 다른 ASN.1 데이터 타입들의 순서적 집합

SEQUENCE OF

동일한 타입의 순서적 집합

SET

서로 다른 ASN.1 데이터 타입들의 비순서적 집합

SET OF

동일한 타입의 비순서적 집합

Page 27: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

태그(Tags)(1)

정의된 모든 타입들은 태그를 지정 받는다.

태그는 ASN.1에서 표준으로 지정될 수도있고, 사용자가 지정할 수도 있고

태그는 두개의 부분으로 구성된다

Class Universal, Application, Private and Context SpecificNumber non-negative integer of arbitrary size

태그는 PER에 의해 인코딩 되지 않는다

Page 28: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

태그(Tags)(2)

Universal Class

세계적으로 유일하게 지정되지 않으면 앆되는 클래스

Application Class

어떤 특정 ASN.1 모듈 속에 유일하게 정의되지 않으면 앆되는 클래스

해당 클래스의 데이터 형은 어떤 특정한 응용 속에서만 사용될 태그

Context-Specific Class

구조 형의 ASN.1 데이터 형 속에 유일하게 지정되지 않으면 클래스

해당 클래스 태그는 정의되어 있는 데이터 형 속에 의미를 가지며, 외부에서는 의미를 갖지 않음

Private Class

상호 합의 되어있는 어떤 특정 기업 및 단체에 속에서 유일하게 지정할수 있는 클래스

Page 29: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

태그(Tags)(3)

BER

4개의 구성요소로 구성

Identifier Octets

Contents Octets

End of Contents(EOT)

Length Octets

Identifier Octets의 Encoding

데이터 값의 형식에 대한 태그 값을 encoding

태그 번호의 범위가 0~30이면 ID Octet은 단일 Octet으로 구성

1~5 비트 : 태그 번호

6비트 : P/C (0 : 기본요소, 1: 구조화)

7~8비트 : 태그 클래스(00, 01, 10, 11)

8비트 7비트 6비트 5비트 4비트 3비트 2비트 1비트

Page 30: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

태그(Tags)(4)

BER-계속

Identifier Octets의 Encoding –계속 태그 번호가 31보다 크면 ID. Octet은 하나 이상의 다음

Octet이 따르는 선행 Octet 의로 구성

011111111P/C태그클래스

선두 Octet

연속 Octet

태그 번호

Page 31: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

태그(Tags)(5)

BER –계속

Length Octet

단형길이

Contents Octet의 길이를 encode하며, 최대 127개 까지 나타낼 수 있음

장형길이

초기는 길이 Octet의 길이를 나타내며, 길이 Octet은 내용 Octet의 길이를니타냄

불확정 길이

Contents Octets이 EOT에 의해 끝남

ID. Octets 0 길이

Contents Octets

ID. Octets 1 초기

길이 Octet Contents Octets

000010000000ID. Octets

Contents Octets EOT

Page 32: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

태그(Tags)(6)

BER- 계속 Contents Octets

O 또는 하나 이상의 Octet으로 구성되며 ASN.1 데이터 값을encode

BOOLEAN 값 encode

ID. Octets : 1

부호화 형 : 기본 요소

Contents Octet : 단일 Octet

내용 값 : FALSE(0), TRUE(1)

정수 값 encode

ID. Octet : 2

부호화 형 : 기본 요소

Contents : 하나 이상의 Octet으로 구성되며, 2의 보수로 표시함

Page 33: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

태그(Tags)(7)

TypeSNMPv1protocol

SNMPv2protocol

ASN.1 Tag Tag Number

Tag Value

INTEGER/Integer32

OCTET STRING

NULL

OBJECT IDENTIFIER

SEQUENCE

IpAddress

Counter/Counter32

Gauge/Gauge32

TimeTicks

Opaque

Counter64

UNIVERSAL 2

UNIVERSAL 4

UNIVERSAL 5

UNIVERSAL 6

UNIVERSAL 16

APPLICATION 0

APPLICATION 1

APPLICATION 2

APPLICATION 3

APPLICATION 4

APPLICATION 6

0x02

0x04

0x05

0x06

0x10

0x00

0x01

0x02

0x03

0x04

0x06

0x02

0x04

0x05

0x06

0x30

0x40

0x41

0x42

0x43

0x44

0x46

Page 34: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(1)

BOOLEAN

Values true or false

Tag UNIVERSAL 1

Type Notation

Married ::= BOOLEAN

ValueAvailable ::= BOOLEAN

Page 35: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(2)

INTEGER

Values 숫자로 구성양수 또는 음수, 크기 제한 없음

Tag UNIVERSAL 2

Type Notation

Size ::= INTEGER

Color ::= INTEGER {red(0),

blue(1),

yellow(2)}

Page 36: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(3)

ENUMERATED

Values 음수가 아닌

정수값으로 구성됨

TagUNIVERSAL 10

Type Notation

Color ::= ENUMERATED {

red(0), blue(1), yellow(2)}

Color ::= ENUMERATED {red, blue, yellow}

Page 37: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(4)

REAL

Values 실수 값(부동 소수점) 숫자들

Tag UNIVERSAL 9

Type Notation

PoundsPerSquareInch ::= REAL

Page 38: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(5)

BIT STRING

Values 비트의 문자열, 길이 제한 없음

암호화/FAX 데이터

Tag UNIVERSAL 3

Type Notation

DigitizedVoice ::= BIT STRING

Color ::= BIT STRING

{red(0), blue(1), yellow(2)}

Page 39: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(6)

OCTET STRING

Value 옥텟 (8-bit bytes) 으로 구성된 문자열

Tag UNIVERSAL 4

Type Notation

TransparentType ::= OCTET STRING

BinaryFile ::= OCTET STRING

Page 40: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(7)

NULL

Values 널(NULL)

Tag UNIVERSAL 5

Type Notation

PlaceHolder ::= NULL

Page 41: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(8)

SEQUENCE

Values 순서가 있는 값들의 나열

Tag UNIVERSAL 16

Type Notation

PersonnelRecord ::= SEQUENCE {

name OCTET STRING,

location INTEGER {homeOffice(0),

fieldOffice(1),

roving(2)},

age INTEGER OPTIONAL

}

Page 42: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(9)

SEQUENCE OF

Values 순서가 있는 값들의 반복

Tag UNIVERSAL 16

Type Notation

PersonnelRecord ::= SEQUENCE {

name OCTET STRING,

location INTEGER {homeOffice(0),

fieldOffice(1),

roving(2)},

age INTEGER OPTIONAL

}

PersonnelFile ::= SEQUENCE OF

PersonnelRecord

Page 43: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(10)

SETValues 순서 없는 값들의 목록

Tag UNIVERSAL 17

Type Notation

Building ::= SET {

address OCTET STRING,

occupied BOOLEAN

}

PersonnelRecord ::= [0] IMPLICIT SET {

name [0] IMPLICIT OCTET STRING,

location [1] IMPLICIT INTEGER

{homeOffice(0), fieldOffice(1),

roving(2)} OPTIONAL,

age [2] IMPLICIT INTEGER OPTIONAL

}

Page 44: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(11)

Seq :: = SEQUENCE {

one [1] INTEGER OPTIONAL

two [2] INTEGER OPTIONAL

}

SeqVal ::= Seq { one 10 }

IMPLICIT

SeqVal이 T(SEQ),L,[T(1),L,V(10)]로 인코딩

위와 같은 경우를 IMPLICIT 인코딩이라고 함

IMPLICIT이 의미하는 것은 [1]의 tag 정보만으로 실제의 type을 알 수 있기 때문에 굳이실제의 type을 사용하지 않는 다는 것을 의미

EXPLICIT Tag의 정보를 사용하고 실제 Type의 정보 또한 보내도록 하는 Option을 사용할 수 있음

이 경우 EXPLICIT TAG라고 함

T(SEQ),L,{T(1),L,[T(INTEGER),L,V(10)]}

Page 45: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(12)

IMPLICIT 기존 데이터 형 Tag를 치홖

EncryptionKey ::= [UNIVERSAL 30] IMPLICIT OCTET STRING

기존 데이터 형이 옥텟 스트링형의 태그를 새로 지정한 태그[UNIVERSAL 30]으로 치홖하는 경우

EXPLICIT 기존 데이터 형의 태그를 치홖하지 않음

Page 46: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(13)

SET OF

Values 순서 없이 반복된 값들

Tag UNIVERSAL 17

Type Notation

PersonnelRecord ::= [0] IMPLICIT SET {

name [0] IMPLICIT OCTET STRING,

location [1] IMPLICIT INTEGER

{homeOffice(0), fieldOffice(1),

roving(2)} OPTIONAL,

age [2] IMPLICIT INTEGER OPTIONAL

}

PersonnelFile ::= SET OF PersonnelRecord

Page 47: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(14)

COMPONENTS OF인자들이 다른 SEQUENCE 또는 SET을 포함함을 표시하기 위해사용

CommonParameters ::= SEQUENCE {

responseRequired BOOLEAN,

requestID INTEGER}

ResponsePDU1 ::= SEQUENCE {

COMPONENTS OF CommonParameters,

result OCTET STRING}

--equivalent to

ResponsePDU2 ::= SEQUENCE {

responseRequired BOOLEAN,

requestID INTEGER,

result OCTET STRING}

Page 48: 얇지만얇지않은 TCP/IP 소켓프로그래밍 판 - 김건웅 교수 홈페이지lily.mmu.ac.kr/lecture/10ic/ch5.pdf ·  · 2010-06-07TCP/IP 소켓프로그래밍C 2 ... Application

목포해양대 해양전자통신공학부목포해양대 해양전자통신공학부

ASN.1 표현(15)

CHOICEValues 기술된 요소 중에 하나를 선택Tag 선택된 요소에 따라 결정Type Notation

MessageType ::= CHOICE {

text OCTET STRING,

codedNumeric INTEGER}

Division ::= CHOICE {

manufacturing [0] IMPLICIT SEQUENCE {

plantID INTEGER,

majorProduct OCTET STRING},

r-and-d [1] IMPLICIT SEQUENCE {

labID INTEGER,

currentProject OCTET STRING},

unassigned [2] IMPLICIT NULL

}