CIF는 화상회의 시스템에서 사용되는 비디오 형식으로서, NTSC와 PAL 방식의 신호 모두를 쉽게 지원한다. CIF는 초당 30 프레임의 데이터 속도를 조건으로 지정하는데, 각 프레임은 352 픽셀로 구성된 288개의 라인을 담고 있다. 이와 관련되는 표준으로서, QCIF (Quarter CIF)는 CIF에 비해 약 1/4 정도의 데이터 량을 전송하며, 전화회선을 이용한 화상회의 시스템에 적합하다.

 

CIF는 QCIF와의 구분을 위해 때로 FCIF (Full CIF)라고 불리기도 한다. 아래의 차트에 있는 것은 압축되지 않은 컬러 프레임들이다.


 

 

'old > Mobile' 카테고리의 다른 글

코덱(Codec) 이란?  (0) 2010.05.10
프로토콜(Protocol)이란?  (0) 2010.05.10
OSI 계층별 헤더구조  (0) 2010.05.10
HTTP Request Header  (0) 2010.05.10
플랫폼(Platform)과 프레임워크(Framework) 개념비교  (0) 2010.05.10
Posted by jazzlife
,

코덱(Codec) 이란?

old/Mobile 2010. 5. 10. 16:12

음성이나 영상 같은 아날로그 정보를 디지털 신호로 변환하고, 디지털 신호를 아날로그 정보로 변환하는 기기로서 부호화기(coder)와 복호화기(decoder)의 합성어이다.


다음은 코덱의 동작 방식을 나타낸 것이다.


상기의 그림과 같이 코덱은 아날로그 신호를 디지털 정보로 변환함으로써 압축 기술을 활용한 효과적인 신호의 저장과 정보를 다양한 형태로 변환 가능하다.


다음은 코덱의 활용 및 종류이다.

 

'old > Mobile' 카테고리의 다른 글

CIF 형식의 이미지 사이즈 정리  (0) 2010.05.10
프로토콜(Protocol)이란?  (0) 2010.05.10
OSI 계층별 헤더구조  (0) 2010.05.10
HTTP Request Header  (0) 2010.05.10
플랫폼(Platform)과 프레임워크(Framework) 개념비교  (0) 2010.05.10
Posted by jazzlife
,

Protocol이란?
상호 통신하는 정보통신 기기들이 정확하고 효율적인 정보전송을 하기위해 필요한 규약, 절차 및 규격을 정리해 놓은 것이다.


Protocol의 계층화
- 컴퓨터와 통신기기들이 발전함에 따라 보다 정확하고 효율적인 정보 전송이 요구됨
- 구조적으로 점점 복잡화
- 서비스에서도 다양한 기능이 필요

   

Protocol의 표준화
- 다양한 기종의 통신장치간의 상호 호환성있는 통신


여러분이 외국인과 대화를 한다고 생각해 봅시다. 물론 여러분의 영어실력이 아주 뛰어나지는 않지만 어느 정도 의사소통을 할 수 있는 수준이라고 가정하구요.


서로 언어가 다르기 때문에 상대방의 이야기를 완벽하게 알아듣기는 어렵습니다. 그러나 인간은 지적능력이 있기 때문에 상황이나 상대방의 표정, 제스처 등을 통해 어느 정도 상대방이 말하고자 하는 것을 이해할 수 있죠~!


그러나 컴퓨터, 휴대폰 등의 기기는 어떠할까요? 휴대폰은 인간과 달라 미리 약속한 신호체계를 가지고 정보를 전달해야 하는데, 이를 프로토콜이라고 합니다.


 

'old > Mobile' 카테고리의 다른 글

CIF 형식의 이미지 사이즈 정리  (0) 2010.05.10
코덱(Codec) 이란?  (0) 2010.05.10
OSI 계층별 헤더구조  (0) 2010.05.10
HTTP Request Header  (0) 2010.05.10
플랫폼(Platform)과 프레임워크(Framework) 개념비교  (0) 2010.05.10
Posted by jazzlife
,

다음의 그림에서 H는 header, A, P, S, T, N은 각층 이름의 머리문자, 2개의 처리 X와 Y가 공동 작용할때의 데이터단위의 변화를 나타낸다.

 

아마 컴텨 전공하신 분들이라면 이 그림 한번정도는 보았을 것이다.

프로토콜 핸들링 수준의 작업을 할때 이거 모르면 골치아프다..-.-;;

가볍게 이런게 있다 정도만 파악하고 넘어가자..

OSI에 대한 대충적인 이해 필수..ㅋ

 

 

'old > Mobile' 카테고리의 다른 글

코덱(Codec) 이란?  (0) 2010.05.10
프로토콜(Protocol)이란?  (0) 2010.05.10
HTTP Request Header  (0) 2010.05.10
플랫폼(Platform)과 프레임워크(Framework) 개념비교  (0) 2010.05.10
TCP/IP 프로토콜 아키텍처  (0) 2010.05.10
Posted by jazzlife
,

HTTP Request Header

old/Mobile 2010. 5. 10. 16:10

HTTP Request Header


웹 브라우져가 웹 써버와 커넥션을 형성하고 문서 요청을 할 때, 어떤 과정이 진행될까요? 사용자가 링크를 클릭했을 때 웹 브라우져는 우선 요청한 페이지의 IP 주소를 찾습니다. 웹 문서 주소를 쳤을 때 원하는 페이지가 뜨는 대신 "Server does not have a DNS entry" 같은 메시지가 뜨는 경우가 IP 주소를 찾아내지 못 했을 때입니다.


일단 IP 주소에 해당하는 웹 써버를 찾았다면 웹 브라우져는 클라이언트 컴퓨터의 IP 주소를 웹 써버에 알려 주면서 웹 써버와 클라이언트 간에 TCP 커넥션을 엽니다. TCP는 "Transmission Control Protocol"의 약자로 인터넷을 전체적으로 묶어주는 네트웍 프로토콜입니다.


웹 써버와 클라이언트(웹 브라우져) 사이에 일단 연결이 형성되면 웹 브라우져는 사용자의 리퀘스트(request)를 웹 써버에 알려 줍니다.이 리퀘스트는 일정한 형태를 갖고 있습니다. 이해를 돕기 위해 사용자가 "www.abc.co.kr/abc.html"이라는 문서에서 "www.xyz.com/xyz.html" 라는 링크를 클릭했다고 합시다. 이 링크를 클릭하는 순간 웹 브라우져는 다음과 같은 리퀘스트를 만들어 냅니다.


Get /xyz.html HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Accept: text/html; */*
Cookie: name = value
Referer: http://www.abc.com/abc.html
Host: www.xyz.com


첫 번째 줄은 "사용하는 프로토콜은 HTTP 1.0 이고, / 디렉토리의 xyz.html 문서를 달라"의 의미입니다. GET은 "method" 중 하나입니다. 자세한 내용은 GET vs POST를 읽어 보세요. 첫 줄 아래에 나오는 줄들을 모두 합쳐서 '리퀘스트 헤더'(request header)라고 합니다. 자세히 살펴 봅시다.


User-Agent: 사용자가 이용하고 있는 브라우져가 무엇인지입니다. 위의 경우, 윈도우즈 NT에서 인터넷 익스플로러 6.0을 이용해서 접속하고 있다는 것을 써버에 알려 주고 있습니다.


Accept: 써버로부터 받는 데이타 중 어떤 유형(type)의 데이타를 웹 브라우져가 다룰 수 있는지입니다. "text/html"은 문서 중 html 문서를 받을 수 있다는 의미이고 그 옆의 "*/*"는 특정한 유형이 아닌 모든 일반적인 형태를 다 허용한다는 의미입니다. 즉, Accept는 사용자 웹 브라우져에서 처리할 수 있는 마임타입(mime type)을 알려 줍니다.


Cookie: 쿠키가 무엇인지는[인터넷] 쿠키(Cookies)를 참고 하세요. Cookie 헤더는 사용자 하드 디스크에 쿠키가 있는 경우 그 쿠키의 이름과 값(name, value)을 읽어 들여서 웹 써버로 전송합니다.


Referer: Referer 헤더는 클릭한 링크가 담겨 있는 문서 주소를 웹 써버에 알려 줍니다. 즉, 어디로부터 이 페이지를 접속했는지를 웹 써버에게 알려 줍니다.


Host: 사용자가 요청한 주소의 호스트입니다. 즉, 웹 써버 주소입니다. 위의 경우 www.xyz.com입니다. 이외에도 웹 페이지가 수정된 경우 가장 최근 버전의 페이지를 전송해 달라는 요청인 If-Modified-Since와 특정 날짜가 지난 뒤에 특정 페이지나 이미지로의 접속을 차단하는 Expires 헤더가 있습니다.


HTTP Response Header


