:::: MENU ::::
Browsing posts in: Development

base64 encode & decode

base64란 64진수라는 뜻.
즉 2진수 데이터를 64진수 데이터로 변경하는 것.
예를 들면 a, b, c의 경우 ASCII값은 0x61, 0x62, 0x63이고, 2진수로 01100001, 01100010, 01100011이다
이것을 6bit씩 끊으면…. 011000  010110  001001 100011 가 되고, 각각 값은 0x18(24), 0x16(22), 0x09(9), 0x23(35)가 된다.

base64의 문자셋은 다음과 같으므로,
A~Z : 0 ~25
a~z : 26 ~51
0~9 : 52 ~ 61
+      : 62
/      : 63
위 abc는 YWJj가 된다.

만약 딱 떨어지지 않는 경우 남는 비트의 경우 6 bit 문자를 0으로 padding하고 그래도 남는 6 bit 문자는 = 으로 치환한다.

C코드


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <endian.h>
 
static const char MimeBase64[] = {
    ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’,
    ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’,
    ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’,
    ‘Y’, ‘Z’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’,
    ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’,
    ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’,
    ‘w’, ‘x’, ‘y’, ‘z’, ‘0’, ‘1’, ‘2’, ‘3’,
    ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘+’, ‘/’
};
 
static int DecodeMimeBase64[256] = {
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 00-0F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 10-1F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,  /* 20-2F */
    52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,  /* 30-3F */
    -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,  /* 40-4F */
    15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,  /* 50-5F */
    -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,  /* 60-6F */
    41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1,  /* 70-7F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 80-8F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 90-9F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* A0-AF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* B0-BF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* C0-CF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* D0-DF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* E0-EF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1   /* F0-FF */
};
 
typedef union{
    struct{
        unsigned char c1,c2,c3;
    };
    struct{
        unsigned int e1:6,e2:6,e3:6,e4:6;
    };
} BF;
 
int endian = 0; // little : 0, big : 1
 
void base64e(char *src, char *result, int length){
    int i, j = 0;
    BF temp;
 
    if(endian == 0){ // little endian(intel)
        for(i = 0 ; i < length ; i = i+3, j = j+4){
            temp.c3 = src[i];
            if((i+1) > length) temp.c2 = 0x00;
            else temp.c2 = src[i+1];
            if((i+2) > length) temp.c1 = 0x00;
            else temp.c1 = src[i+2];
 
            result[j]   = MimeBase64[temp.e4];
            result[j+1] = MimeBase64[temp.e3];
            result[j+2] = MimeBase64[temp.e2];
            result[j+3] = MimeBase64[temp.e1];
 
            if((i+2) > length) result[j+2] = ‘=’;
            if((i+3) > length) result[j+3] = ‘=’;
        }
    } else { // big endian(sun)
        for(i = 0 ; i < length ; i = i+3, j = j+4){
            temp.c1 = src[i];
            if((i+1) > length) temp.c2 = 0x00;
            else temp.c2 = src[i+1];
            if((i+2) > length) temp.c3 = 0x00;
            else temp.c3 = src[i+2];
 
            result[j]   = MimeBase64[temp.e4];
            result[j+1] = MimeBase64[temp.e3];
            result[j+2] = MimeBase64[temp.e2];
            result[j+3] = MimeBase64[temp.e1];
 
            if((i+2) > length) result[j+2] = ‘=’;
            if((i+3) > length) result[j+3] = ‘=’;
        }
    }
}
 
void base64d(char *src, char *result, int *length){
    int i, j = 0, src_length, blank = 0;
    BF temp;
 
    src_length = strlen(src);
 
    if(endian == 0){ // little endian(intel)
        for(i = 0 ; i < src_length ; i = i+4, j = j+3){
            temp.e4 = DecodeMimeBase64[src[i]];
            temp.e3 = DecodeMimeBase64[src[i+1]];
            if(src[i+2] == ‘=’){
                temp.e2 = 0x00;
                blank++;
            } else temp.e2 = DecodeMimeBase64[src[i+2]];
            if(src[i+3] == ‘=’){
                temp.e1 = 0x00;
                blank++;
            } else temp.e1 = DecodeMimeBase64[src[i+3]];
 
            result[j]   = temp.c3;
            result[j+1] = temp.c2;
            result[j+2] = temp.c1;
        }
    } else { // big endian(sun)
        for(i = 0 ; i < src_length ; i = i+4, j = j+3){
            temp.e4 = DecodeMimeBase64[src[i]];
            temp.e3 = DecodeMimeBase64[src[i+1]];
            if(src[i+2] == ‘=’){
                temp.e2 = 0x00;
                blank++;
            } else temp.e2 = DecodeMimeBase64[src[i+2]];
            if(src[i+3] == ‘=’){
                temp.e1 = 0x00;
                blank++;
            } else temp.e1 = DecodeMimeBase64[src[i+3]];
 
            result[j]   = temp.c1;
            result[j+1] = temp.c2;
            result[j+2] = temp.c3;
        }
    }
    *length = j-blank;
}
 
