IP header에서 TOS(Type Of Service)필드는 packet의 우선순위를 나타낸다.

 

다음은 TOS필드에 대한 설명이다.

 

Type of Service - is how the datagram should be used, e.g. delay, precedence, reliability, minimum cost, throughput etc. This TOS field is now used by Differentiated Services and is called the Diff Serv Code Point (DSCP).

 

The following diagram illustrates the TOS field in detail:


 
Precedence - The following table details the precedence bits and their possible values:
  • 000 (0) - Routine
  • 001 (1) - Priority
  • 010 (2) - Immediate
  • 011 (3) - Flash
  • 100 (4) - Flash Override
  • 101 (5) - Critical
  • 110 (6) - Internetwork Control
  • 111 (7) - Network Control
Now the TOS bits themselves:
  • Delay - when set to '1' the packet requests low delay.
  • Throughout - when set to '1' the packet requests high throughput.
  • Reliability - when set to '1' the packet requests high reliability.
  • Cost - when set to '1' the packet has a low cost.
  • MBZ - checking bit.

 

TOS 필드 값을 설정하는 방법은 여러가지가 있는 것 같은데 내가 테스트 해서 얻은 방법은 다음과 같다.

 

unsigned int tos = 0x80; // precedence를 4로 설정

setsockopt(sock, IPPROTO_IP, IP_TOS, (const void *)&tos, sizeof(tos));

 

TOS의 precedence 값은 0-7까지 지정할 수 있으며, 주의할 점은 최상위 3bit를 값으로 사용한다는 것이다.

그래서 지정하려는 precedence값과 setsockopt 함수에 넣어주는 값을 잘 매칭시켜야 한다.

이를 정리하면 다음과 같다. 여기서 tos값이 실제로 setsockopt 함수에 넣어줘야 할 값이다.

 

level   tos       binary
 0     0x00  (000)0 0000
 1     0x20  (001)0 0000
 2     0x40  (010)0 0000
 3     0x60  (011)0 0000
 4     0x80  (100)0 0000
 ---------------------------- 아래부터 root 권한 필요, 혹은 권한 설정 필요
 5     0xa0  (101)0 0000
 6     0xc0  (110)0 0000
 7     0xe0  (111)0 0000

 

[ 권한에 대하여 ]

 

나는 일반계정으로 Linux에 들어가서 테스트 했는데 5이상의 값을 설정하려고 하면 계속 다음과 같은 에러가 떴다.

 

Operation not permitted

 

다음은 에러에 대한 설명을 찾은 것이다.

 

[EPERM] Operation not permitted.
 

The executing user profile must have *IOSYSCFG special authority to set options when the level parameter specifies IPPROTO_IP and the option_value parameter is IP_OPTIONS .

 

출처: http://publib.boulder.ibm.com/html/as400/v5r1/ic2962/index.htm?info/apis/ssocko.htm

 

[ 관련 링크 ]

 

1. socket 옵션에 대한 설명이 잘 되어있다. http://linux.die.net/man/7/socket

 

2. IP datagram에 대한 설명: http://www.rhyshaden.com/ipdgram.htm

 

3. setsockopt 함수에 대한 설명

http://publib.boulder.ibm.com/html/as400/v5r1/ic2962/index.htm?info/apis/ssocko.htm

 

4. IPv4/6에 설정하는 방법에 대한 설명: http://adioshun.springnote.com/pages/289965


출처 : http://blog.naver.com/57gate?Redirect=Log&logNo=60127366508


VOX

VOX는 Voice operated transmit (Voice Only Transmit) 음성만 전송한다는 의미이다.

이 글자'vox' 가 쓰여진것을 딱 한번 무전기에서 본적이있다.

역시 VOR과 비슷한 의미로 무전기와 연결된 헤드셋에 대고 말을 하면

자동으로 송신하는 기능이다.

 

이런기능은 외부잡음이 방해꾼이된다.

예를들어 농촌에 새 소리를 녹음할려고 VOR 녹음을 돌려놨는데

몇분마다 지나가는 비행기 때문에 녹음 메모리와 밧데리를 쓸데없이 소비하게 될수도 있다.

감지할 음량의 정도나 음색 대역폭 등을 구체적으로 설정할수 있다면