웹 써버가 위와 같은 요청을 받으면 요청한 클라이언트에게 요청받은 내용과 함께 관련되는 정보를 담고 있는 헤더도 보냅니다. 그것을 리스판스 헤더라고 합니다. 리스판스 헤더는 상태(status) 정보를 담고 있습니다. 상태 정보는 "Found"와 "404 Not Found" 중 하나의 값을 갖습니다. 리스판스 헤더입니다.


HTTP/1.0 200 Found
Date: Mon, 10 Feb 1997 23:48:22 GMT
Server: Apache/1.1.1 HotWired/1.0
Content-type: text/html
Last-Modified: Tues, 11 Feb 2000 22:45:55 GMT


첫 줄은 상태 정보 "status"입니다. 사용자가 요청한 문서가 써버에 있으면, "Found", 못 찾았다면 "404 Not Found"입니다.


Date: 요청된 내용을 수행하는 시간과 날짜입니다.
Server: 웹 써버의 종류입니다.
Content-type: 보내는 문서의 마임타입입니다.
Last-Modified: 보내는 문서가 마지막으로 수정된 날짜입니다.


보내는 파일이 html 문서가 아니라면 Content-type 헤더에는 다른 마임타입이 담깁니다. 즉, 하나의 웹 페이지에 담겨 있는 모든 아이템들 각각에 대해서 Content-type이 무엇인지를 알려주고 전송받습니다. 이미지는 이미지별로 html은 html별로.

'old > Mobile' 카테고리의 다른 글

프로토콜(Protocol)이란?  (0) 2010.05.10
OSI 계층별 헤더구조  (0) 2010.05.10
플랫폼(Platform)과 프레임워크(Framework) 개념비교  (0) 2010.05.10
TCP/IP 프로토콜 아키텍처  (0) 2010.05.10
유니코드(Unicode)  (0) 2010.05.10
Posted by jazzlife
,

소프트웨어 분야에서 프레임워크와 라이브러리, 플랫폼, 아키텍쳐를 비교해 보면, 다음과 같다.

 

프레임워크: 소프트웨어의 뼈대 구조

 

프레임워크란 특정형태의 소프트웨어 문제를 해결하기 위한 상호 협력하는 클래스들과 인터페이스들의 집합. 즉 소프트웨어 콤포넌트들의 집합을 의미한다. 이는 여러클래스와 컴포넌트로 구성되고 좀더 높은 수준에서 패턴들을 조직화하며 다양한 애플리케이션에서 이용 가능한 범용성(generic)을 가진다.

 

프레임워크는 다른 소프트웨어 프로젝트가 개발될 수 있는 뼈대 구조이다. 지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소들을 엮어 주는 소프트웨어 등을 포함하고 있다. 따라서, 플랫폼도 프레임워크의 일종이라고 볼 수 있으며, MS사에서 닷넷 플랫폼을 닷넷 프레임워크라고 지칭하는 것도 틀린 것이 아니다.

 

또한, UI 프로그램 개발을 위한 부분 만을 떼어내서 프레임워크라고 할 수도 있다. UI 프로그램 개발을 위한 부분 만으로는 완전한 소프트웨어 실행 환경이 되지 않으므로 플랫폼은 아니지만 프레임워크이다. 이러한 점에서 프레임워크와 플랫폼은 다른 경우가 많다.

프레임워크에 대한 내용의 이해를 돕기위해 라이브러리와 비교를 해보자. 라이브러리는 애플리케이션에서 호출할수 있는 함수와 루틴으로 구성되며, 필요한 클래스를 개발자가 불러오는 방식을 지닌다.

 
프레임워크와 라이브러리의 관계는 구성적인 측면에서 라이브러리는 함수와 루틴들로 볼 수 있고, 프레임워크는 콤포넌트들로 볼 수 있다. 실제 사용하는 측면에서 라이브러리는 내부에서 불러서 사용하고, 프레임워크는 내부에서 호출이아니라, 자체가 그대로 동작하거나,상속을 받아 재구성하여 동작한다. 이러한 콤포넌트들은 라이브러리를 불러서 사용할 수 있다.

 

플랫폼: 소프트웨어 실행 환경

 

가장 일반적이면서도 명료한 의미는 "소프트웨어가 실행되는 환경"이다. 개발 언어나 개발 환경을 플랫폼에 포함시키기도 하지만 이는 부수적 개념 혹은  확장된 개념에 불과하고, 핵심은 "소프트웨어가 실행되는 환경"이다.

 

각 프로그램은 아무 플랫폼에서나 실행되는 것이 아니고 특정 플랫폼에서만 실행된다. 일반적으로, O/S는 모두 플랫폼이다. Windows는 윈도우즈 프로그램만을 실행시킬 수 있는 플랫폼이고, 리눅스는 리눅스 프로그램만을 실행시킬 수 있는 플랫폼이다.


 

자바 런타임 환경도 플랫폼이다. 자바 프로그램은 O/S에 대한 종속성은 거의 없고 자바 런타임 환경없이는 실행되지 않으므로 자바 런타임 환경을 주요 플랫폼으로서 필요로 한다. 마찬가지로 닷넷 프로그램도 닷넷 런타임 환경없이는 실행되지 않으므로 닷넷 런타임 환경이 플랫폼이 된다.


아키텍처: 소프트웨어의 주요 설계 구조

 

소프트웨어의 주요 특징들을 결정짓는 주요 설계 구조이다. 즉, 소프트웨어의 주요 구성 요소 및 구성, 이들간의 주요 인터페이스, 중요 동작 방식 등 소프트웨어의 주요 특징들을 결정짓는 모든 설계 구조를 포함한다.

 

소프트웨어의 주요 특징을 결정짓고 소프트웨어 개발에 미치는 영향도 매우 커서 소프트웨어 개발에 있어서 가장 중요한 부분이라고 할 수 있다. 지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소 등과 같이 구체적인 구현을 포함하지 않는다는 점에서 프레임워크나 플랫폼과는 명확히 구분된다.

 

정리하자면, 이렇게 된다.

 

아키텍쳐 = 소프트웨어 설계 구조

프레임워크 = 소프트웨어 개발 구조  <-- 라이브러리 참조

플랫폼 = 소프트웨어 실행 환경

'old > Mobile' 카테고리의 다른 글

OSI 계층별 헤더구조  (0) 2010.05.10
HTTP Request Header  (0) 2010.05.10
TCP/IP 프로토콜 아키텍처  (0) 2010.05.10
유니코드(Unicode)  (0) 2010.05.10
포트(Port) 개념잡기  (0) 2010.05.10
Posted by jazzlife
,

TCP/IP 프로토콜은 DARPA 모델(TCP/IP를 개발한 미 정보 조직의 이름을 딴)로 알려진 네 계층의 개념적인 모델에 맵핑 되어 있습니다. DARPA 모델의 네 계층은 애플리케이션(Application), 트랜스포트(Transport), 인터넷(Internet), 네트워크(Network) 인터페이스입니다. DARPA 모델의 각 계층은 OSI(Open Systems Interconnection) 7계층 모델의 하나, 혹은 하나 이상의 계층과 일치합니다.