int main(void){
    char str1[]=”테스트문자열입니다.ABCabc123,./”;
    char str2[]=”7YWM7Iqk7Yq466y47J6Q7Je07J6F64uI64ukLkFCQ2FiYzEyMywuLw==”;
    char *result;
    int src_size;
    struct timespec start,end;
 
    if (__LITTLE_ENDIAN == BYTE_ORDER) endian == 0;
    else endian == 1;
 
    src_size = strlen(str1);
    result = (char *)malloc((4 * (src_size / 3)) + (src_size % 3 ? 4 : 0) + 1);
    clock_gettime(CLOCK_REALTIME, &start);
    base64e(str1, result, src_size);
    clock_gettime(CLOCK_REALTIME, &end);
    float time_dif = (end.tv_sec – start.tv_sec) + ((end.tv_nsec – start.tv_nsec) );
    printf(“함수 수행 시간: %f\n”, time_dif);
    printf(“%s\n%s\n”,str1,result);
    free(result);
 
    src_size = strlen(str2);
    result = (char *)malloc(3 * (src_size / 4));
    base64d(str2,result,&src_size);
    printf(“%s\n%s\n길이:%d\n”,str2,result,src_size);
    free(result);
}

온라인에서 base64를 테스트 할 수 있는 사이트 : http://ostermiller.org/calc/encode.html

 


[스크랩] PIC® MCU를 위한 DLMS 사용자 연합 인증 스택

MCU에 맞춤형으로 구성된 DLMS 스택을 통해 광범위한 에너지 유형 및 통신 프로토콜의 상호 운용성을 업계 최초로 구현


세계적인 마이크로컨트롤러, 아날로그 및 플래시 IP 솔루션 전문기업인 마이크로칩 테크놀로지(한국 지사장: 한병돈)는 오늘 칼키 커뮤니케이션 테크놀로지스(Kalki Communication Technologies)와 공동으로 16비트 PIC® 마이크로컨트롤러(MCU)에 최적화된 DLMS(Device Language Message Specification) 프로토콜 스택을 제공한다고 발표했다. DLMS 프로토콜은 전기, 가스, 난방, 상/하수도 같은 대부분의 에너지 유형과 여러 애플리케이션(주거, 송신, 분배) 및 통신 미디어(RS232, RS485, PSTN, GSM, GPRS, IPv4, PPP, PLC) 같은 미터링 시스템 간의 상호 운용성은 물론, AES 128 암호화를 통한 보안 데이터 액세스를 위해 스마트 미터 디자이너들이 선호하는 세계적인 표준으로 자리 잡아가고 있다.


이 소프트웨어 스택은 DLMS 사용자 연합의 테스트와 검증을 마쳤을 뿐 아니라 마이크로칩의 모든 16비트 PIC 마이크로컨트롤러 및 dsPIC® 디지털 신호 컨트롤러(DSC)에서 동작하도록 맞춤형으로 구성되어 있어 DLMS 인증 절차를 보다 쉽고 빠르게 마칠 수 있게 해준다. 또한 이 스택은 TCP/IP, 지그비(ZigBee®), PLC 같은 통신 프로토콜 스택과 긴밀하게 통합되도록 개발되어 광범위한 스마트 에너지 애플리케이션에 적용할 수 있다는 게 특징이다. 뿐만 아니라 작은 메모리 풋프린트에 맞게 최적화되어 있어 업계에서 가장 작고 경제적인 MCU를 사용할 수가 있다. 유럽 지역 애플리케이션의 경우, 이 스택은 애플리케이션을 구현하는 데 필요한 IEC             62056-21       모드 E를 지원한다.


마이크로칩 고급 마이크로컨트롤러 아키텍처 사업부의 미치 오볼스키(Mitch Obolsky) 부사장은 “마이크로칩의 스마트 에너지 제품에 이 DLMS 라이브러리를 추가함에 따라 경제적이면서 포괄적인 솔루션을 제공하기 위해 힘써 온 마이크로칩의 노력이 한층 힘을 얻게 되었다”며 “이제 고객은 TCP/IP, 지그비, PLC 같은 마이크로칩의 방대한 통신 프로토콜 솔루션 포트폴리오를 활용하여 완벽하게 통합된 스마트 에너지 시스템을 만들 수 있게 되었다”고 밝혔다.













