더 고급 VOR,VOX기능을 사용할수 있을텐데...

 

출처 : http://codebox.golgoroo.pe.kr/80012092134


 
RJ(Registered Jack)
요약

- RJ는 FCC(미국 연방 통신 위원회)에 등록된 전화 접속 인터페이스들로서, 리셉터클(암 커넥터)과 플러그(수 커넥터)를 말한다.

- 이것들은 AT&T의 USOC의 일부였던 인터페이스들에서  파생되었으며, RJ-11(전화), RJ-45(네트워크 통신)이 대표적이다.

 

 


RJ-11

- 주변에 쉽게 있지만 관심없으면 볼 수 없는 전화에 이용되는 잭이다.

- 컴퓨터를 모뎀으로 통신하였을 당시에는 RJ-11잭을 사용하였다.

- 6개의 도선을 가지고 있으나, 4개만이 사용되며, 평범한 전화선을 사용하며 가정이나 사무실에서 쓰인다.

- 전화회사의 교환기에 접속되어 있는 외부의 연선에 연결된다.

- 4개의 선은 적색, 녹색, 흑색, 백색이다.

 

 


RJ-45

- 평범한 전화선을 통해 디지털 전송을 하기 위한 단일회선 잭이다.

- 8개의 핀을 가지며, 표준규격에 따라 회선의 사용 수가 다르다.

- Ethernet(10BaseT), Token Ring 등 대부분 4개의 회선을 사용한다.

- UTP Cat.3 100Mbps로 전송하는 IEEE802.3u표준규격(100BaseVG[Voice Grade])에서는 8개의 회선을 사용한다.

- 100BaseT는 10BaseT처럼 4개의 회선을 사용하나, Cable Spec이 Cat.5 이여만 한다.


출 처 : http://blog.naver.com/demonicws?Redirect=Log&logNo=40117315270

[출처] RJ(Registered Jack)|작성자 Stein

RAW소켓

RAW소켓은 '가공하지 않은 소켓' 이다

 

일반적인 소켓 함수는 네트워크를 통해 데이터를 주고 받을때 헤더정보를 붙이거나 떼어내는 등의 가공을한다

그 이유는 주고받는 데이터가 중요한것이지 헤더정보는 별로 중요하지 않기 때문이다

이런 헤더를 때고 붙이고 하는 부분은 운영체제의 프로토콜 스택 내에서 자동으로 일어난다

따라서 프로그래머는 헤더를 접할 기회가 없다

그렇지만 경우에 따라서는 이런 헤더를 직접 제어해야 될 필요가 있다

예를 들어, 새로운 프로토콜을 만든다든지, 헤더의 정보를 이용한 보안프로그램 등을 만들때이다

 

RAW소켓은 이러한 헤더 정보들에 대한 가공을 하지 않고, 프로그래머가 직접 제어할 수 있게 한다

 


일반적인 소켓의 흐름도

 


RAW소켓의 데이터 흐름도

 

RAW소켓을 사용하면 이렇게 IP헤더와 TCP헤더를 직접 제어할 수 있다

위의 데이터 흐름도에서 TCP헤더와 IP헤더가 붙었지만 꼭 IP헤더와 TCP헤더일 필요는 없다

즉, 네트워크 계층 헤더와 전송 계층 헤더 중 어떤 종류가 와도 상관없다

RAW소켓에서는 IP헤더와 TCP헤더 모두 사용자 데이터로 취급하기 때문이다

따라서 RAW소켓으로 TCP데이터를 전송하고 싶다면 IP헤더와 TCP헤더를 보내고자 하는 데이터 앞부분에 직접 만들어 주어야 한다


출처 : http://blog.naver.com/icecds?Redirect=Log&logNo=40054056259

[출처] RAW 소켓(1)|작성자 대승이

ARP(Address Resolution Protocol)



- IP네트워킹에서 IP주소를 대응하는 물리(MAC주소)로 변환하여 주는 프로세스

A (192.168.10.1) : B컴퓨터의 IP는 알고 있으나 MAC주소는 모름

B (192.168.10.2) : A컴퓨터의 ARP요청을 받고 응답을 보냄

- ARP를 이용하여 B의 MAC주소를 알아낼 수 있는데 원리는 전체 브로드캐스트를 날려 응답을 받음으로서

   알아내는 방식이다.