(그림 OSI 7계층과 TCP/IP 계층 구조

 

네트워크 인터페이스 계층

네트워크 인터페이스 계층 (네트워크 억세스 계층으로 불리기도 합니다.)은 TCP/IP 패킷(packet)을 네트워크 매체로 전달하는 것과 네트워크 매체에서 TCP/IP 패킷을 받아들이는 과정을 담당합니다.

TCP/IP는 네트워크 접근 방법, 프레임 포맷, 매체에 대해 독립적으로 동작하도록 설계되어 있습니다. 이러한 이유로, TCP/IP는 서로 다른 네트워크 형태를 연결하는데 사용되어 질 수 있습니다.

여러 네트워크 형태로는 이더넷(Ethernet), 토큰링(Token Ring)과 같은 LAN기술과 X.25, 프레임 릴레이(Frame Relay )와 같은 WAN기술을 포함합니다. 특정 네트워크 기술을 개발하는 독립 회사들은 ATM(Asynchronous Transfer Mode)과 같은 새로운 기술을 TCP/IP에 적용하고 있습니다.

네트워크 인터페이스 계층은 OSI 모델에서 데이터 링크 계층과 물리적 계층(Physical layer)에 해당합니다. 인터넷 계층은 데이터 링크 계층에 존재할 수 있는 순서화(sequencing), 확인(acknowledgement) 서비스의 이점을 채택하지 않았다는 사실에 주의하기 바랍니다.

네트워크 인터페이스 계층은 신뢰할 수 없는 것으로 가정합니다. 세션 확립과 순서화, 패킷 확인 등의 신뢰할 수 있는 통신은 트랜스포트 계층의 책임입니다.

인터넷 계층

인터넷 계층은 어드레싱(addressing), 패키징(packaging), 라우팅(routing) 기능을 제공합니다. 인터넷 계층의 핵심 프로토콜은 IP, ARP, ICMP, IGMP 등입니다.

  • IP(Internet Protocol)은 IP 어드레싱과 패킷의 분해, 재조합을 책임지는 프로토콜입니다.
  • ARP(Address Resolution Protocol)은 인터넷 계층 주소를 네트워크 인터페이스 계층의 주소(하드웨어 주소와 같은)로 변환하는 역할을 담당합니다.
  • ICMP(Internet Control Message Protocol)은 IP 패킷의 전달에 따른 오류나 상태를 리포트하고 진단하는 기능을 제공합니다.
  • IGMP(Internet Group Management Protocol)은 IP 멀티캐스트(multicast) 그룹의 관리를 책임집니다.

인터넷 계층은 OSI 모델의 네트워크 계층에 해당합니다.

트랜스포트 계층

트랜스포트 계층은 (Host-to-Host 트랜스포트 계층이라고도 하는데) 애플리케이션 계층에 세션과 데이터그램(Datagram) 통신 서비스를 제공합니다. 트랜스포트 계층의 핵심 프로토콜은 TCP와 UDP(User Datagram Protocol)입니다.

  • TCP는 1대1의 연결 지향, 신뢰할 수 있는 통신 서비스를 제공합니다. TCP는 TCP 연결 확립과 보내진 패킷의 확인, 순서화, 전달 중 손상된 패킷을 복구하는 책임을 집니다.
  • UDP는 1대1, 1대다의 비연결 지향, 신뢰할 수 없는 통신 서비스를 제공합니다. UDP는 주로 전달해야 할 데이터의 크기(하나의 패킷으로 보낼 수 있는 데이터와 같은 경우)가 작을 때나, TCP 연결 확립에 의한 부하를 피하려고 할 때, 혹은 상위 프로토콜이 신뢰할 수 있는 전달을 책임지는 경우에 사용됩니다.

트랜스포트 계층은 OSI 모델의 트랜스포트 계층전체와 세션 계층의 일부에 해당합니다.

애플리케이션 계층

애플리케이션 계층은 다른 계층의 서비스에 접근할 수 있게 하는 애플리케이션을 제공하고 애플리케이션들이 데이터를 교환하기 위해 사용하는 프로토콜을 정의합니다. 여러 가지 애플리케이션 계층 프로토콜이 존재하며 지속적으로 새로운 프로토콜이 개발되고 있습니다.

가장 많이 알려진 애플리케이션 계층 프로토콜에는 다음과 같은 것들이 있습니다.

  • HTTP(HyperText Transfer Protocol)은 WWW의 Web 페이지 파일을 전송하는데 사용됩니다.
  • FTP(File Transfer Protocol)은 상호 파일 전송을 위해 사용됩니다.
  • SMTP(Simple Mail Transfer Protocol)은 메일 메시지와 그에 추가된 첨부 파일을 전송하기 위해 사용됩니다.
  • Telnet(terminal emulation protocol)은 네트워크 호스트에 원격 접속하기 위해 사용됩니다.

또한, 다음과 같은 애플리케이션 계층 프로토콜이 TCP/IP 네트워크를 사용하거나 관리하는 것을 도와줍니다.

  • DNS(Domain Name System) 은 호스트 이름을 IP 주소로 변환하기 위해 사용됩니다.
  • RIP(Routing Information Protocol) 은 IP 네트워크상에서 라우팅 정보를 교환하기 위해 라우터가 사용하는 프로토콜입니다.
  • SNMP(Simple Network Management Protocol) 은 네트워크 관리 콘솔과 네트워크 장비(라우터, 브리지, 지능형 허브)간에 네트워크 관리 정보를 수집, 교환하기 위해 사용됩니다.

TCP/IP 애플리케이션을 위한 애플리케이션 계층 인터페이스의 예로 Windows Sockets과 NetBIOS를 들 수 있습니다. Windows Sockets은 Microsoft Windows 운영체제하에서 표준적인 API(application-programming interface)를 제공합니다. NetBIOS는 세션, 데이터그램, 주소 변환과 같은 프로토콜 서비스에 접근하기 위한 산업 표준 인터페이스입니다.

'old > Mobile' 카테고리의 다른 글

HTTP Request Header  (0) 2010.05.10
플랫폼(Platform)과 프레임워크(Framework) 개념비교  (0) 2010.05.10
유니코드(Unicode)  (0) 2010.05.10
포트(Port) 개념잡기  (0) 2010.05.10
소켓통신 (TCP 통신과 UDP 통신 비교)  (0) 2010.05.10
Posted by jazzlife
,

유니코드(Unicode)

old/Mobile 2010. 5. 10. 16:05
유니코드가 없었던 시기에는 한 데이터베이스에 중국어, 아랍어 등을 같이 저장할 수 없었기 때문에 해당언어를 지원하는 데이터베이스를 따로 구축했었다. 이렇게 할 경우 시스템 비용의 증가와 새로운 언어 추가 시의 비용, 전체 시스템의 통합된 정보를 조회의 어려움에 직면하게 되었고 하나의 Character Set으로 세계 각국의 언어를 표현할 수 있으면 좋겠다는 요구가 있어 유니코드가 탄생하게 되었다.

유니코드의 정의는 어떤 언어로 된 정보도 단일 Character Set으로 저장할 수 있는 국제적으로 부호화된 Character Set이다. 유니코드는 또한 platform, program, language에 관계없이 모든 character는 유일한 값을 가진다. 따라서 여러 나라 언어를 동시에 저장하고자 할 경우 유용하게 사용할 수 있다. .


가변 길이는 언어마다 한글자가 차지하는 길이(byte)가 다르다는 것을 말하고, 고정 길이는 언어에 관계없이 한글자가 차지하는 길이는 동일하다는 것을 의미한다. 각 유니코드별 장점도 이러한 특성을 고려하면 쉽게 이해 할 수 있을 것이다. 대표적으로 사용되는 유니코드로는 UTF-8, UCS-2, UTF16가 있으며 각각의 특징과 장단점을 도표로 나타내면 다음과 같다.

 
Posted by jazzlife
,

포트(Port) 개념잡기


포트(Port)는 하나의 컴퓨터에 실행 중인 여러 네트워크 프로그램을 구분하기 위해 부여된 번호입니다. 16비트로 구성된 번호입니다.


예를들면, 우편물이 집에 도착했는데 그 우편물이 누구의 것이냐는 것입니다.
여기서 집을 하나의 컴퓨터(호스트)라 하고, 주소를 컴퓨터의 IP, 우편물에 적힌 이름은 포트 번호라고 이해하시면 쉬울 것입니다. 즉, 컴퓨터까지는 왔는데 그 컴퓨터의 어느 프로그램이 패킷을 받을지를 알아야 하니 이런 번호가 부여됩니다.

우리가 자주 쓰는 웹 서버나 ftp 서버 같은 것들도 전부 포트번호가 있습니다.
그런데 이런 것들은 자주 많이 쓰이기 때문에 포트번호를 지정해 놓았습니다.
그래서 우리들은 인터넷 주소만 입력하면 바로 웹 페이지를 열 수 있는 것입니다.
포트 번호를 따로 적지는 않습니다.


왜냐하면, 미리 이 포트번호는 http의 번호이다라고 정해놓았기 때문입니다.
그렇게 많이 쓰는 서버들의 포트들을 well-known 포트라고 합니다.
1 - 1024까지는 well-known 포트로 되어있습니다.
그래서 보통 새로운 서버를 만든다면 이 포트(well-know port)는 되도록 피하는 것이 좋습니다.
포트 번호가 16비트니 포트번호는 충분할 것입니다. 

'old > Mobile' 카테고리의 다른 글

TCP/IP 프로토콜 아키텍처  (0) 2010.05.10
유니코드(Unicode)  (0) 2010.05.10
소켓통신 (TCP 통신과 UDP 통신 비교)  (0) 2010.05.10
스텁(Stub)과 스켈레톤(Skeleton)  (0) 2010.05.10
Vcard 타입과 Vcalendar 타입  (0) 2010.05.10
Posted by jazzlife
,

소켓통신 (TCP 통신과 UDP 통신 비교)


소켓통신에는 기본적으로 2가지의 통신방법이 있습니다. 신뢰성 프로토콜인 TCP(Transfer Control Protocol)와 비신뢰성 프로토콜인 UDP(User Datagram Protocol)가 그것입니다.


TCP 통신의 개념

TCP(Transmission Control Protocol) 통신은 전화와 같은 방식으로 동작합니다. 보통의 경우 상대방의 전화번호를 알고 있어야 전화를 거는 것처럼 TCP 통신을 하기 위해서는 상대방의 IP 주소와 Port를 알고 있어야 연결을 요청할 수 있습니다. 그리고 전화를 걸더라도 받아주지 않으면 계속해서 대기해야 합니다. 이와 마찬가지로 서버가 응답을 받아주지 않으면 계속적으로 요청을 하게 됩니다. 물론 어느 순간에 포기하는 것도 마찬가지입니다. 


만약 전화를 받았다고 생각해 보죠. 양방향 통신이 가능합니다. 한번 연결되면 계속해서 상대방에게 음성을 전달할 수 있는 것처럼 TCP 통신에서도 계속적으로 소켓을 통해서 데이터를 주고받을 수 있습니다. 


전화가 연결된 후 끊기 전까지는 계속해서 통신을 할 수 있는 것입니다. 그리고 양방향 모두 가능합니다. 데이터의 확인 절차도 거치게 됩니다. 만약 전화가 잘 들리지 않는다면 상대방은 '뭐라고요?'라고 하지 않습니까! TCP 프로토콜도 자료를 받지 못했다면 다시 요청하는 메커니즘(Mechanism)을 가지고 있습니다. 


UDP(User Datagram Protocol) 통신은 편지에 비유할 수 있습니다. 여러분은 편지를 쓸 때 편지지에 데이터를 기록하고, 편지봉투에 상대방의 주소와 자신의 주소를 표시한 후 그냥 보내 버립니다. 편지가 도착했는지 하지 않았는지는 알 수 없죠. 이러한 원리는 UDP에서 그대로 적용됩니다.


먼저 데이터를 생성한 후 상대방의 주소와 자신의 주소를 기록하고 보내버리면, 그 데이터를 받았는지 확인할 방법은 없습니다. 단지 보냈다는 사실만 존재할 뿐입니다. UDP 통신 자체는 상대방과 연결되어 있는 개념이 아닙니다. 자신의 로컬 머신에서 소켓을 개설하고 데이터를 랜카드에 실어 버리는 개념입니다. 그렇기 때문에 편지를 우체통에 넣어버리는 개념과 흡사한 것입니다.


UDP 통신의 개념

편지를 받는 사람 입장에서 생각해 보죠. 편지가 왔는지 오지 않았는지는 편지함을 열어보기 전에는 알 수 없습니다. 이것과 마찬가지로 상대방이 UDP를 통해서 데이터를 보냈다 하더라도 UDP 소켓을 통해서 자신의 포트를 열어보기 전에는 데이터가 왔는지 오지 않았는지 알 수 없습니다. 즉 자신의 로컬 머신에 소켓을 개설하고 데이터가 들어왔는지 오지 않았는지를 확인하는 메커니즘이 됩니다. 이것은 편지가 우편함에 있는지 없는지를 확인하는 것에 비유할 수 있습니다.


TCP와 UDP 프로토콜의 통신 메카니즘의 차이는 일반적인 생활에서 쉽게 찾아볼 수 있습니다. TCP 통신은 데이터를 주고받을 때 데이터가 도착했는지 하지 않았는지 내부적으로 확인하게 됩니다. 만약 하지 않았다면 재요청을 하는 메카니즘을 가지고 있습니다. 이러한 확인 절차로 인해 속도면에서 느립니다. 하지만 UDP는 이러한 확인 절차를 거치지 않고 계속적으로 데이터를 보내기만 하고 받기만 하기 때문에 훨씬 빠른 속도로 처리될 수 있습니다. 


속도면에서 UDP가 빠르지만 UDP는 데이터가 정확하게 도착했는지 하지 않았는지 알 수 없는 비신뢰성 프로토콜입니다. 이에 반해 TCP는 이를 보장하는 신뢰성 프로토콜입니다.


쉽게 이야기 하자면 TCP 는 전화와 비슷한 방식을 제공한다. 서로 연결된 상태에서만 정보를 교환 할 수 있다. UDP 는 편지나 , 방송과 비슷하다고 할 수 있다. 발송된 편지는 수신자가 받았는지 안받았는지 알수 없다 전달하게 되면 그만 인것이다(적절한 표현인지 모르겠다...)


방송과 같은경우는 UDP 와 잘 맞는거 같다. KBS나 MBC에서 브로드캐스팅된 정보를 각각의 가정에서 받아 TV 화면으로 보지만 우리는 그것을 잘 받았다고 MBC 나 KBS에 응답하거나. 잘못된 수신된 화면에 대해 재요청하거나 하지 않는다.


용어를 조금 정리해 보자면 전화가 유니캐스트 라면 방송의 경우는 브로드 캐스팅이며, 멀티캐스트는 브로드캐스트와 비슷하지만 전체 중 선택된 그룹만 보낼수 있다는 점이 각각 다르다.


예를 들어보자. CP 사와 관련되어 결제 및 중요한 인증부분을 개발 할 경우 TCP/IP 로 개발하는 것이 신뢰성을 높일 것이며, 사내 A 네트워크에 포함된 컴퓨터들에게 일종의 패치 파일이나 메시지를 전달 하고자 한다면 UDP 를 이용해야 할 것이다.


다음 표는 상기에서 설명한 TCP와 UDP의 특징을 비교 정리한 것이다.  

 

'old > Mobile' 카테고리의 다른 글

유니코드(Unicode)  (0) 2010.05.10
포트(Port) 개념잡기  (0) 2010.05.10
스텁(Stub)과 스켈레톤(Skeleton)  (0) 2010.05.10
Vcard 타입과 Vcalendar 타입  (0) 2010.05.10
OSI 7계층 개념잡기  (0) 2010.05.10
Posted by jazzlife
,

스텁(Stub)과 스켈레톤(Skeleton)


스텁은 객체 그 자체와 동일한 비즈니스 메소드를 가진 인터페이스를 구현하지만, 스텁의 메소드는 비즈니스 로직 자체를 담고있지는 않으며, 클라이언트가 스텁의 비즈니스 메소드를 호출하면 호출된 메소드 명과 매개변수로 전달된 값들이 스트림 형태로 네트워크를 통해 스켈레톤에 전달된다.


해당 스트림을 스켈레톤이 받게 되면 스켈레톤은 스트림을 분석하여 어떤 메소드가 요청되었는지를 파악하고, 서버에 있는 객체의 비즈니스 메소드를 호출하게 된다. 메소드의 실행 결과값은 다시 스켈레톤에 의해 스텁으로 전달되며, 스텁은 마치 해당 비즈니스 로직을 로컬 컴퓨터에서 처리한 것처럼 클라이언트 애플리케이션에 결과값을 전달한다.


짐작하겠지만, 이 과정은 네트웍을 통한 자료교환을 포함하므로, 로칼에서의 메소드 콜보다는 훨씬 많은 시간을 소모한다. 따라서 원거리 호출의 횟수를 줄이는 것은 수행성능 향상을 위해 반드시 고려되어야 할 사항이다.


아래 그림은 Java RMI를 이용하였을 경우의 클라이언트 측의 스텁과 서버측의 스켈레톤의 형상을 보여주고 있다.


 

'old > Mobile' 카테고리의 다른 글

포트(Port) 개념잡기  (0) 2010.05.10
소켓통신 (TCP 통신과 UDP 통신 비교)  (0) 2010.05.10
Vcard 타입과 Vcalendar 타입  (0) 2010.05.10
OSI 7계층 개념잡기  (0) 2010.05.10
인코딩과 디코딩  (0) 2010.05.10
Posted by jazzlife
,

Vcard


Vcard는 일종의 전자 명함과 동일한 기능을 수행할 수 있게 설계된 프로토콜로, 시스템이나 애플리케이션 종류에 관계없이 호환 가능한 형식으로 제공하는 데이터 스트림이다.

 

사용자별 데이터 스트림은 이름, 주소, 전화번호, 전자메일 주소, 인터넷 URL, 사진, 회사 로고, 사운드 파일 정보로 구성돼 있으며, 데이터 스트림 전송 시에는 MIME 인코딩을 통해 전자메일에 첨부해 3자에게 전송할 수 있다.


기존의 그룹웨어나 인터넷 메일에서 사용자 정보가 상호 호환되지 않아 일반 텍스트나 데이터베이스에서 관리되던 것이 Vcard를 채택하면 자신의 사용자 정보를 임의의 사용자나 호스트 등으로 이동할 수 있게 된다.

 

Vcalendar


Vcalendar는 전자 켈린더링과 스케줄링 포맷을 제공해 서로 다른 켈린더 또는 일정 관리 프로그램을 사용하는 사람 간에 일정 정보를 공유할 수 있도록 설계된 프로토콜이다.

 

데이터 스트림으로 구성돼 해야 할 일과 이벤트 일정이 표준 양식으로 표현되며, 데이터 공유시 MIME 인코딩을 통해 전자 메일에 첨부해 3자에게 전송할 수 있다.

'old > Mobile' 카테고리의 다른 글

소켓통신 (TCP 통신과 UDP 통신 비교)  (0) 2010.05.10
스텁(Stub)과 스켈레톤(Skeleton)  (0) 2010.05.10
OSI 7계층 개념잡기  (0) 2010.05.10
인코딩과 디코딩  (0) 2010.05.10
Ad-Hoc 이란?  (0) 2010.05.10
Posted by jazzlife
,

각각을 간단하게 살펴보면 다음과 같다.

 

✔ 7층 : Application Layer

 

여러 가지 서비스를 제공한다. 사용자로부터 정보를 입력받아 아래층으로 전달하고 아래층에서 보내주는 정보를 사용자에게 전달한다. 어플리케이션층은 사용자에게 서비스를 제공하고 사용자가 제공한 정보나 명령을 하위층으로 전달하는 역할을 수행한다.  우리가 잘 알고 있는 telnet, FTP, SMTP, POP, SNMP, WWW 그리고 '마이크로소프트 네트웍'과 '노벨 네트웍'등이 이 서비스에 해당된다.

 

✔ 6층 : Presentation Layer

 

사용자가 주는 정보는 통신에 적당한 형태로 변환하고 세션 층에서 전달한 정보는 사용자에 맞게 변환한다. 즉, 프리젠테이션층은 세션층에서 넘겨준 데이터를 어플리케이션이 이해할 수 있는 형태로 바꾸고 반대로 어플리케이션이 넘겨준 데이터를 세션층이 다룰 수 있는 데이터로 바꾸어 전달하는 일을 담당한다.  대표적인 것이 인코딩(디코딩)과 암호화이다.

 

✔ 5층 : Session Layer

 

정보가 흐르는 통로를 만들거나 폐쇄한다. 암호를 확인하거나 속도 조절도 행한다. 다시말해,세션층은 어플리케이션이 네트웍 에러의 영향을 가능한 적게 받도록 하는 것이 주목적이다.  대부분의 네트웍 어플리케이션에서 정보는 대량으로, 지속적으로 전달되어야 한다. 

 

그러나 그 전송 중간에 에러가 발생하는 경우 전송을 멈추고 끊어진 곳부터 재전송을 요구해야 한다.  이런 일까지 모두 어플리케이션이 다 담당한다면 대단히 부담스러운 작업이 될 것이다.  세션층은 이러한 전송실패의 영향을 최소화하기 위해 만들어 졌다.

 

세션층의 또 다른 임무는 이 기종간의 통신환경에서 데이터의 호환성을 보장하는 것이다. 사용자들이 C언어 같은 고급 언어로 프로그램을 짜서 소스를 배포한 다음 각각 다른 기종에서 컴파일 한다면 기계에 따라 정수형이 16비트, 32비트로 다르게 표현되는 경우도 있다. 이런 경우를 대비해서 세션층에서는 서로 다른 길이를 갖는 데이터들을 적절하게 변환하는 기능을 가진다.

 

✔ 4층 : Transport Layer

 

정보의 전달을 관리 감독한다.  네트워크 층에서 온 정보를 세션 층의 어느 어플리케이션에 보낼 것인가를 판독하고 네트워크 층으로 나가는 경우는 경로를 선택한다.

 

✔ 3층 : Network Layer

 

정보가 전달될 상대의 주소를 찾고 나에게 온 정보의 주소를 확인하여 내 것이면 트랜스포트 층으로 전달한다.

 

✔ 2층 : Data Link Layer

 

네트워크층에서 확인한 주소의 상대와 물리적 연결을 위한 통로를 열고 유지한다. 에러를 검출하고 수정한다.

 

✔ 1층 : Physical Layer

 

데이터를 비트 단위로 쪼개어 전기적 신호로 변환한다.

 

위의 7계층이 이해가 않되는 경우는 그냥 어플리케이션층, 프로토콜층, 물리층으로 이해하면 편하다. 실제로 랜 카드에는 1,2층이 탑재되어 있고 프로토콜에는 3,4층이, 웹브라우져 등에는 5,6,7층이 탑재되어 있다.

 

네트워크를 다루는 프로그램은 컴퓨터의 자원을 다루는 것인데 컴퓨터의 자원은 기본적으로 OS가 다룬다. 과거에는 DOS를 띄운 상태에서 네트워크 프로그램이 램 상주로 뜨기도 하였으나 현재는 OS자체가 네트워크를 담당하게 되었고 OS의 기능 중 특별히 네트워크를 강조할 때 NOS(Network OS)라고 한다. 현재 시장을 3분하고 있는 NOS로는 UNIX, NetWare, Windows 등이 있다.

 

실제 ISO 7 계층을 만든 이유 중 하나는 전 세계 사람이 공용하여 쓸 수 있는 공짜의, 공개된 프로토콜을 만들기 위한 것도 있었다.  그러나 7계층이 발표된 시점에 이미 많은 프로토콜이 사용되고 있었고 특히 WAN에서는 TCP/IP가 표준으로 자리잡아 독보적인 위치를 확보하고 있었다.  그 이후, 1 계층과 2 계층에서는 Ethernet이, 3계층과 4계층에서는 TCP/IP, NetBuei, IPX등이 업계표준으로 자리잡게 되었다.

 

OSI 7계층에 따른 프로토콜(OSI 프로토콜) 교과서 같은 곳에 소개되다가 차세대 시리얼 버스 규격인 IEEE1394에 사용되고 있다.  5,6,7계층은 따로 따로 구현되기 보다 통합되어 여러 가지 '서비스'라는 이름으로 제공된다. Telnet, FTP, e-mail (SMTP, POP), News (NNTP), NetBIOS 등이 이 서비스 층에 해당된다.

 

OSI 7 계층에 대한 간단한 예제

 

미국에 있는 친구에게 편지 보내는 일을 OSI 7 Layer를 적용시켜서 설명한 것이다.

미국에 있는 친구는 억울하게도 한국어를 모르며, 편지를 보내는 나 또한 영어를 모른다.

 

Sending

 

✗ Application Layer (Layer 7) : 편지를 쓰는 것을 의미한다.

 

✗ Presentation Layer (Layer 6)

     한글로 작성한 편지를 미국 친구가 알아 볼 수 있게 영어로 번역하는 작업이다.

 

✗ Session Layer (Layer 5) : 미국 친구의 집 주소를 기입하는 일이다.

 

✗ Transport Layer (Layer 4)

     우체국에 편지를 접수시키기 위한 절차, 즉 배 또는 비행기등의 운송수단을 결정한다.

 

✗ Network Layer (Layer 3)

     우체국에 있는 여러 편지들을 같은 목적지별로 분류하는 작업이다.

 

✗ Data Link Layer (Layer 2)

     해당되는 목적지와 운송 방법에 따라 분류하며, 해당되는 목적지와 직접 연결이 되지 않는 경우 중간 경유지를 선택하여 분류하는 작업이다.

 

✗ Physical Layer (Layer 1)

     실제적으로 편지가 배, 비행기, 자동자 등의 운송순단에 의하여 운송되는 것을 의미한다.

 

Receiving

 

✗ Physical Layer (Layer 1)

     실제적으로 편지가 배, 비행기, 자동차등의 운송 수단에 의하여 운송되는 것을 의미한다.

 

✗ Data Link Layer (Layer 2)

     중간 경유지를 거친 운송물과 그렇지 않은 운송물을 분류한다.

 

✗ Network Layer (Layer 3)

     해당 주소지에 따라 각각의 편지를 각 우체국으로 분류하는 작업을 의미한다.

 

✗ Transport Layer (Layer 4)

     각 우체국에서 주소에 따라 분류하는 작업을 의미한다.

 

✗ Session Layer (Layer 5)

     우체부에 의해서 배달되는 작업을 의미한다.

 

✗ Presentation Layer (Layer 6)

     편지를 보내는 과정에서 이미 작업을 하였을 경우에는 이 과정은 필요가 없다.

     만약에 작업을 하지 않았을 경우에는 한국어로 된 편지를 영어로 번역하는 작업을 해야 한다.

 

  ✗ Application Layer (Layer 7)

     본인이 편지를 읽는다.

 

 

OSI 각 계층별 역할 (이메일 전송비유)

 

장치 A의 사용자가 네트워크를 사용하여 장치 B로 데이터를 전달하는 순서대로 OSI 각 계층의 기능을 알아보도록 하자. 장치 A의 사용자가 장치 B의 사용자에게 이메일을 보낸다고 하자. 장치 A 사용자는 이메일 프로그램을 실행하고, 보내고자 하는 메세지를 작성하고 "보내기" 버튼을 누르므로써, 네트워크 데이터가 전송되기 시작한다.


작성된 메세지는 응용 계층(Application Layer)에서 표현 계층으로 전달하게 된다.

표현 계층(Presentation Layer)으로 전달된 메세지는 공통된 표형형식으로 데이터를 변환하거나, 데이터를 암호화, 또는 데이터 압축을 수행한다. 이렇게 변환된 데이터는 세션 계층으로 전달되게 된다.

 

세션 계층(Session Layer)으로 전달된 데이터는 데이터의 동기화를 위하여 일정한 길이 마다 sync를 삽입하여 전송 계층으로 데이터를 전달하게 된다.

 

전송 계층(Transport Layer)에서는 발신지와 목적지의 주소 지정을 하고, 연결 방식을 연결(Connection), 비연결(Connectionless) 방식으로 설정하며, 흐름 제어와 오류 제어 기능을 한다. 그리고, 데이터를 전송할 수 있는 세그먼트 단위로 나누고 네트워크 계층으로 데이터를 전달하게 된다.

 

네트워크 계층(Network Layer)에서는 발신지와 목적지의 주소가 아닌 라우팅에 필요한 논리 주소를 설정하고, 패킷에 대한 라우팅을 정보를 삽입 한다.

 

데이터링크 계층(Datalink Layer)에는 우선 프레임단위로 데이터를 나눈다(데이터를 받는 쪽에서는 프레임을 모아서 재 결합을 한다). 그리고 흔이 MAC 주소(MAC Address)라고 부르는 물리적인 주소지정을 하고, 각 양 끝단의 속도 차이에 대해 원활하게 해 주기 위한 흐름 제어를 한다. 또한 데이터의 오류를 막기 위하여 CRC 방법이나 체크섬(Check Sum) 방식을 사용하여 데이터를 받는 쪽에서 데이터의 오류를 검사할 수 있도록 설정한다.

 

물리 계층(Physical Layer)에는 매체의 물리적 특성 즉, 전송 매체가 일반 케이블인지, 광 케이블인지, 매체의 길이 등의 설정을 한다. 그리고, 전송 방식과, 데이터를 회선으로 보내기 위한 전기적인 변환을 담당한다.

 

OSI 7계층 참조모델 예제 (메신저 비유)


OSI 참조 모델이 지향하는 통신 모델이 P2P의 형태입니다. P2P 통신의 과정을 전제로 둔 후, 그 과정을 역할별로 나눈 7개의 논리적인 계층으로 구성되어 있구요.. 질문이 정확하지 않아서 자세히는 답변드리지는 못하겠는데.. 말씀하신 메신져도 이 모델에 맞춰 설명될 수 있죠..

 

메신져 인터페이스에 텍스트를 입력하는 그 순간이 7계층이 되겠고, 입력된 텍스트는 컴퓨터간에 인식이 가능한 형태로 바뀌어, 전송될 때 압축이 되겠죠(6계층)..

 

이렇게 컴퓨터내에서 변환된 코드(데이터)가 상대방에게 전송되려면 상대방도 메신져에 연결이 되어야 하겠구요(5계층)

 

여기까지는 그냥 간단한데 아래부턴 조금 깁니다.

A와 B가 메신져를 할 때 A가 보낸 데이터는 자신의 네트워크 주소(MAC, IP)와 상대방의 주소(마찬가지)를 포함하고 있는데.. 이 데이터가 인터넷 상에서 B가 속해있는 LAN을 찾을 때 데이터에 있는 상대방의 IP주소를 보고서 네트워크를 찾아 그 네트워크의 라우터에 전송됩니다. 이는 라우터라 라우팅이라는 기능을 이용해 길잡이 해주는 것이죠..(3계층)

 

이 라우터까지 왔으면 그 라우터가 속한 네트워크 내에서 상대방 B의 컴퓨터를 찾아가야 하는데 이때 길잡이를 해주는게 스위치(스위칭허브)입니다. 얘는 데이터에 있는 MAC 주소를 보고서 길잡이를 해주게 되는거죠..(2계층)

 

그리고 이렇게 데이터가 전송된다는 것 자체는 도선을 타는 전류로 볼 수 있겠구요..(1계층). 헌데 이 데이터가 컴퓨터내에 들어오면 컴퓨터는 이놈이 어떤 종류의 데이터인지 구분을 해서 해당 데이터가 속하는 프로토콜 포트로 집어 넣어 메신져에서 B가 수신합니다.(4계층)

'old > Mobile' 카테고리의 다른 글

스텁(Stub)과 스켈레톤(Skeleton)  (0) 2010.05.10
Vcard 타입과 Vcalendar 타입  (0) 2010.05.10
인코딩과 디코딩  (0) 2010.05.10
Ad-Hoc 이란?  (0) 2010.05.10
MIME 개념잡기  (0) 2010.05.10
Posted by jazzlife
,

인코딩과 디코딩

old/Mobile 2010. 5. 10. 16:01

보통의 텍스트 파일을 보내고 받는데는 위와 같이 ASCII 라는 공통된 표준에 따르기만 하면 아무 문제가 없었다. 그런데 네트웍을 통해 ASCII 파일이 아닌, 즉 바이너리 파일을 보낼 필요가 자주 발생하게 되었다.

 

바이너리 파일이라 함은 음악 파일이나 그래픽 파일, 무비 파일, 또는 워드프로세서로 만든 (포매팅 정보가 담긴) 문서 파일등을 의미한다. 이들은 모두 8 자리 이진수의 첫번째 자리가 '0'으로 한정된 것이 아닌, 8 비트 모두를 다 사용한다는 특징을 있다. 즉 8 비트 데이터이다. (아스키문자-->7비트 데이터)

 

그런데, 이메일이나 기타 네트웍상에 데이터를 교환하는 시스템은 애초 아스키 문자로 이뤄진 파일만을 전송하는 것을 전제로 제작되었기 때문에 첫번째 숫자가 1인 이들 바이너리 데이터를 제대로 전달할 수가 없었다.

 

따라서 이들 바이너리 파일(음악, 그래픽, 무비, 엑셀파일) 등을 기존의 시스템 상에서 문제없이 전달하기 위해서는 이들을 '아스키 문자 파일' 로 전달해야 했다. 즉. '텍스트' 형태로 변환해야만 했다. 이러한 작업을 일컬어 인코딩 (encoding) 이라고 한다.

 

디코딩은 당연히 인코딩된 텍스트 파일을 다시 바이너리 파일로 변환하는 해독과정을 의미한다. 그러면 초창기에 인코딩을 어떻게 했는지 초기 인코딩 방식의 대표적 표준인 UUEncode (Unix-to-Unix Encode) 방식의 원리를 통해 간단히 알아보자.

 

바이너리 파일에서 3 개의 바이트를 불러내 보면.
10011100, 00110011, 11110000

 

이러면 2진수 8자리씩 총 24개가 된다. 이들을 다시 6개짜리 4개로 재구성한다.
100111, 000011, 001111, 110000

그 다음 첫 두자리에 0을 붙입니다.
00100111, 00000011, 00001111, 00110000

 

이제 전부 첫번째 숫자가 0 이 되어서 조금 더 아스키코드와 유사한 형태로 재구성되었다. 그 다음엔 각각에 십진수 32 (이진수 100000)를 더한다. 왜? 그렇게 하면 조절문자가 아닌, '화면에 보이는' 보통의 문자값이 되기 때문이다.

 

그 결과는 아래와 같다.
01100111, 01000011, 01001111, 01110000

 

이제 이들은 모두 알파벳이나 기타 기호등의 보통의 아스키 문자로 바꿀 수가 있다. 따라서 이런 과정을 거친 파일은 하나의 '아스키문자 파일' 이 되어서, 종래의 이메일 시스템 등을 통해 아무 문제없이 전달될 수가 있다.

'old > Mobile' 카테고리의 다른 글

Vcard 타입과 Vcalendar 타입  (0) 2010.05.10
OSI 7계층 개념잡기  (0) 2010.05.10
Ad-Hoc 이란?  (0) 2010.05.10
MIME 개념잡기  (0) 2010.05.10
아스키(Ascii)와 바이너리(Binary) 개념잡기  (0) 2010.05.10
Posted by jazzlife
,

Ad-Hoc 이란?

old/Mobile 2010. 5. 10. 16:00

Ad-Hoc 네트워크라 함은 무선 통신 및 네트워킹 능력을 갖춘 두개 이상의 장비로 구성된 네트워크를 말한다. Ad-Hoc 네트워크를 구성하는 노드들은 같은 네트워크를 구성하는 자신의 전파 도달거리 밖에 있는 다른 노드와 통신할 수 있으며, 이때 중간 노드(intermediate node)들은 소스와 목적지 노드간의 데이터 통신을 위한 패킷을 전달(forwarding), 중계(relay)할 수 있는 기능을 제공한다.

 

Ad-Hoc 네트워크의 가장 큰 특징은 “ad-hoc" 자체가 의미하듯이 별도의 기반 시설(infrastructure)없이 모바일 디바이스만으로 구성가능하며(self-organizing), 네트워크의 어떠한 변화에도 적응적(adaptive)이라는 것이다.

 

즉 네트워크를 구성하는 노드들만으로 별도의 시스템 관리(system administration)없이 네트워크 상의 다른 노드들을 발견하고 네트워크를 형성할 수 있음을 의미한다. 또한 기존의 네트워크와 같이 별도의 베이스 스테이션(base station), 와이어 또는 케이블, 라우터나 브리지 등 네트워크를 구성하기 위한 기반시설 없이 네트워크 구성이 가능하다.

 

또 다른 특징으로 서로 다른 종류의 디바이스로도 네트워크의 형성이 가능하다는 특징이 있다. 즉 하나의 동일한 Ad-Hoc 통신 프로토콜을 사용함으로써 노트북이나 PDA, 또는 인터넷 모바일 휴대폰 등 이기종간에 통신이 가능한 Ad-Hoc 네트워크를 구성할 수 있다.


(그림) Ad-hoc 서비스

'old > Mobile' 카테고리의 다른 글

OSI 7계층 개념잡기  (0) 2010.05.10
인코딩과 디코딩  (0) 2010.05.10
MIME 개념잡기  (0) 2010.05.10
아스키(Ascii)와 바이너리(Binary) 개념잡기  (0) 2010.05.10
음수 2진수와 10진수간의 변환 방법  (0) 2010.05.10
Posted by jazzlife
,

MIME 개념잡기

old/Mobile 2010. 5. 10. 16:00

MIME의 정의를 살펴보자면, Multipurpose Internet Mail Extensions 의 약자로 일종의 암호화 비스무리한 파일 변환을 뜻한다. MIME은 이메일과 함께 동봉할 attachment 파일을 텍스트 문자로 전환해서 이메일 시스템을 통해 전달하기 위한 목적으로 개발되었기 때문에, 이름이 Internet Mail Extension 이다. 하지만 이제는 웹을 통해서 여러 형태의 파일을 전달하는데 두루 쓰이고 있다.

 

왜 UUEncode 방식이 있는데 MIME 이란게 등장했느냐? UUEncode 방식에는 단점이 있었기 때문이다. 예를 들면, 문서의 끝부분의 공백이 사실은 공백이 아니라 모두 변환되어야 할 값들을 나타내는데, 이 공백을 무시하는 시스템의 경우엔 UUEncode 파일을 원형 그대로 전달 받을 수 없었다는 것등과 같은 문제가 있었다.

 

그래서 UUEncode 방식을 대폭 보완한 새로운 인코딩 방식이 등장하게 되었고, 이걸 일컬어 MIME 이라고 하는 것이다. MIME 은 특히 기존의 UUEncode 방식에서는 없었던 '파일 포맷' (또는 Content-type) 정보도 함께 담을 수 있다. 즉 지금 전달되는 이 파일은 GIF 파일이다, MOV 파일이다 등을 나타내 주는 딱지를 붙일 수 있었다. 이렇게 MIME 에서 사용하는 인코딩 방식을 base64 라고 한다. 방식은 위에서 살펴본 것과 유사하다. 8 비트 3 개를 6 비트 4개로 바꿔서, 적절한 변형을 하는 것이다.

 

이렇게 해서 텍스트만이 전달될 수 있는 기존의 이메일 시스템에서도 여러 가지 바이너리 파일들을 자유롭게 주고 받을 수 있게 된 것이다. 이것을 가능하게 한 것이 MIME 입니다. 8 비트 바이너리 파일을 7 비트의 아스키문자 파일(플레인 텍스트 파일)로 바꿔주는 것이다.

 

MIME 타입 심층분석


MIME으로 인코딩 한 파일은 Content-type 정보를 파일의 앞부분에 담게 된다는 것을 앞에서 언급하였다. 그런 컨텐트 타입에는 여러 가지가 있다. 자주 이런 말을 들어 보았을 것이다. “어떤 마임 타입 (MIME Type) 이 웹 브라우저에서 지원된다, 안된다.”

 

이건 특정 컨텐트 타입의 파일을 웹 서버로부터 전달 받아서 웹 브라우저가 열 수 있다, 아니다는 의미이다. 예를 들어. 어떤 그림 파일이 있다면. 웹 브라우저가 서버에 접속해서 html 문서를 요청하면서, html 문서 내에 담긴 img 값으로 지정된 path로 부터 불러들인다.


이때 그 path 에 있는 파일이 웹 브라우저에서 지원되는 mime type 이라면 웹 브라우저를 통해서 '열어' 볼 수 있다. 브라우저 내에서 바로 뜰 수도 있고 (.gif 나 .jpg 처럼) 아니면 외부 그래픽 프로그램이 구동되면서 그 이미지 파일을 띄울 수도 있다.

 

음악 파일도 마찬가지이다. 바로 그런 것을 두고 '이 MIME 타입은 웹 브라우저에서 지원된다, 안된다..'는 의미이다. 주로 쓰이는 (거의 표준이 된) 대부분의 포맷들 (.gif, .jpg, .mov ) 들은 대개 웹 브라우저에서 무리 없이 열린다.

 

하지만 브라우저에서 지원하지 못하는 유형의 파일들은 그 파일들을 열어줄 수 있는 프로그램을 손수 지정해 주어야 하는데 웹 브라우저 세팅에 보면 외부 프로그램을 '연결' 지울 수 있다. 물론 윈도우즈는 좀 다르다.

 

하지만 대체로 '기본 세팅' 된 프로그램들이 대개의 컴퓨터에 깔려 있는 것이기 때문에 (ex : .zip 파일이라면 winzip , .sit 파일이라면 stuffit expander , .mp3 면 winamp. . .) 특별히 설정을 건들지 않고도 그 파일을 전송받으면 '이미' 어딘가에 깔려져 있는 winzip 이라든지 winamp 등이 자동으로 뜨면서 해당 파일을 열어주게 된다.

 

역으로, 어떤 MIME 타입을 자기가 원하는 특정 프로그램으로 열고 싶다면 이걸 따로 설정해줘야 된다는 얘기도 되겠죠? 이를 테면 나는 mp3 를 winamp가 아닌 다른 프로그램으로 열고 싶다면 따로 연결을 해줘야 default 로 설정된 winamp 대신에 지정된 프로그램이 실행된다는 의미이다.

 

매킨토시의 경우엔 웹 브라우저 (익스플로러, 넷스케이프) 내의 ' 환경설정 ' 에서 이들 MIME 타입별 연결 프로그램을 지정해 줄 수 있게 되어 있지만, 윈도우즈의 경우엔 운영체제 레벨에서 이를 지정한다. 윈도우즈 탐색기를 연 다음, '보기 -> 폴더옵션' 이라는 메뉴에 보면. 아래 그림과 같이 ' 파일형식 ' 이라는 탭이 있다. 여기에서 파일 확장자나 마임타입 별로 구동될 프로그램을 설정한다.

 

gif 파일의 경우를 살펴보자면,  '내용 형식' 이라는 단어 옆에 'MIME'이라고 되어있다. MIME 타입이 어떻게 설정되어 있는지를 살펴보자면, 일단 가운데 슬래쉬 ( / ) 가 있고, 슬래쉬 앞부분에는 파일의 종류를 나타내는 image, 슬래쉬 뒷부분은 파일의 포맷을 나타내는 gif를 나타내고 있다. 이렇게 MIME 타입은 '파일종류 / 파일포맷' 형태로 정의된다.

 

MIME 타입의 예를 들자면 아래와 같다.
application/msword
text/html
application/pdf
audio/mpeg

 
마임 타입 밑에 보면 연결 프로그램으로 인터넷 익스플로러가 설정 되어 있다. 따라서 gif 파일을 더블 클릭하면 익스플로러가 뜨면서 열리게 된다. 또는 웹 문서에 포함된 gif 파일도 바로 웹 브라우저에서 열리게 된다.

 

만약 image / gif 마임 타입을 다른 그래픽 프로그램 (예: 페인트샵 프로) 과 연결해 놓았다면, 웹 상에서 gif 파일이 포함된 웹 문서가 열릴 때마다 페인트샵 프로가 뜰 것이고, 데스크탑 상에서 더블클릭 해도 페인트샵 프로가 뜨면서 열릴 겁이다.

 

윈도우는 웹을 통해 이동할 수 있는 특정 MIME 타입을 열 외부 프로그램을 웹 브라우저에서 지정하지 않고 운영체제 레벨에서 지정을 한다. 바로 이것이 웹 브라우저와 OS 를 '불공정' 하게 혼합시켰다는 하나의 사례인 것이다. 미 법무성이 마이크로소프트를 제소한 이유가 바로 이 때문이다.

 

MIME 타입의 예


좀 더 쉬운 예를 들어보자. 사용자가 Windows 시스템에서 PPT 파일을 더블클릭을 하면 파워포인트가 자동 실행된다. 이 또한 MIME 설정과 유사하다고 볼 수 있다. (연결 프로그램 설정과 비슷한 개념)

 

그렇다면 왜 웹서버에 MIME을 설정하는 것일까? 이미지는 image/로, 오디오는 audio/, 비디오는 video/로 보통 시작한다. 그리고 application/가 있다. ppt는 application/powerpoint로 MIME 타입이 보통 웹서버에 잡혀 있습니다.

 

사용자가 Internet Explorer(이하, IE)에서 ppt 파일을 다운로드 받을때 저장하지 않고 "열기"를 하면 IE에서 바로 ppt 파일이 브라우징 된다. 즉, 해당 클라이언트에 설치되어 있는 프로그램을 실행하여 보여주는 서버의 파일을 보통 application/로 표현을 한다.

 

그렇다면 왜 XHTML 패밀리 문서에 대한 MIME 타입을 application/xhtml+xml로 했을까? 이는 text로 해도 문제가 없을 것이다. 이는 브라우저에서 해당 XHTML 문서를 application으로 처리하고, 아마도 plugin된 형태의 별도의 어플리케이션에서 보여주는 것과 같이 설계가 되어있기 때문이다.

 

이와 비슷하게 XML 문서도 그 MIME 타입으로 text/xml과 application/xml, 이렇게 2가지 타입으로 설정이 가능하다. 이것은 정책적으로 해당 XML 파일이 브라우저상에서 text 형태로 처리되어야 할 경우에는 웹 서버가 응답(response) MIME 타입을 text/xml 으로 설정하여 클라이언트 브라우저로 전송한다.

 

반면에, 만약 특정 어플리케이션이 해당 XML 문서를 분석하여 처리해야 할 경우에는 웹 서버가 해당 요청에 대한 응답 MIME 타입을 application/xml 로 설정하여 클라이언트 브라우저로 전송한다.

 

즉, 브라우저에서 어떤식으로 XML 문서를 text 형식으로 처리할지, 특정 application에 대한 형식으로 처리할지는 클라이언트/서버간에 미리 정해진 정책상의 문제이다. MIME도 일종의 표준이 있습니다. 보통 표준을 정하면 그대로 따르는 것이다.

'old > Mobile' 카테고리의 다른 글

OSI 7계층 개념잡기  (0) 2010.05.10
인코딩과 디코딩  (0) 2010.05.10
Ad-Hoc 이란?  (0) 2010.05.10
아스키(Ascii)와 바이너리(Binary) 개념잡기  (0) 2010.05.10
음수 2진수와 10진수간의 변환 방법  (0) 2010.05.10
Posted by jazzlife
,

컴퓨터는 오직 0과 1로 이뤄진 이진수만을 이해할 수 있다. 바이너리(binary)라는 단어가 사전적으로 ‘이진의’, ‘이진수의’라는 의미이다. 그런데 컴퓨터에서 'ㄱ, ㄴ, ㄷ' 이나 'a, b, Z, T'등의 문자를 표시하려다 보니, 이 각각의 문자들을 숫자로 지정해야 만 했다. 즉 a는 십진수로 97, z는 122, 이런 식으로 규정을 해야 했다. 이렇게 규정을 해놓으면 그 값을 이진수로 변환해서 컴퓨터가 각 문자를 식별할 수 있었다.

 

컴퓨터 등장 초기에는 오늘날의 데스크탑과 같이 공통된 표준으로 나오지 않았다. 각자 고유의 특징을 가지고 하드웨어가 제작되었고, 거기에 맞춰 소프트웨어가 개발되었다. 그래서 각 문자들에 해당되는 값 역시 각 컴퓨터마다 달랐다. 이 때문에 서로 다른 회사에서 만든 컴퓨터간에 데이터를 교환해야 할 필요가 생긴 경우, 굉장히 곤란한 상황이 발생하게 되었다. 이 컴퓨터에서는 'abc' 라고 저장하였는데, 다른 컴퓨터에서 열어보면 '!#F' 라고 열린다든지 하는 의도하지 않은 일들이 발생하였다.

 

그래서 각 문자에 해당하는 숫자 값을 하나로 통일하자는 목적아래, ANSI 라는 표준을 정하는 단체에서 ASCII 라는 표준을 제정하였다. ASCII 는 American Standard Code for Information Interchange 의 약자로, 단어 의미대로 정보 교환을 위한 미국 표준 코드였다. 그런데 컴퓨터가 정보를 처리할 때 사용되는 기본 단위는 바이트(byte)였다. 8 자리의 이진수를 바이트 라고 한다.

 

1 바이트는 아래와 같이 8개의 2진수의 모음이다.
11001101

 

1 바이트는 십진수로 고쳐보면, 최소 0 (00000000) 에서 최대 255 (11111111) 사이의 값이다. 그래서 a 는 97, W 는 87, 이런 식으로 0 에서 255 사이에 있는 값들을 각 알파벳, 특수문자 등에 하나하나 대응해서 값을 지정을 하였다. 그러면 여기서 의문이 생기는 것이 “왜 a 를 1 이나 2 처럼 앞의 숫자로 할당하지 않고 저렇게 큰 숫자로 했을까”라는 의문이 생긴다. 그건 'control character' 때문이다.

 

당시 컴퓨터 단말기의 표준격인 TTY 에 쓰이던 조절 문자를 위해 앞의 0-32 를 남겨둬야 했다. 조절 문자라는 것은 폰트가 바뀐다든지, 전송의 끝을 알리는 문자라든지 하는 특수한 작업, 기능, 이벤트를 알려주는 특수 문자였다.

 

그 결과 조절 문자에 할당한 0-32 다음 값인 33부터 '보통의 문자' (화면상에 보여지는)를 하나하나 짝을 지우게 되었다. 아스키 33 은 ! 이고, 34 는 ", 35 는 #, 이런 형태로, 그렇게 해보면 0 부터 127 까지 사용해서 모든 '문자'를 모두 표시할 수 있다.

 

그러면 당연히 맨 마지막 비트 (128 부터 255 까지)는 사용하지 않아도 되니깐 8 자리 이진수의 첫번째 숫자는 '0' 으로 세팅된다. 그래서, 아스키 문자는 이진수로 바꾸었을 때 첫째 숫자가 0 이다. '7 비트 아스키 문자' 라는 용어는 그런 원리로 등장하였다. (물론 이 8 비트를 모두 다 사용하는 문자 세트도 있지만, 일단 이렇게 이해하자.)

 

이제 아스키가 뭔지?, 왜 아스키 문자는 '7비트' 인지?, 그리고 첫 문자값을 33으로 설정했는지? 등에 대해 이해하였을 것이다. 도대체 이러한 것들이 MIME와 무슨 상관이 있느냐? 문제는 컴퓨터 사이에서 이동되는 파일이 모두 다 아스키 문자로 이뤄진 텍스트 파일이 아니라는 데서 출발한다.

'old > Mobile' 카테고리의 다른 글

OSI 7계층 개념잡기  (0) 2010.05.10
인코딩과 디코딩  (0) 2010.05.10
Ad-Hoc 이란?  (0) 2010.05.10
MIME 개념잡기  (0) 2010.05.10
음수 2진수와 10진수간의 변환 방법  (0) 2010.05.10
Posted by jazzlife
,

음수 2진수와 10진수간의 변환 방법


2진수 11110111을 10진수로 표현하는 방법이다.

다들 아시다시피 첫번째 비트가 영이기 때문에 요놈은 음수라는걸 인지하고 변환들어가자.

 

1단계, 1은 0으로, 0은 1으로 변환한다.(1의보수)

00001000

 

2단계, 1단계에서 나온 결과에 1을 더하자. (2의보수)

00001001

 

3단계, 2단계 결과를 10진수화 하여 '-'기호를 붙이자.

-9

--------------------------------------------------

즉, 2진수 11110111 은 10진수로 -9 이다.



역으로 10진수 -9를 2진수로 표현하는 방법이다.
1단계, 9를 8비트로 만들어보자.
00001001

2단계, -9는 음수이기 때문에, 첫번째 부호비트를 1로 바꾸자.
10001001

3단계, 0은 1로, 1은 0으로 바꾸자.(1의보수)
단, 부호비트는 그대로 유지하자.
11110110

4단계, 3단계 결과값에 1을 더하자.
11110111

---------------------------------------------------

즉, 10진수 -9 는 2진수로 11110111 이다.

'old > Mobile' 카테고리의 다른 글

OSI 7계층 개념잡기  (0) 2010.05.10
인코딩과 디코딩  (0) 2010.05.10
Ad-Hoc 이란?  (0) 2010.05.10
MIME 개념잡기  (0) 2010.05.10
아스키(Ascii)와 바이너리(Binary) 개념잡기  (0) 2010.05.10
Posted by jazzlife
,