Features




  • DLMS UA certified

  • PC Client Test Tools for testing and validating the DLMS implementation

  • Supports serial profile

  • Support for IEC             62056-21       Mode E Implementation

  • AES-128 encryption

  • Getting Started Example codes


Supported MCUs



16-bit PIC® microcontrollers (MCUs) and dsPIC® Digital Signal Controllers (DSCs)


Getting Started



1. Click here to purchase Microchip’s Explorer 16 Development Board and tools


2. Download Free DLMS evaluation library. User guide and examples projects are provided for understanding the library and its implementation.


3. Download Free trial version of the DLMS Explorer for in-house testing of the meter. DLMS Explorer is a windows based DLMS client application with user friendly GUI.


DLMS Stack Licensing


DLMS-lite Stack for 16-bit MCUs


Up to 5,000 units:


$3,900


Click Here to Purchase


Up to 25,000 units:


$7,500


Click Here to Purchase


DLMS Stack for 16-bit MCUs


Up to 5,000 units:


$4,800


Click Here to Purchase


Up to 25,000 units:


$12,000


Click Here to Purchase


DLMS Explorer


DLMS Explorer


$2,800


Click Here to Purchase


공급
이 새로운 DLMS 스택은 현재 4가지 구성으로 공급된다.
16비트 MCU용 DLMS 평가 라이브러리는 DLMS 라이브러리의 무료 평가 버전이고, 16비트 MCU용 DLMS 라이트 스택(부품 번호: SW500160)과 16비트 MUC용 DLMS 스택(부품 번호: SW500162)는 각각 5천 개 단위로 구입이 가능하다.
DLMS 익스플로러(부품 번호: SW500164)는 윈도우 기반 DLMS/COSEM 클라이언트 애플리케이션이다.



퀄컴 아데로스 AR4100

퀄컴이 아데로스를 인수했죠.
들리는 얘기로는 아데로스의 분위기는 더 좋아졌고, 퀄컴의 connectivity 부분이 아데로스와 합쳐져서 더 켜졌다고 합니다.

암튼 AR4100은 11n을 지원하지만 1T1R (SISO)로 low power, low cost, low end를 타겟으로 하고 있습니다.

인터페이스도 SPI를 제공해서 low end MCU에서도 사용이 가능하게 되어 있는데, 현재 지원되는 개발 환경은 주로 Freescale솔루션에 적용이 가능합니다.

Currently Supported Development Environment
• Freescale Tower Development Platform
• ColdFire MCF52259 or Kinetis MCU with greater then 128K NVM
• Freescale MQX™ version 3.6.2
• Freescale CodeWarrior® tool suite v7.2 for the ColdFire 52259 processor
• IAR Embedded Workbench® v6.10 for the Kinetis MCUs

cfile25.uf.1331BD3B4E0C3CB5027F2E.pdf


맥어드레스, Public OUI 찾기

회사에서 할당 받은 맥어드레스(Public OUI)를 찾거나, 맥어드레스로 이게 어느 회사에서 할당 받았는지 확인 하는 방법은 IEEE 홈페이지에서 확인이 가능하다.
https://standards.ieee.org/develop/regauth/oui/public.html

등록시 사용한 영문 회사 이름을 넣으면 해당하는 Public OUI(맥어드레스 상위 3바이트)를 찾아주고, 맥어드레스의 상위 3바이트를 입력하면 회사명을 알 수 있다.

참고로 맥어드레스 할당은 지난 포스팅 참고.. MAC address 할당 받기


네트워크 스캐닝 툴 nmap 사용법

네트웍으로 취약점을 점검하거나 열려있는 포트를 확인하기위해 사용하는 툴입니다.
http://nmap.org/
윈도우즈용으로 zmapwin 도 있습니다. http://nmap.org/download.html

사용법은
nmap [ <Scan Type> …] [ <Options> ] { <target specification> }

Options 및 target specification은 다음을 참고하고 구체적인 내용은 http://nmap.org/book/man.html 를 참고…