- TCP/IP제조사들이 ARP캐시에 대하여 타이머를 지정하는 이유 : IP가 변경될 수 있기 때문

- 요청하는 컴퓨터의 경우 900초, 응답하는 컴퓨터의 경우의 타이머는 600초이다.

- ARP 패딩 : 이더넷 기반의 ARP요청과 응답은 종종 최소 46바이트의 사용자 데이터 크기조건을 만족시키지

   못하는데, 이에따라 발생 할 수 있는 패킷의 손실을 방지하기 위해 바이트를 추가하여 데이터 길이를 늘림

 


 

ARP 하드웨어 유형(2Bytes)

- 네트워크의 물리계층에 사용된 하드웨어 종류

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41

 

 

ARP 프로토콜 유형(2Bytes)

- 네트워크에서 사용된 네트워크 프로토콜 주소의 종류

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41

 

 

ARP 하드웨어 길이(1Byte)

- 하드웨어 주소에 사용되는 바이트 수(MAC주소의 바이트 수)

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41

 

 

ARP 프로토콜 길이(1Byte)

- ARP의 발신지와 목적지 두 곳의 프로토콜 주소의 길이를 표시

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41

 

 

ARP 오퍼레이션(2Bytes)

- ARP가 현재 하고 있는 작업이 무엇인지 표시

- 16진수 00 01은 ARP요청(request), 00 02는 ARP응답(reply)를 의미

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41

 

 

ARP 발신지 하드웨어 주소(6Bytes)

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41

 

 

ARP 발신지 프로토콜 주소(6Bytes)

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41

 

 

ARP 목적지 하드웨어 주소(6Bytes)

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41

 

 

ARP 목적지 프로토콜 주소(6Bytes)

 

0000      FF   FF  FF  FF  FF  FF   00 00 - C0 93 19 00 08 06 00 01

0010      08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64

0020      FF   FF  FF  FF  FF  FF   C0 99 - B9 32 00 00 55 00 00 DC

0030      00 6C 00 D6 00 00 00 A3 - 00 00 00 41


출 처 : http://blog.naver.com/demonicws?Redirect=Log&logNo=40106034319

암호화 ?

어떤 평문을 암호문으로 바꾸는 것을 암호화라고 하고, 이때 사용되는것을 암호화 열쇠라고 한다.그리고, 암호문을 평문으로 바꾸는 것은 복호화이라고 하며, 이때는 복호화열쇠가 사용된다.

 

암호화알고리즘에 사용되는 단어로는

plaintext(cleartext; 평문):  전달해야 할 내용 
ciphertext(암호문): 암호화한 내용 
encryption(encipher; 암호화): 어떤 내용을 위장하는 것 
decryption(decipher; 복호화): 암호문을 평문으로 복구하는 것 
cryptographic algorithm(cipher, 암호화 알고리즘): 암호화와 복호화를 위해 사용하는 수학함수
. 일반적으로 암호화 함수와 복호화 함수 두 개로 이루어진다. 
key(키): 암호화 알고리즘의 파라미터. 암호화와 복호화를 위하여 평문 또는 암호문과 키가 함께 적용 되어야 한다.

등이 있다.

 

암호화방식에는 두가지 방법이 있는데 대칭형 암호화방식과 비대칭형 암호화방식이 있다.
◎ 대칭형 암호화방식(Symmetric Algorithm)
비밀키 암호화 방식 (Secret Key Algorithm) 이라고도 할수있다.
특징으로는 암호화와 복호화에 사용되는 키가 동일하다는 것이다.
장점은 암호화 및 복호화가 빠르며, 데이터 전송이 적고, 다양한 암호화기법이 존재한다.
단점으로는 송신자와 수신자 사이의 안전한 키 교환 문제가 발생한다.
예로써는.. SEED, DES, IDEA, RC2, RC5 등이 있다. 


◎ 비대칭형 암호화방식(Asymmetric Algorithm )
공개키 암호화 방식 (Public Key Algorithm) 이며,
두 개의 쌍으로 이루어진 키를 사용한다.
공개키 (Public Key) 는 모든 사람이 알 수 있도록 공개되어진다. 예를 들어

