non-TCP/IP 관련 질문입니다.

kwonsu의 이미지

안녕하십니까.

궁금한 사항이 있어 여러 고수님들에게 문의드립니다.

non-TCP/IP라는 개념이 정확히 어떤 개념인지 궁금합니다.

Transport layer 계층을 제외한 다른 것인지, 시리얼 통신을 이용한 특정 프로토콜 통신 방식인지 궁금합니다.

참고할 만한 사이트 및 문서, 설명 등등 아무거나 좋습니다.

여러 고수님들의 고견을 기다립니다.

감사합니다~~

a287848의 이미지

TCP/IP가 결국에는 수많은 Network Protocol 중에 하나의 Suite 이므로

Non-TCP/IP 라면 많은 프로토콜이 있습니다.

Zigbee/Bluetooth 에도 Spec 을 보시면 TCP/IP 에 해당 하는 Transport/Network Layer 프로토콜이 존재 합니다.

CAN 을 보셔도 되고요. 너무 많아서 나열이 안되나.

일반적으로 dedicated 된 Protocol 일 수록 상위 Layer Protocol 이 필요없이 이루어지기도 합니다.

TCP/IP 를 쓰더라도 우리가 한 Network Segment 에서 MAC ID 만으로도 통신이 가능하듯이요.

Dig it.

kwonsu의 이미지

먼저 답글 감사드립니다.

님에 작성해주신 댓글을 보고 궁금함이 더욱 생겼습니다. ^^

1. non-TCP/IP Protocol의 정확한 정의는 무엇인가요?
TCP나 UDP 처럼 정의된 통신방법 및 Header 정의가 따로 있는지요

2. non-TCP/IP Protocol은 특화된 하드웨어에서만 사용가능하나요?

3. 일반 네트워크 프로그래밍 또는 netfilter로 구현 가능하나요?
가능하다면 어떤 방법이 있는지, 참고 할 만한 곳은 어디인지 알려주시면 감사하겠습니다~

4. Zigbee/Bluetooth Spec 문서를 계속 찾고 있는 중입니다만 TCP/IP 에 해당 하는 Transport/Network Layer 부분은
어떤 부분인지 모르겠습니다.

개념을 전혀 이해하지 못하니 뭐부터 시작해야하는지도 모르겠습니다.

다시한번 고수님의 조언 부탁드립니다.

감사합니다.

지식의 여인은 옷을 쉽게 벗지 않는다.
잡초인생. 잡초처럼 끈길기게....

a287848의 이미지

1. non-TCP/IP Protocol의 정확한 정의는 무엇인가요?
TCP나 UDP 처럼 정의된 통신방법 및 Header 정의가 따로 있는지요
==> 당연히 따로 있습니다.

2. non-TCP/IP Protocol은 특화된 하드웨어에서만 사용가능하나요?
==> 아니요 특별히 그렇지는 않습니다.

우리가 TCP/IP 를 SLIP 를 사용하여 Physical Layer 를 다른 방식으로 처리하거나

혹은 Coretex M Series 같은 저성능 Processor 에서도 TCP/IP 스택을 구현하듯이 일반적으로 사양이 어느 정도 된다면 문제는 없습니다.

그러나 SATA 처럼 매우 빠른 Protocol의 경우 특별한 H/W 가 필요 할 수도 있습니다.

3. 일반 네트워크 프로그래밍 또는 netfilter로 구현 가능하나요?

가능하다면 어떤 방법이 있는지, 참고 할 만한 곳은 어디인지 알려주시면 감사하겠습니다~

==> netfilter 는 protocol 을 만드는 언어나 도구가 아닙니다. Linux 에 있는 수많은 툴중에 하나로 TCP/IP 및 ARP Manipulation 을 할수 있게 해줍니다.

PC에 설치 할 수 있는 CAN 이나 Zigbee 모뎀을 찾아보시는 것도 좋을 듯 합니다. 저의 경우에는 별도로 H/W 를 개발하는 부서에서 전달받아서 해 봤습니다.

4. Zigbee/Bluetooth Spec 문서를 계속 찾고 있는 중입니다만 TCP/IP 에 해당 하는 Transport/Network Layer 부분은
어떤 부분인지 모르겠습니다.

==> 접속이 안되네요 다만 경험상 어느 프로토콜이나 처음에는 OSI 7 Layer 에 해당하는 Hierarchy 그림이 있기 나름입니다. 그 부분을 보시면 될듯합니다.

Dig it.

kwonsu의 이미지

Zigbee/Bluetooth Spec 문서를 찾아보고 있는데 헤더 정의라든가 통신 방법 관련 문서는

못찾고 있습니다. ^^ 제가 검색 능력이 현저히 떨어지지는 않는데..

열심히 더 찾아봐야겠습니다.

non-TCP/IP를 사용하려면 data-link layer에서 사용한다는 문구를 어디서 봤는데.. 어렵네요 ^^

혹시라도 보셨거나 보신 문서, 링크 알려주실 수 있으시면 감사하겠습니다.