Nmap 5.51SVN ( http://nmap.org )
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
  Can pass hostnames, IP addresses, networks, etc.
  Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename>: Input from list of hosts/networks
  -iR <num hosts>: Choose random targets
  --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
  --excludefile <exclude_file>: Exclude list from file
HOST DISCOVERY:
  -sL: List Scan - simply list targets to scan
  -sn: Ping Scan - disable port scan
  -Pn: Treat all hosts as online -- skip host discovery
  -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
  -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
  -PO[protocol list]: IP Protocol Ping
  -n/-R: Never do DNS resolution/Always resolve [default: sometimes]
  --dns-servers <serv1[,serv2],...>: Specify custom DNS servers
  --system-dns: Use OS's DNS resolver
  --traceroute: Trace hop path to each host
SCAN TECHNIQUES:
  -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
  -sU: UDP Scan
  -sN/sF/sX: TCP Null, FIN, and Xmas scans
  --scanflags <flags>: Customize TCP scan flags
  -sI <zombie host[:probeport]>: Idle scan
  -sY/sZ: SCTP INIT/COOKIE-ECHO scans
  -sO: IP protocol scan
  -b <FTP relay host>: FTP bounce scan
PORT SPECIFICATION AND SCAN ORDER:
  -p <port ranges>: Only scan specified ports
    Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
  -F: Fast mode - Scan fewer ports than the default scan
  -r: Scan ports consecutively - don't randomize
  --top-ports <number>: Scan <number> most common ports
  --port-ratio <ratio>: Scan ports more common than <ratio>
SERVICE/VERSION DETECTION:
  -sV: Probe open ports to determine service/version info
  --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
  --version-light: Limit to most likely probes (intensity 2)
  --version-all: Try every single probe (intensity 9)
  --version-trace: Show detailed version scan activity (for debugging)
SCRIPT SCAN:
  -sC: equivalent to --script=default
  --script=<Lua scripts>: <Lua scripts> is a comma separated list of
           directories, script-files or script-categories
  --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
  --script-trace: Show all data sent and received
  --script-updatedb: Update the script database.
OS DETECTION:
  -O: Enable OS detection
  --osscan-limit: Limit OS detection to promising targets
  --osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
  Options which take <time> are in seconds, or append 'ms' (milliseconds),
  's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
  -T<0-5>: Set timing template (higher is faster)
  --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
  --min-parallelism/max-parallelism <numprobes>: Probe parallelization
  --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
      probe round trip time.
  --max-retries <tries>: Caps number of port scan probe retransmissions.
  --host-timeout <time>: Give up on target after this long
  --scan-delay/--max-scan-delay <time>: Adjust delay between probes
  --min-rate <number>: Send packets no slower than <number> per second
  --max-rate <number>: Send packets no faster than <number> per second
FIREWALL/IDS EVASION AND SPOOFING:
  -f; --mtu <val>: fragment packets (optionally w/given MTU)
  -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
  -S <IP_Address>: Spoof source address
  -e <iface>: Use specified interface
  -g/--source-port <portnum>: Use given port number
  --data-length <num>: Append random data to sent packets
  --ip-options <options>: Send packets with specified ip options
  --ttl <val>: Set IP time-to-live field
  --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
  --badsum: Send packets with a bogus TCP/UDP/SCTP checksum
OUTPUT:
  -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
     and Grepable format, respectively, to the given filename.
  -oA <basename>: Output in the three major formats at once
  -v: Increase verbosity level (use -vv or more for greater effect)
  -d: Increase debugging level (use -dd or more for greater effect)
  --reason: Display the reason a port is in a particular state
  --open: Only show open (or possibly open) ports
  --packet-trace: Show all packets sent and received
  --iflist: Print host interfaces and routes (for debugging)
  --log-errors: Log errors/warnings to the normal-format output file
  --append-output: Append to rather than clobber specified output files
  --resume <filename>: Resume an aborted scan
  --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
  --webxml: Reference stylesheet from Nmap.Org for more portable XML
  --no-stylesheet: Prevent associating of XSL stylesheet w/XML output
MISC:
  -6: Enable IPv6 scanning
  -A: Enable OS detection, version detection, script scanning, and traceroute
  --datadir <dirname>: Specify custom Nmap data file location
  --send-eth/--send-ip: Send using raw ethernet frames or IP packets
  --privileged: Assume that the user is fully privileged
  --unprivileged: Assume the user lacks raw socket privileges
  -V: Print version number
  -h: Print this help summary page.
EXAMPLES:
  nmap -v -A scanme.nmap.org
  nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  nmap -v -iR 10000 -Pn -p 80

그리고 잘 정리된 이 링크는  nmap cheat sheet 과 pdf 파일


Google PowerMeter API 관련 소식

Google PowerMeter API 관련 소식입니다.
즉 Power Meter API가 현재는 deprecated 상태 인데, 향후 한 3년 이후면 shut down 상태로 갈 가능성이 높습니다.
 
http://code.google.com/apis/powermeter/
Important: The Google Power Meter API has been officially deprecated as of May 26, 2011 to reflect that it’s no longer undergoing active development and experimentation, which is the hallmark of APIs in the Code Labs program. However, we have no current plans to remove functionality for existing users.
 
구글의 공식적인 구글 코드 블로그에 가보면…
http://googlecode.blogspot.com/2011/05/spring-cleaning-for-some-of-our-apis.html

구글 I/O에서 7가지 새로운 API를 소개를 하면서 더 이상 지원을 하지 않는 API를 소개하고 있다.
묻어가기 전략인가?…. 이중의 하나가  PowerMeter API.

Following the standard deprecation period – often, as long as three years – some of the deprecated APIs will be shut down. The rest have no scheduled date for shutdown, but won’t get any new features. The policy for each deprecated API is specified in its documentation. 




구글이 주는 콩고물을 받아먹으며 개발을 했던 수 많은 회사들이 자신들의 전략을 수정해야 할 판…
대기업에 종속적인 사업이 얼마나 위험한지… 그 밑에서 일하며 날 밤까는 엔지니어들은 더 불쌍하고.. -_-;;


Well Known Ports

Well Known Port: 0~1023
Registered Port: 1024~49151
Dynamic and/or Private Port : 49152~65535

IANA(Internet Assigned Numbers Authority)에서 관리하는데, 전체 할당된 port number를 확인하려면 다음 링크를 확인
http://www.iana.org/assignments/port-numbers

그리고 Registered Port에 등록을 하려면 아래 주소에서 신청을 하면 되는데, IANA에서 심사후 등록여부를 결정합니다. http://www.iana.org/cgi-bin/usr-port-number.pl


TI 오픈 소스 무선랜 솔루션

TI introduces OpenLink™, open source wireless connectivity solutions for low power applications

TI가 모바일용, 배터리 최적화된 WiFi 솔루션을 OpenLink라는 오픈 소스 리눅스 커뮤니티를 통해 발표했습니다.

칩셋
해당되는 칩셋을 찾아보니, Wi-Fi, Bluetooth, FM 콤보칩으로 TI에서는 WiLink 6.0 Solution 이라고 부릅니다.
WL1271(802.11 b/g/n) , WL1273 (802.11 a/b/g/n) 2가지 종류의 칩이 있군요.

WiLink 6.0 Block Diagram

WiLink 6.0 Block Diagram

하드웨에 플랫폼
그리고 지원하는 Hardware 플랫폼은 BeagleBordPandaBoard입니다. => http://www.openlink.org/platforms

기타
OpenLink에 대한 내용은 다음을 참고..

What is OpenLink.org?


OpenLink.org provides a single access point to resources for open connectivity development, such as:



  • Access to TI’s open connectivity drivers: Wi-Fi, Bluetooth, FM radio technologies

  • Software support for popular Linux-based OSs such as Android, MeeGo and Ubuntu

  • Project registration, sharing, maintenance and tracking

  • Hardware support for development platforms such as BeagleBoard and PandaBoard

  • Opportunity to request support for other industry development platforms

  • Community engagement through a dedicated IRC channel, wiki and mailing list

  • Related news, event and video information


What resources provide more information about OpenLink wireless connectivity drivers, OpenLink.org and unique ways to engage?



 


MAC address 할당 받기

근거리통신망에서 MAC 주소는 데이터 링크 계층의 MAC 계층에 의해 사용되는 주소로서 네트웍 카드의 48 비트 하드웨어 주소를 말하며, 이더넷 주소, 또는 토큰링 주소와 동일하다.


네트웍 카드 제조사에 의해 부여된 하드웨어 주소는 UAA (universally administered address)로서 모든 네트웍 카드가 유일한 값을 가진다. 그러나 UAA는 관리 목적상 변경이 가능한 데, 이러한 MAC 주소를 LAA (locally administered address)라 한다.




모든 네트워크 장비가 고유의 값을 가져야 하며 일반적으로 제품 생산시에 제조 업체에서 할당된다.
MAC 주소를 할당을 받기 위해서는 IEEE에 신청을 해서 할당을 받는데, 관련 URL은 다음과 같다. https://standards.ieee.org/regauth-bin/application?rt=OUI
FAQ는 다음을 참고. http://standards.ieee.org/regauth/faqs.html#q1