공인인증기관같은곳에 게시되는 형태이다. 
개인키 (Private Key) 는 자신만이 알 수 있도록 개인이 보관을 한다.
장점은 비밀키 전달 불필요에 따른 키 교환 문제 없고, 정보의 기밀 유지 이외에 다른 목적(무결성, 부인방지 등)으로도 사용 가능하다.
단점은 암호화 및 복호화가 느리고(대칭형에 비해 약 1000배), 많은 양의 자료를 암호화 · 복호화 하기 불편하다.
예로써는.. RSA(Rivest-Shamir-Adleman), Diffie-Hellman, ECC(Elliptic Curve Cryptography) 등이 있다.

 

공개키 암호 알고리즘

암호화 키와 복호화 키라는 상이한 두 개의 키를 사용하는데, 이 키들은 키 생성 알고리즘을 통해서 생성되어 하나는 타인들에게 공개되고, 나머지 하나는 사용자 자신만이 비밀리에 사용합니다. 이들 각각을 공개키(pubic key), 비밀키(secret key)라고 부릅니다
송신자가 수신자에게 어떤 메시지를 보낼 때, 수신자의 공개치를 이용하여 암호화해서 보내며, 수신자는 자신에게 도착한 암호문을 자신의 비밀키를 사용하여 평문으로 복귀하여 읽게 됩니다. 공개키 암호 알고리즘은 
비대칭 암호 알고리즘
 또는 이중키 암호 알고리즘이라고 부릅니다.

장점 
1. 사용자 입장에서 볼 때, 오직 자신의 비밀키 한 개만 잘 보관하면 되므로 대칭키 암호화

    알고리즘보다 훨씬 적은 수의 키 유지하면 된다 
2. 비밀키는 사용자 오직 자신만이 알고 있다. (전자서명과 같은 전자상거래 보안에 있서

   중요 역할 ) 
단점 
1. 암호화 및 복호화 속도가 느리다. 
2. 키의 길이가 대칭키 암호 알고리즘보다는 크기 때문에 계산 효율성이 저하된다. 

주요 공개키 암호화 알고리즘으로는 소인수 분해의 어려움을 이용하여 키를 생성하도록 하는 RSA 암호 알고리즘과 Rabin 암호 알고리즘, knapsack 문제를 이용한 Merkle-Hellman Knapsack 암호 알고리즘 그리고 최근에 제시된 타원곡선 암호(ECC: Elliptic Curve Cryptography) 알고리즘 등이 있습니다. 
특히 RSA 암호 알고리즘의 경우, 512비트, 768비트, 1024비트의 가변적인 길이의 키를 사용하며, 암호화의 기본이 되는 평문의 길이 역시 가변적이지만 사용하는 키의 길이보다 작기만 하면 됩니다.

 


 

해시 알고리즘

암호화 기술에서 해시(hash) 알고리즘은 핵심 기술에 속합니다.
해쉬 알고리즘은 
임의의 길이를 가지고 있는 메시지를 받아들여 고정된 길이의 출력 값으로 바꾸어주는 함수
로서, 이 때 출력 값을 해시 값(hash value) 혹은 메시지 다이제스트(message digest)라고 부릅니다
해시 알고리즘을 사용하면 같은 해시 값을 갖는 두 개의 다른 입력 메시지를 찾아내기란 불가능하므로 하나의 해시 값을 가지고 원래의 입력된 메시지를 예측할 수가 없게 됩니다. 따라서 데이터 전송 도중에 송신자 외의 제3자에 의해서 데이터가 변조되었는지를 쉽게 파악할 수 있게 되어 전자서명 등에 유용하게 사용됩니다. 이런 성격 때문에 해시 알고리즘을 
일방향
(one-way) 해시 알고리즘이라고도 부릅니다
대표적인 해시 알고리즘으로는 MD4(Message Digest 4), MD5(Message Digest 5), SHA(Secure Hash Algorithm)-1등이 있습니다. MD4나 MD5의 경우 해시 값으로 128비트를 사용하며, SHA-1의 경우 160비트를 사용합니다

출 처 : 
http://blog.naver.com/jsj29?Redirect=Log&logNo=70002633255