다시 한번 친절한 답변 감사합니다~~

지식의 여인은 옷을 쉽게 벗지 않는다.
잡초인생. 잡초처럼 끈길기게....

Necromancer의 이미지

data link layer에서 사용해야 한다는 얘기는 data link layer 패킷의 payload에 들어갈 데이터 형식을 자기가 직접 정의하고, data link layer로 직접 데이터를 쏘는 API를 이용해서 송수신을 해야 한다는겁니다.

형식 정의할때는 님이 요구하는 사항을 고려하셔야겠죠.
- 중간에 거쳐가는거 없이 무조건 1:1로만 된다면 Network Layer 필요 없습니다 (Network Layer는 네트웍에 물린 여러 단말 중에서 패킷 송수신 대상을 특정하고 이들만 데이터를 주고받을수 있도록 중계)
- 모든 데이터를 1패킷에 담을 수 있다면 Transport Layer도 필요 없습니다. (Transport Layer는 데이터가 순서에 맞게 왔다는 것을 보증)

data link layer에서는 패킷을 1,2,3 순서대로 보낼수 있는데 받을때는 3,1,2 순서대로 받을수 있고, 1,3만 올수도 있습니다. data link layer는 송신측에서 쏜 패킷이 수신측에 온전하게 도착했다는 것까지만 보증합니다. 만일 수신측의 data link layer에서 데이터를 수신했는데 복구 불가능ᅟ한 에러가 있다? 그럼 그거 걍 씹습니다.

data link layer에서 한번에 전송 가능한 payload(사용자가 1패킷에 보내는 데이터)의 최대크기도 한계가 있으니 이것도 감안하셔야죠.

Written By the Black Knight of Destruction

Necromancer의 이미지

프로토콜은 한두가지가 아니죠.
90년대말 떠오른 스타크래프트에서 사용한 IPX도 non TCP/IP중 하나입니다. 이걸로 같은 LAN상에서 8명까지 한 방을 만들어서 즐길 수 있었죠.

우리가 흔히 쓰는 LAN(이더넷)의 S/W적인 최하단 프로토콜은 data link layer에 해당되는 MAC이고(이 이하는 물리레이어 프로토콜인데 송수신시 랜선에 흐르는 전압이라든가 시그널 파형등을 정의함), 이 위에 IP, 그 위에 TCP가 올라가죠. 이걸 네트워크 계층 구조라고 하는데 이걸 알기 쉽게 설명드리자면

송신시
1. 프로그램이 송신할 데이터를 넘기면 TCP 전송규격에 맞게 데이터를 자르고 앞뒤로 TCP 규격 헤더와 꼬리를 붙인 다음 IP 처리부에 넘김.
2. IP처리부에서는 TCP 헤더가 포함된 패킷 데이터를 IP규격에 맞게 자르고 앞뒤로 IP규격 헤더와 꼬리를 붙인다음 MAC 처리부에 넘김
3. MAC처리부에서는 IP처리부에서 넘어온 데이터를 MAC 규격에 맞게 자르고 MAC규격 헤더와 꼬리를 붙인다음 최종 송신.

수신시는.

1.MAC처리부는 랜에서 왔다갔다하는 MAC 패킷을 받아서 헤더부를 헤독하고 데이터를 추출해서 IP처리부에 넘김.
2.IP처리부는 1번에서 나온 데이터ᅟ에서 IP헤더를 추출해서 IP주소 등 각종 정보를 얻고, 데이터를 추출해서 TCP처리부에 넘김
3.2번에서 넘어온 데이터에서 TCP헤더부를 추출해서 각종 정보를 얻고(수신포트번호 등) 데이터를 추출해서 포트에 대기하는 프로그램에게 데이터 전송.

이건 이더넷-TCP/IP의 예제이고 이게 여러 단계가 될 수 있습니다. 각자는 자기 레이어에서 자기 일만 하게끔 되어 있습니다. 상위 레이어에서 붙은 헤더 정보들도 자기 레이어에 오면 그냥 전송해야 할 데이터 취급하고요. OSI 7 layer 다쓴다면 S/W에서는 6단계의 처리과정을 거치는거죠 ==> 빼먹은건 물리층인데 이건 랜카드에서 데이터를 전송선로 규격에 맞게 전기나 광으로 변환해서 쏘고 받는 방식을 정의한 것이라서 S/W에서 건드릴 여지가 없습니다.

이더넷 MAC 프로토콜 스펙 보면 패킷의 데이터부에 들어가는 프로토콜 종류를 정의하는 16비트 필드가 있는데 여기에는 IP뿐만 아니라 애플토크 등등 수많은 프로토콜의 ID가 정의된 표가 있습니다. IPv6도 따로 정의되어 있습니다. 예를 들어 MAC 프로토콜의 패킷 ID에 애플토크 번호가 적혀 있다. 그럼 그 데이터부(payload)를 까면 애플토크 패킷이 나옵니다.

Written By the Black Knight of Destruction

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.