FXS는 'Foreign Exchange Station'의 약자로서 기존 장비인 PBX나 키폰 시스템의 Station 포트 역할을 수행한다. 한 마디로 전화기나 팩스 같은 전화선을 이용하는 장비를 붙이는 포트라고 생각하면 된다.
FXS 포트는 -48V의 DC 전원을 케이블을 통해 자기에서 붙은 전화기나  팩스 등에 제공한다. 또한 FXS 포트는 아날로그 신호를 디지털로 변환하는 A/D 컨버젼도 수행한다.

FXO는 'Foreign Exchange Office'의 약자로서 전화기를 에뮬레이션한다. 따라서 FXO 포트와 연결된 상대 디바이스는 자신의 스위치 포트(FXS)에 전화기가 연결되어 있다고 생각한다. 그러므로 FXO 포트는 자기가 마치 전화기인 것처럼 On-Hook과 Off-Hook 시그널을 보낸다. 여기서 Oh-Hook은 수화기를 내려놓았을 때를 말하고, Off-Hook은 수화기를 들었을 때를 말한다.

FXO 프토는 전화기처럼 동작하기 때문에 스위치에서 Ringing 시그널을 보내면, 자기는 마치 전화를 받는 것처럼 Off-Hook 시그널을 보낸다.



[work_struct]
워크큐는 인터럽트가 disable되지 않는다. 여러개를 큐에 넣어도 이미 큐에 있다면 무시된다.

 

#define INIT_WORK(_work, _func)
워크큐를 초기화한다.

 

int schedule_work(struct work_struct *work)
작업을 kernel-global 워크큐에 넣는다. 이미 들어있으면 그대로 둔다.

 


[tasklet_struct]
태스크릿은 인터럽트가 disable된다. 여러개를 큐에 넣어도 이미 큐에 있다면 무시된다.

 

void tasklet_init(struct tasklet_struct *t, void (*func)(unsigned long), unsigned long data);
태스크릿을 초기화한다.

 

void tasklet_schedule(struct tasklet_struct *t)
태스크릿을 큐에 넣는다.

 

void tasklet_kill(struct tasklet_struct *t);
태스크릿이 큐에 있으면 즉시 처리(실행)한다.

 

void tasklet_enable(struct tasklet_struct *t)
태스크릿을 활성화한다.

 

void tasklet_disable(struct tasklet_struct *t)
태스크릿을 비활성화한다.

음성 신호를 디지털 부호화하는 펄스 부호 변조(PCM) 기술에서의 처리 과정 법칙의 하나. PCM에서 양자화 잡음의 영향을 되도록 적게 하기 위해 송신 측에서는 신호를 압축하고 수신 측에서는 역으로 신장한다. 압축·신장 방법에는 A 법칙과 m법칙의 2가지가 있다. 북아메리카 및 일본 등에서는m법칙을, 유럽에서는 A 법칙을 채용하고 있다.

출처 : 네이버 용어사전

Calling Identification Display(Call ID)

발신자번호표시(CID) 서비스란 발신자의 전화번호 및 이름을 착신가입자의 표시단말장치에 표시하여주는 서비스이다. CID 서비스를 통하여 상대방의 이름과 전화번호를 알 수 있어서 장난, 음란전화 및 폭력전화의 방지나 부재중 걸려온 전화 등을 확인할 수 있다. 

자동 전화번호 확인(Automatic Number Identification: ANI)기능에서 확장된 이 서비스는 1987년 미국의 벨사가 상용화한 이래 세계 50여개국에서 사용되고 있다.

국내에선 통신비밀보호법때문에 도입되지 않다가 1985년부터 심사를 한 뒤 발신번호만 확인해줘왔다. 

그러나 통신비밀보호법상 전화폭력 협박 희롱의 경우에만 발신인의 전화번호를 수신인에게 제공토록 제한했기 때문에, 이 서비스를 받으려면 피해사실 입증자료를 제출해야 하는데다 일단 전화를 받아야 하는 불편함이 있어 이용이 어려웠다.

그러나 2000년 말 모든 발신번호를 수신자가 바로 확인할 수 있도록 하는 근거 조항을 넣은 전기통신사업법이 통과되어 발신자정보표시 서비스가 가능하게 되었다. 이동통신전화의 경우에도 발신자번호표시(CID)가 실시되고 있다.

출처 : 네이버 용어 사전



+ Recent posts