KR100620994B1 - Ieee 1394 기반의 비동기 연결을 이용한 소켓인터페이스 방법 - Google Patents

Ieee 1394 기반의 비동기 연결을 이용한 소켓인터페이스 방법 Download PDF

Info

Publication number
KR100620994B1
KR100620994B1 KR1020040110652A KR20040110652A KR100620994B1 KR 100620994 B1 KR100620994 B1 KR 100620994B1 KR 1020040110652 A KR1020040110652 A KR 1020040110652A KR 20040110652 A KR20040110652 A KR 20040110652A KR 100620994 B1 KR100620994 B1 KR 100620994B1
Authority
KR
South Korea
Prior art keywords
connection
socket
client
server
party
Prior art date
Application number
KR1020040110652A
Other languages
English (en)
Other versions
KR20060072251A (ko
Inventor
정재윤
Original Assignee
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to KR1020040110652A priority Critical patent/KR100620994B1/ko
Publication of KR20060072251A publication Critical patent/KR20060072251A/ko
Application granted granted Critical
Publication of KR100620994B1 publication Critical patent/KR100620994B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법에 관한 것으로 특히, 비동기 연결을 유저처리 레벨에서 쉽게 관리할 수 있도록 하는 일반적인 네트워크 인터페이스를 정의함으로써 기존의 비동기 연결 규격에서 정의하는 연결 관리 메커니즘을 일반적으로 널리 사용되는 소켓 인터페이스(socket interface)에 대응시킴으로써 1394 직렬버스에 대한 직접적인 접근 없이 상대방 노드(node)와 데이터 전송을 가능하게 하는데 그 목적이 있다. 이러한 목적의 본 발명은 직렬 버스 상에 연결된 클라이언트(client)와 서버(server)에 대응하는 두 노드간의 비동기 연결 방법에 있어서, 서버와 클라이언트가 소켓(socket)을 생성하는 단계와, 서버 또는 클라이언트가 연결유형(수신, 송신, 송수신)에 따라 연결을 시도하여 비동기 연결을 성립시키는 단계와, 상기 비동기 연결이 성립된 서버와 클라이언트간의 데이터 전송을 연결유형에 따라 수행하는 단계와, 서버 또는 클라이언트가 연결을 해제하는 단계와, 연결이 해제되면 서버와 클라이언트가 상기 생성된 소켓을 해제하는 단계를 수행하도록 구성함을 특징으로 하는 한다.

Description

IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법{METHOD FOR SOCKET INTERFACE USING ASYNCHRONOUS CONNECTION BASED TO IEEE 1394}
도1은 본 발명의 실시 예에서 소켓 풀 자료의 예시도.
도2는 도1에서 송신포트 정보의 예시도.
도3은 도1에서 수신포트 정보의 예시도.
도4는 본 발명의 실시 예에서 open() 의사코드의 예시도.
도5는 본 발명의 실시 예에서 close() 의사코드의 예시도.
도6은 본 발명의 실시 예에서 connect() 의사코드의 예시도.
도7은 본 발명의 실시 예에서 accept() 의사코드의 예시도.
도8은 본 발명의 실시 예에서 recv() 의사코드의 예시도.
도9는 본 발명의 실시 예에서 send() 의사코드의 예시도.
도10은 본 발명의 실시 예에서 클라이언트의 disconnect() 의사코드의 예시도.
도11은 도10의 의사코드에 대응한 서버의 disconnect_handler() 의사코드의 예시도.
도12는 본 발명의 실시 예에서 서버의 disconnect() 의사코드의 예시도.
도13은 도12의 의사코드에 대응한 클라이언트의 disconnect_handler() 의사 코드의 예시도.
도14는 본 발명의 실시 예에서 소켓 인터페이스를 이용한 연결 및 연결해제 과정을 보인 신호 흐름도.
본 발명은 통신 프로토콜에 관한 것으로 특히, IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법에 관한 것이다.
IEEE 1394는 대용량의 저장매체들 끼리 고속으로 정보를 전송하기 위해 제안된 고성능 serial bus interface 표준으로 대역폭이 100∼400Mbps, node 간 전송거리는 4.5M에 이른다.
IEEE 1394는 400Mbps의 고속 전송이 가능하기 때문에 가전 AV 기기들 간의 대용량 data 전송에 적합하고, 비동기식 전송(Asynchronous transfer) 뿐만 아니라 등시 전송(Isochronous transfer)도 지원하여 실시간 전송을 보장해주기 때문에 고화질 동영상 전송에 적합하다.
또한 IEEE 1394는 직렬버스(serial bus) 구조이기 때문에 비교적 원거리 통신이 가능하고, 서로 다른 기기간의 네트워크 인터페이스(network interface)로 활용할 수 있다는 장점도 있다.
1394 Trade Association(이하 "1394TA"라 약칭함)에서 정의하고 있는 AV/C compatible Asynchronous Serial Bus Connections(비동기식 직렬 버스 연결, 이하 "비동기 연결"이라 약칭함)는 IEEE 1394 직렬버스(serial bus)의 통신규격 중 하나로서 하나의 프로듀서 노드(producer node)의 데이터를 하나 이상의 컨슈머 노드(consumer node)에 전송하는 데이터 전송 모델이다.
여기서 프로듀서(producer)는 데이터를 보내는 주체를 말하고, 컨슈머(consumer)는 프로듀서가 보낸 데이터를 받는 주체를 말한다.
프로듀서와 컨슈머는 각각 비동기 연결을 위한 포트(port)를 가지며 데이터 전송은 프로듀서가 데이터를 컨슈머의 세그먼트 버퍼(segment buffer)에 대해 라이트 트랜잭션(write transaction)을 수행함으로써 이루어진다.
또한, 각 포트마다 레지스터(APR : Asynchronous Port Register)가 존재하고 프로듀서와 컨슈머가 각각 상대방의 레지스터에 대하여 compare-and-swap lock transaction을 수행하는 방식으로 플로우 제어(flow control)가 이루어진다.
한편, 프로듀서와 컨슈머의 포트는 컨트롤러(controller)가 비동기 연결을 위한 AV/C 명령(command)을 프로듀서와 컨슈머에게 각각 전달함으로써 할당된다. 여기서 컨트롤러는 프로듀서와 컨슈머에게 AV/C 명령을 보낼 수 있는 주체를 말한다.
예로, 네트워크에 셋탑박스, DTV가 연결된 경우를 가정하면 셋탑박스는 프로듀서, DTV는 컨슈머인 동시에 컨트롤러가 되는 것이다.
통상적으로 프로듀서, 컴슈머, 컨트롤러는 논리적인 단위이고 일반적으로 컨트롤러가 단독으로 존재하지 않고 프로듀서 또는 컨슈머와 통합된 형태로 존재하는 경우가 대부분이다. 특히, 컨슈머와 컨트롤러가 통합된 모델이 가장 일반적이다.
실질적으로 컨트롤러가 컨슈머 또는 프로듀서와 통합된 모델의 경우 그 둘 사이의 커맨드(command) 교환은 보통 생략한다. 즉, 어떤 노드의 컨트롤러는 자신의 컨슈머 또는 프로듀서와는 커맨드를 주고 받을 필요가 없이 상대방 노드의 컨슈머/프로듀서와 커맨드를 교환한다.
하지만, 표준규격상에는 논리적인 단위간에 커맨드를 주고 받는 과정에 대해 언급하고 있기 때문에 컨트롤러, 컨슈머, 프로듀서가 각기 다른 개체인 것처럼 서술하고 커맨드도 그에 맞게 설명하기로 한다.
일반적으로 비동기 연결을 위한 포트 할당 및 전송 과정은 다음과 같다.
우선 컨트롤러가 컨슈머에게 ALLOCATE 명령을 보내어 그 컨슈머가 포트를 할당할 수 있도록 하고 그 컨슈머의 포트에 대한 정보를 받는다.
컨트롤러가 컨슈머의 포트에 대한 정보를 ALLOCATE_ATTACH 명령에 실어서 프로듀서에게 보내면 프로듀서는 포트를 할당한 후 자신의 포트에 대한 정보를 다시 컨트롤러에게 넘겨준다.
마지막으로 컨트롤러가 프로듀서의 포트에 대한 정보를 ATTACH 명령에 실어 컨슈머에게 전달하면 프로듀서와 컨슈머가 각각 상대방의 포트에 대한 정보를 알게 되어 비동기 연결을 맺을 준비가 끝나고 컨슈머가 프로듀서의 레지스터(output Asynchronous Port Register : iAPR)에 대해 lock transaction을 수행함으로써 데이터 전송이 시작된다.
한편 비동기 연결의 연결 해제 과정은 다음과 같다.
먼저, 컨트롤러가 컨슈머에게 DETACH 명령을 보내어 그 컨슈머가 연결을 해 제할 수 있도록 한 후 프로듀서에게 DETACH_RELEASE 명령을 보내어 그 프로듀서도 연결을 해제하고 그 연결을 위해 설정되었던 포트 할당을 해제할 수 있도록 한다.
마지막으로 컨트롤러가 컨슈머에게 RELEASE 명령을 보냄으로써 프로듀서와 연결 해제가 완료되었음을 알리면 컨슈머가 비동기 연결을 위해 설정하였던 포트 할당을 해제함으로써 비동기 연결이 종료된다.
또한, 소켓 인터페이스(Socket interface)는 네트워크 인터페이스(network interface)의 한 종류로서 일반적으로 kernel의 네트워크 프로토콜 스택(network protocol stack)에 대한 API(Abstract Programming Interface)의 형태로 제공되며 유저 처리 레벨(user process level)에서 쉽게 네트워크 연결을 설정 및 관리할 수 있도록 해준다.
소켓 인터페이스의 대표적인 프리미티브(primitive)에는 socket(소켓 생성), close(소켓 닫기), connect(연결), accept(연결허용), send(또는 write, 데이터 송신), recv(또는 read, 데이터 수신) 등이 있다.
그러나, 종래의 비동기 연결 규격에는 연결 설정, 관리 및 해제에 대한 상위 인터페이스가 존재하지 않는다.
따라서, 종래에는 유저 처리 레벨에서 비동기 연결을 통한 데이터 전송을 위해서는 비동기 연결 명령(asynchronous connection command)을 전송하여 응답(response)을 처리하고 상대방의 버퍼(buffer)에 데이터를 기록하고 포트 레지스터(port register)를 제어하는 등의 처리과정을 직접 수행해야 한다는 단점이 있다.
이에 따라, 본 발명은 종래의 단점을 개선하기 위하여 소켓 인터페이스(socket interface)를 창안한 것으로, IEEE1394 규격의 비동기 연결(asynchronous connection)된 두 기기간의 데이터 전송을 유저 처리 레벨(user process level)에서 쉽게 관리할 수 있도록 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법을 제공하는데 그 목적이 있다.
즉, 본 발명은 비동기 연결을 유저 처리 레벨에서 쉽게 관리할 수 있도록 하는 일반적인 네트워크 인터페이스를 정의함으로써 기존의 비동기 연결 규격에서 정의하는 연결 관리 메커니즘을 일반적으로 널리 사용되는 소켓 인터페이스(socket interface)에 대응시킴으로써 1394 직렬버스에 대한 직접적인 접근 없이 상대방 노드(node)와 데이터 전송을 가능하게 하는데 그 목적이 있는 것이다.
본 발명은 상기의 목적을 달성하기 위하여 IEEE 1394 기반의 직렬 버스 상에 구비되는 클라이언트(client)와 서버(server)간의 비동기 연결을 설정하는 방법에 있어서, 서버와 클라이언트가 소켓을 생성하는 단계와, 컨트롤로가 구비된 서버 또는 클라이언트가 상대방과의 연결을 시도하는 단계와, 상기 서버와 클라이언트가 연결유형에 따라 연결을 설정하는 단계와, 클라이언트와 서버간의 데이터 전송을 연결유형에 따라 수행하는 단계와, 상기 클라이언트 또는 서버에 의해 연결을 해제하는 단계와, 상기에서 연결이 해제되면 상기 할당된 소켓을 초기화하는 단계를 수행하도록 구성함을 특징으로 한다.
상기와 같은 과정을 수행함에 있어서, 본 발명에서는 아래와 같이 소켓 인터 페이스 규약을 정의한다.
본 발명에서 소켓(socket)은 하나 이상의 비동기 연결과 대응될 수 있는 연결 디스크립터(connection descriptor)로 구성하며, 소켓 인터페이스(socket interface)는 소켓의 생성 및 삭제, 소켓을 통한 연결 설정, 해제 및 관리 등의 기능을 처리할 수 있게 하는 API(Abstract Programming Interface)를 지원하도록 구성함을 특징으로 한다.
본 발명에서 소켓 인터페이스를 지원하는 노드는 소켓 풀(socket pool)이라는 자료구조를 가지며, 모든 소켓은 상기 자료구조를 기반으로 관리된다.
상기 소켓 인터페이스의 프리미티브(primitive)에는 open(), connect(), accept(), send(), recv(), disconnect(), close()가 있다.
여기서, 노드(node)란 물리적인 기기를 지칭하는 것이 아니라 논리적으로 비동기 연결을 설정할 수 있는 단위를 말한다.
또한, 본 발명에서 비동기 연결을 시도하고자 하는 노드(이하, 클라이언트(client)를 가정)는 비동기 연결 명령을 처리할 수 있는 컨트롤러(controller)를 가지며, 상기 컨트롤러가 비동기 연결을 위한 소켓 인터페이스를 제공한다.
그리고, 본 발명에서 외부로부터 시도되는 비동기 연결을 받아들일 수 있는 노드(이하, 서버(server)를 가정)는 비동기 연결 명령 처리를 위한 컨트롤러 없이 자체적으로 소켓 인터페이스를 제공할 수 있다. 이 경우, 소켓을 통한 연결 설정은 클라이언트만이 시도할 수 있고 서버는 연결을 시도할 수 없다.
또한, 본 발명에서 모든 노드는 하나의 상대방 노드와 한 쌍을 이루는 송신 및 수신 비동기 연결을 함께 설정할 수 있다. 즉, 클라이언트가 서버에 대해서 수신 비동기 연결을 설정한 후에 그에 대응되는 송신 비동기 연결을 설정하는 것이 가능하다.
그리고, 본 발명에서 하나의 소켓은 하나의 송신 또는 수신 비동기 연결과 대응되거나 하나의 상대방 노드에 대한 한 쌍의 송신 및 수신 비동기 연결과 대응될 수 있다.
여기서, 소켓이 한 쌍의 송신 및 수신 비동기 연결과 대응될 경우 모든 프리미티브를 지원한다.
만일, 소켓이 하나의 송신 비동기 연결에만 대응될 경우에는 connect(), recv()가 허용되지 않으며, 반대로 소켓이 하나의 수신 비동기 연결에만 대응될 경우에는 accept(), send()가 허용되지 않는다.
이하, 본 발명을 도면에 의거 상세히 설명하면 다음과 같다.
1. 본 발명의 실시 예에 적용하는 소켓 풀(socket pool) 구조에 대해 설명하기로 한다.
본 발명의 실시 예에서 소켓 풀(socket pool)의 논리적인 자료구조는 도1의 예시도와 같다.
소켓 디스크립터(socket descriptor)는 일종의 식별자(identifier)의 역할을 담당하는데, 하나의 소켓에 대한 정보를 대표한다.
소켓 풀 자료구조에는 소켓의 할당 여부를 나타내는 값이 포함되어, 이 값을 기반으로 새로운 소켓 생성 및 기존 소켓의 할당 해제가 이루어지며, 나머지 필드 는 소켓이 할당된 경우에만 의미 있는 값으로 저장된다.
연결 유형은 해당 소켓에 연결될 또는 이미 연결되어있는 비동기 연결이 송신 연결(TX)인지 수신 연결(RX)인지, 아니면 송신 및 수신 연결(RX/TX)인지에 대한 정보를 담고 있다.
이때, 연결 유형이 송신 연결(TX)에 해당되면 소켓 풀 자료구조에서 송신 연결에 대한 필드가 유효한 값이 되고, 수신 연결(RX)에 대한 필드의 값들은 의미가 없다. 마찬가지로 연결 유형이 수신 연결이면 수신 연결에 대한 필드만이 유효한 값이 된다. 그리고, 연결 유형이 송신 및 수신 연결(TX/RX)이면 송신 연결에 대한 필드와 수신 연결에 대한 필드가 모두 의미를 갖는다.
송신 연결에 대한 필드에는 도2의 포트정보는 물론 현재 연결의 상태에 대한 정보가 포함된다.
상기 도2의 포트정보에는 상대방 노드의 플러그(plug) 및 포트(port)에 대한 정보와 세그먼트 버퍼(segment buffer) 및 포트 레지스터(port register)에 대한 정보가 포함된다. 이는 기존 비동기 연결 규격에서 정의하고 있는 정보와 같은 것임을 의미한다.
한편, 상태 정보는 기존 비동기 연결 규격의 수신 상태머신(state machine)에서 정의하고 있는 상태와 같은 것이다.
도1의 상태 정보에 들어있는 값들은 그 예를 든 것으로, "WAIT"의 경우 상대방이 데이터를 받은 후 다음 데이터를 요청하기를 기다리는 상태를 말하고, "WRITE"는 상대방이 다음 데이터를 요청했을 때 상대방의 세그먼트 버퍼에 데이터 를 라이트하고 있는 상태를 말한다.
수신 연결에 대한 필드에는 도3의 포트정보는 물론 현재 연결의 상태에 대한 정보가 포함된다. 상기 도3의 포트정보에는 상대방 노드의 플러그(plug) 및 포트(port)에 대한 정보, 포트레지스터(port register)에 대한 정보와 함께 상대방으로부터 데이터를 받을 자신의 세그먼트 버퍼에 대한 정보가 포함된다.
비동기 연결에서 컨슈머는 프로듀서가 보내는 데이터를 받을 세그먼트 버퍼를 준비하여야 하는데 상기 도3의 포트 정보가 그에 해당한다.
또한, 상태 정보는 역시 기존 비동기 연결 규격의 송신 상태머신(state machine)에서 정의하고 있는 상태와 같은 것이다.
도1의 상태 정보에 들어있는 값은 그 예를 든 것으로 "WAIT"의 경우 상대방이 자신의 세그먼트 버퍼에 데이터를 라이트한 후 포트 레지스터를 통해서 그 결과를 알려주기를 기다리고 있는 상태를 뜻하고, "FLUSH"는 상대방의 데이터 라이트가 끝난 후 다음 데이터를 요청하기 전까지의 상태를 의미한다.
도1에서 보는 바와 같이 하나의 소켓에는 송신 연결만 연결되거나 수신 연결만 연결될 수도 있다. 그리고 특정 노드에 대해서 송신 및 수신 연결이 쌍으로 연결되는 것도 가능하다.
2. 본 발명의 실시 예에서 컨트롤러의 존재와 연결 설정/해제 명령에 대해 설명하면 다음과 같다.
컨트롤러가 소켓을 통해 비동기 연결을 먼저 시도하고자 하는 노드, 즉 클라이언트에 존재한다면 서버에는 컨트롤러가 존재하지 않아도 된다.
클라이언트가 서버로부터 데이터를 받는 수신 연결을 설정할 때에는 클라이언트가 컨트롤러를 통하여 서버에게 "ALLOCATE_ATTACH" 명령을 보내면 된다. 이때 서버는 프로듀서의 역할을 할 수 있어야 한다.
연결 설정 과정에서 기존 규격에 정의되어있는 "ALLOCATE" 명령과 "ATTACH" 명령은 클라이언트 자신이 컨트롤러를 포함하고 있으므로 생략할 수 있다.
또한, 클라이언트에서 서버로 데이터를 전송하는 송신 연결은 클라이언트가 컨트롤러를 통하여 서버에게 "ALLOCATE" 명령을 보낸 후 "ATTACH" 명령을 다시 보내는 것으로 설정할 수 있다. 이 경우에도 서버는 컨슈머로서의 역할을 할 수 있어야 하며, 클라이언트가 컨트롤러를 포함하고 있기 때문에 기존 규격에서 정의되어있는 "ALLOCATE_ATTACH" 명령은 생략 가능하다.
같은 이유에서 클라이언트가 수신 연결에 대한 연결 해제를 시도하고자 할 때에는 클라이언트는 컨트롤러를 통하여 서버에게 "DETACH_RELEASE" 명령을 보내면 되고, 기존 규격에 정의되어 있는 "DETACH" 명령과 "RELEASE" 명령은 클라이언트 자신이 컨트롤러를 포함하고 있으므로 생략할 수 있다.
반대로, 클라이언트가 송신 연결에 대한 연결을 해제하고자 할 때에는 클라이언트는 컨트롤러를 통해 서버에게 "DETACH" 명령을 보낸 후 "RELEASE" 명령을 보내는 것으로 처리할 수 있다. 이 경우 명령을 보내는 컨트롤러가 클라이언트 내에 존재하기 때문에 기존 규격에서 정의하고 있는 "DETACH_RELEASE" 명령은 처리할 필요가 없다.
3. 본 발명의 실시 예에서 구현하고자 하는 소켓 인터페이스의 프리미티브에 는 open(), close(), connect(), accept(), send(), recv(), disconnect() 가 있다.
상기 각각 프리미티브의 구현과 비동기 연결과의 연계 방법은 다음과 같다.
3-1. 먼저 open() 프리미티브의 의사코드(pseudo code)는 도4에 도시하였다.
open()은 할당 가능한 소켓의 디스크립터를 얻어오는 프리미티브이다.
인자로서 넘겨주는 "type"은 소켓을 통해 연결하고자 하는 비동기 연결의 유형을 의미하고, "plug"는 소켓을 통한 통신에 사용될 자신의 plug ID를 나타낸다.
이렇게 하여 생성된 소켓은 주어진 플러그에 대한 비동기 연결을 관리하는데 사용되고 open()을 통해 얻어낼 수 있는 소켓 디스크립터는 이후의 모든 프리미티브에서 식별자(identifier)로서 사용된다.
3-2. close() 프리미티브의 의사코드는 도5에 도시하였다.
close()는 open()에 의해서 할당된 소켓에 대한 정보를 모두 초기화하고 할당을 해제하는 프리미티브이다.
인자로서 넘겨주는 "sockfd"는 소켓 디스크립터이다.
close()시에 해당 소켓에 대해서 연결 해제되지 않은 연결이 존재하면 실패를 되돌려 준다.
3-3. connect() 프리미티브의 의사코드는 도6에 도시한다.
connect()는 소켓을 통해 상대방 노드와 비동기 연결을 시작하는 프리미티브이다.
인자로서 넘겨주는 "sockfd"는 소켓 디스크립터이고, "peer"는 연결하고자 하는 상대방 노드의 node ID를 의미한다. 도6에서 "plugrx"는 수신 연결을 시도하고자 하는 플러그의 plug ID를 뜻하고, "plugtx"는 송신 연결을 시도하고자 하는 플러그의 plug ID를 뜻한다.
이러한 특징의 connect()는 소켓의 연결 유형이 수신 연결이거나 송신 및 수신 연결인 경우에만 허용된다.
또한, connect() 프리미티브에는 비동기 연결 설정을 위한 명령을 처리하는 부분이 포함되므로 컨트롤러가 포함되지 않는 서버에서는 사용할 수 없다.
connect() 프리미티브로 수행하는 일은 첫째로 상대방 노드의 주어진 플러그에 대해 수신 연결을 설정하고, 둘째로 소켓의 연결 유형이 송신 및 수신 연결인 경우 상대방 노드의 주어진 플러그에 대해 송신 연결을 추가로 설정한다.
첫 번째 경우에는 상대방 노드에게 "ALLOCATE_ATTACH" 명령을 보내어 상대방의 포트정보를 알아내고 수신 상태머신을 초기화한다.
두 번째 경우에는 상대방 노드에게 "ALLOCATE" 명령을 먼저 보내어 상대방의 포트정보를 알아내고 "ATTACH" 명령을 보낸 후 송신 상태머신을 초기화한다.
따라서, connect()가 성공적으로 수행되면 상대방 노드와의 비동기 연결이 성립된 상태가 되고 이후 데이터를 전송할 수 있다.
3-4. accept() 프리미티브의 의사코드는 도7에 도시하였다.
accept()는 상대방 노드의 비동기 연결 시도를 허용하기 위한 프리미티브이다.
인자로서 넘겨주는 "sockfd"는 소켓 디스크립터이다.
accept()는 소켓의 연결 유형이 송신 연결이거나 송신 및 수신 연결인 경우에만 허용된다.
이때, accept() 프리미티브에서는 임의의 다른 노드가 시도한 비동기 연결 명령을 받아서 이에 대한 응답(response)을 보낸 뒤 상대방의 포트정보를 저장하는 일을 한다. 상기 비동기 연결 명령은 소켓에 지정된 plug ID(THISPLUG)에 대한 것만 처리된다.
또한, 저장된 상대방 포트정보는 이후의 데이터 전송 과정에서 필요한 세그먼트 버퍼 기록 및 포트레지스터 록 트랜잭션(port register lock transaction)에 사용된다.
만일, 소켓의 연결 유형이 송신 연결인 경우, "ALLOCATE_ATTACH" 명령을 기다리고 이것을 받으면 송신 연결을 위한 자신의 포트정보를 응답메시지(response)에 담아서 보낸 다음 상대방의 포트정보를 소켓 풀 자료구조에 기록한다.
그리고, 소켓의 연결 유형이 송신 및 수신 연결(TX/RX)인 경우에는 송신 연결인 경우와 마찬가지로 "ALLOCATE_ATTACH" 명령을 처리한 후에 다시 "ALLOCATE" 명령을 받아 수신 연결을 위한 자신의 포트정보를 응답메시지(response)에 담아서 보낸 후 "ATTACH" 명령을 받아 상대방의 포트정보를 소켓 풀 자료구조에 기록한다.
따라서, accept()가 성공적으로 수행되면 상대방 노드와의 비동기 연결이 성립된 상태가 되고 이후에 데이터를 전송할 수 있다.
3-5. recv() 프리미티브의 의사코드는 도8에 도시한다.
recv()는 하나의 데이터프레임을 상대방으로부터 수신하기 위한 프리미티브 이다.
인자로서 넘겨주는 "sockfd"는 소켓 디스크립터이고, "buf"는 수신할 데이터 프레임을 저장하기 위한 포인터(pointer), "length"는 수신할 전체 데이터의 크기를 말한다.
recv()는 소켓의 연결 유형이 수신 연결이거나 송신 및 수신 연결인 경우에만 허용된다.
이러한 recv() 프리미티브에서는 이전 단계에서 얻어낸 상대방의 출력포트에 대한 정보와 자신의 입력포트에 대한 정보를 기반으로 상대방으로부터 하나의 데이터 프레임을 수신하는 일을 하고, 하나의 데이터 프레임은 세그먼트 버퍼(segment buffer)의 크기에 맞게 하나 이상의 세그먼트로 나뉘어 수신된다.
하나의 세그먼트를 수신하는 과정은 기존 비동기 연결 규격에서 정의하는 것과 동일하며 이를 설명하면 다음과 같다.
먼저, 상대방으로부터 하나의 세그먼트에 대한 전송을 요청하기 위해 상대방의 출력포트 레지스터(output port register)에 대해 갱신(compare-and-swap lock)을 수행한다. 포트레지스터를 갱신할 때 상대방에게 자신의 세그먼트 버퍼의 크기를 알려준다.
상대방은 출력포트 레지스터의 갱신이 이루어졌음을 알면 바로 세그먼트 전송을 시작한다.
하나의 세그먼트 전송 완료는 상대방이 자신의 입력포트 레지스터(input port register)를 갱신(compare-and-swap lock)하는 것에 의해 알 수 있다. 상대방 이 자신의 입력포트 레지스터를 갱신하면 세그먼트 버퍼에 들어있는 내용을 "buf"에 추가한다.
하나의 세그먼트 수신은 하나의 데이터 프레임이 완전히 수신될 때까지 반복된다.
3-6. send() 프리미티브의 의사 코드는 도9에 도시한 바와 같다.
send()는 하나의 데이터 프레임을 상대방의 세그먼트 버퍼에 라이트하기 위한 프리미티브(primitive)이다.
인자로서 넘겨주는 "sockfd"는 소켓 디스크립터이고 "buf"는 전송할 데이터에 대한 포인터, "length"는 전송할 전체 데이터의 크기를 말한다.
send()는 소켓의 연결 유형이 송신 연결이거나 송신 및 수신 연결인 경우에만 허용된다.
이 send() 프리미티브에서는 이전 단계에서 얻어낸 상대방의 입력포트에 대한 정보와 자신의 출력포트에 대한 정보를 기반으로 주어진 데이터를 전송하는 일을 한다.
이때 하나의 데이터 프레임은 상대방의 세그먼트 버퍼 크기에 맞게 하나 이상의 세그먼트로 나눠서 전송한다. 상기 세그먼트 버퍼의 주소는 역시 이전 단계에서 알아낸 상대방 입력포트 정보를 토대로 알아낼 수 있고, 세그먼트 버퍼의 크기는 상대방이 수행하는 자신의 출력포트 레지스터 갱신(compare-and-swap lock)을 통해 알 수 있다.
하나의 세그먼트를 전송하는 과정은 기존 비동기 연결 규격에서 정의하는 것 과 동일하며, 이를 설명하면 다음과 같다.
먼저 상대방이 자신의 입력포트 레지스터를 갱신할 때까지 기다린다.
상대방이 입력포트 레지스터를 갱신하면 이에 기록된 세그먼트 버퍼의 크기에 맞게 데이터를 하나 이상의 세그먼트로 나누어 상대방 세그먼트 버퍼에 기록한다. 하나의 세그먼트에 대한 기록이 완료되면 상대방의 출력포트 레지스터를 갱신(compare-and-swap lock)한다.
하나의 세그먼트에 대한 전송이 완료되면 다음 세그먼트 전송을 상기와 동일한 방법으로 수행하고 이 과정을 하나의 데이터 프레임이 모두 전송될 때까지 반복한다.
3-7. disconnect() 프리미티브와 그에 관련된 핸들러(handler)의 의사코드는 도10 내지 도13에 도시한다.
본 발명의 실시 예에서 비동기 연결 명령을 보낼 수 있는 컨트롤러는 클라이언트에만 존재하므로 클라이언트와 서버의 disconnect() 프리미티브는 다른 방식으로 구현된다.
즉, 클라이언트에서의 disconnect()는 컨트롤러를 이용하여 비동기 연결 명령을 주고받는 방식으로 구현되고, 서버에서의 disconnect()는 비동기 연결 규격에 정의되어있는 상대방의 포트 레지스터에 모드를 "FREE"로 설정하는 방식으로 구현된다.
또한, 상대방이 연결 해제를 먼저 시도했을 때 이를 처리하기 위한 disconnect_handler() 역시 disconnect()에 대응하는 방식으로 구현된다.
먼저 클라이언트가 연결 해제를 시도하는 경우를 도10과 도11을 참조하여 설명하기로 한다.
도10은 클라이언트의 disconnect() 의사코드를 도시한 것이다.
클라이언트는 컨트롤러를 가지고 있으므로 상대방에게 비동기 연결 명령을 보내어 연결을 해제시킬 수 있다.
즉, 수신 연결에 대한 연결 해제는 "DETACH_RELEASE" 명령을 보내는 것으로, 송신 연결에 대한 연결 해제는 "DETACH", "RELEASE" 명령을 순서대로 보내는 것으로 처리할 수 있다.
도11은 서버에서 클라이언트가 먼저 연결 해제를 시도했을 때 이를 처리하는 disconnect_handler() 의사코드를 도시한 것이다.
서버는 클라이언트가 "DETACH_RELEASE" 또는 "DETACH", "RELEASE" 명령을 보내면 이에 응답하고 연결을 해제하며 자신의 소켓 정보를 초기화한다.
한편 서버가 연결 해제를 먼저 시도하는 경우의 disconnect() 의사코드와 disconnect_handler() 의사코드는 도12와 도13에 도시한다.
서버는 컨트롤러를 가지고 있지 않으므로 비동기 연결 명령을 보낼 수 없다. 그 대신 비동기 연결 규격에서 정의하고 있는 방식, 즉 상대방의 포트 레지스터의 모드를 "FREE"로 설정하는 것으로 연결을 해제할 수 있다.
클라이언트에서는 자신의 포트 레지스터의 모드가 "FREE"로 설정된 경우 서버가 연결 해제를 요청하는 것으로 판단하여 자신의 소켓 정보를 초기화한다.
4. 본 발명의 실시 예에서 소켓 인터페이스를 이용한 연결 성립, 해제 및 데 이터 전송 과정을 설명하기로 한다.
도14는 상기에서 정의한 소켓 인터페이스를 이용하여 두 노드가 연결을 설정하고 데이터를 주고받은 후 연결을 해제하는 과정을 도시한 신호 흐름도이다. 도14는 클라이언트에 컨트롤러가 구비된 경우를 도시한 것이다.
먼저, 도14(a)에 의해 연결 과정을 설명하면, 소켓을 통해 비동기 연결을 맺기 위해서 클라이언트와 서버가 open()을 이용해 소켓을 하나 생성한다.
그 다음 서버는 accept()를 이용해 클라이언트가 비동기 연결 시도를 하기를 기다린다.
클라이언트는 connect()를 통해서 서버와 비동기 연결을 맺을 수 있으며 이때 소켓의 연결 유형에 따라서 송신 또는 수신 연결을 맺을 수 있다.
하나의 연결을 맺기 위한 비동기 연결 명령은 컨트롤러를 가지고 있는 클라이언트가 보내고 서버는 이에 대한 응답(response)을 보낸다.
connect()와 accept()를 통해 클라이언트와 서버간의 비동기 연결이 성립되면 recv()와 send() 를 이용해 데이터를 주고받는 것이 가능해진다.
또한, 상기와 같은 과정으로 성립된 연결을 종료하기 위해서는 이를 먼저 시도하고자 하는 쪽에서 disconnect()를 부르고 상대방은 disconnect_handler()를 통해 이에 대응한다.
도14(b)에 도시한 바와 같이, 클라이언트가 disconnect()를 부르는 경우에는 클라이언트의 컨트롤러가 연결 해제를 위한 비동기 연결 명령(DEACH_RELEASE 또는 DETACH, RELEASE)을 보내고 서버는 이에 대한 응답을 처리함으로써 상호간의 비동 기 연결이 해제가 된다.
만일, 서버가 disconnect()를 부르고 클라이언트가 disconnect_handler()로 대응하는 경우에는 비동기 연결 명령 대신에 상호간의 포트 레지스터의 모드를 "FREE"로 설정함으로써 연결을 해제할 수 있다.
이에 따라, 연결이 해제되어 소켓을 더 이상 사용할 필요가 없으면 close()를 통해서 할당된 소켓을 해제한다.
한편, 상기와 같은 연결 성립, 해제 및 데이터 전송 과정에서 소켓 인터페이스를 사용하는 유저 프로세tm(user process)에서는 비동기 연결 명령의 전송 및 응답(response) 처리, 그리고 세그먼트 버퍼 라이트(DMA관련 처리가 포함될 수 있음), 포트레지시터 갱신 등과 같이 비동기 연결 규격에서 정의하고 있는 일련의 과정을 직접 처리할 필요가 없다.
상기에서 상세히 설명한 바와 같이 본 발명은 1394 버스 상의 비동기 연결의 연결 설정, 해제 및 데이터 전송을 소켓 인터페이스에 대응시킴으로써 유저 프로세스 레벨에서 명령 및 응답의 처리 및 세그먼트 버퍼 관리(DMA 포함), 포트레지스터 갱신과 같은 플로우 제어(flow control)를 직접 처리하지 않고도 쉽게 비동기 연결을 관리할 수 있다.
따라서, 본 발명에 적용되는 소켓 인터페이스는 네트워크 프로그래밍에서 일반적으로 널리 사용되는 인터페이스이므로 소스 코드(source code)의 재사용이 가능하게 하는 효과를 달성할 수 있다.
또한, 본 발명은 연결에 대한 정보를 가지고 있는 소켓이 소켓 풀 자료구조의 형태로 관리되므로 여러 개의 비동기 연결을 한꺼번에 관리할 수 있도록 하는 효과를 발휘하게 된다.

Claims (13)

  1. 직렬 버스 상에 연결된 클라이언트(client)와 서버(server)에 대응하는 두 노드간의 비동기 연결 방법에 있어서,
    서버와 클라이언트가 소켓(socket)을 생성하는 단계와,
    서버 또는 클라이언트가 연결유형(수신, 송신, 송수신)에 따라 연결을 시도하여 비동기 연결을 성립시키는 단계와,
    상기 비동기 연결이 성립된 서버와 클라이언트간의 데이터 전송을 연결유형에 따라 수행하는 단계와,
    서버 또는 클라이언트가 연결을 해제하는 단계와,
    연결이 해제되면 서버와 클라이언트가 상기 생성된 소켓을 해제하는 단계를 수행하도록 구성함을 특징으로 하는
    IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  2. 제1항에 있어서, 소켓 생성 단계는
    식별자인 소켓 디스크립터(socket descriptor), 송수신 연결유형, 상대방 노드식별자, 송수신 포트정보, 송수신 상태정보를 포함하는 소켓 풀(socket pool) 자료에 할당 가능한 소켓의 디스크립터, 연결하고자 하는 연결 유형, 소켓 통신에 사용할 자신의 플러그 식별자를 생성하는 과정을 수행하는 것을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  3. 제2항에 있어서, 송신 포트정보는
    상대방 플러그 식별자, 상대방 플러그 오프셋 주소, 상대방 입력포트 식별자, 상디방 입력포트 능력(capability), 상대방 세그먼트 버퍼 크기, 상대방 입력포트 레지스터 값, 자신의 플러그 식별자를 포함하는 것을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  4. 제2항에 있어서, 수신 포트정보는
    상대방 플러그 식별자, 상대방 플러그 오프셋 주소, 상대방 출력포트 식별자, 상디방 출력포트 능력(capability), 상대방 세그먼트 버퍼 크기, 상대방 출력포트 레지스터 값, 자신의 플러그 식별자를 포함하는 것을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  5. 제1항에 있어서, 비동기 연결 단계는
    클라이언트 또는 서버에 컨트롤러가 구비되어 socket primitive인 connect()와 accept()를 통해 상대방으로부터 데이터를 수신하기 위한 연결을 설정하는 경우,
    ALLOCATE_ATTACH 명령을 상대방에게 전송하여 상대방 포트정보를 얻는 과정과,
    상대방 포트정보를 얻으면 자신의 수신 상태머신을 초기화하는 과정을 포함 하여 구성함을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  6. 제1항에 있어서, 비동기 연결 단계는
    클라이언트 또는 서버에 컨트롤러가 구비되어 socket primitive인 connect()와 accept()를 통해 상대방으로 데이터를 송신하기 위한 연결을 설정하는 경우,
    ALLOCATE 명령을 상대방에게 전송하여 상대방 포트 정보를 얻는 과정과,
    ATTACH 명령으로 자신의 포트정보를 상대방에게 전송하고 자신의 송신 상태머신을 초기화하는 과정으로 이루어짐을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  7. 제1항에 있어서, 비동기 연결 단계는
    클라이언트 또는 서버에 컨트롤러가 구비되어 socket primitive인 connect()와 accept()를 통해 상대방과 데이터 송,수신을 위한 양방향 연결을 설정하는 경우,
    상대방에게 ALLOCATE 명령을 전송하여 상대방 포트정보를 얻고 수신 상태머신을 초기화하는 과정과,
    상대방에게 자신의 포트정보를 ATTACH 명령에 실어 전송하고 송신 상태머신을 초기화하는 과정으로 이루어짐을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  8. 제1항에 있어서, 데이터 전송 단계는
    컨트롤러가 구비된 클라이언트 또는 서버가 socket primitive인 recv()와 send()를 통해 상대방으로부터 데이터를 수신하는 경우,
    상대방의 출력포트 레지스터의 갱신을 대기하는 과정과,
    상기에서 출력포트 레지스터의 갱신이 확인되면 자신의 세그먼트 버퍼 크기를 알리는 과정과,
    데이터 프레임을 세그먼트 단위로 수신하는 과정과,
    상대방의 입력포트 레지스터의 갱신이 확인되면 하나의 세그먼트 전송이 완료되었음을 인식하는 과정을 데이터 프레임이 모두 수신될 때까지 반복 수행하는 것을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  9. 제1항에 있어서, 데이터 전송 단계는
    컨트롤러가 구비된 클라이언트 또는 서버가 socket primitive인 recv()와 send()를 통해 상대방으로부터 데이터를 송신하는 경우,
    상대방의 입력포트 레지스터의 갱신을 대기하는 과정과,
    상기에서 입력포트 레지스터의 갱신이 확인되면 상대방의 세그먼트 버퍼 크기를 획득하는 과정과,
    데이터 프레임을 세그먼트 단위로 송신하는 과정과,
    하나의 세그먼트 전송이 완료되면 상대방의 출력포트 레지스터를 갱신시키는 과정을 데이터 프레임이 모두 수신될 때까지 반복 수행하는 것을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  10. 제1항에 있어서, 연결 해제 단계는
    클라이언트 또는 서버에 컨트롤러가 구비되어 상대방으로부터 데이터 수신을 위한 연결을 설정한 경우,
    socket primitive인 disconnect()를 통해 연결 설정한 주체가 상대방에게 DETACH_RELEASE 명령을 전송하여 연결을 해제하는 과정과,
    상기 DETACH_RELEASE 명령이 수신된 상대방이 disconnect_handler를 통해 연결해제 요청에 응답하는 과정으로 이루어짐을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  11. 제1항에 있어서, 연결 해제 단계는
    클라이언트 또는 서버에 컨트롤러가 구비되어 상대방으로 데이터 송신을 위한 연결이 설정된 경우,
    socket primitive인 disconnect()를 통해 연결 설정한 주체가 상대방에게 DETACH 명령을 전송하고 그 명령 전송 후 RELEASE 명령을 전송하는 과정과,
    상기 DETACH 명령이 수신된 상대방이 disconnect_handler를 통해 연결해제 요청에 응답하는 과정으로 이루어짐을 특징으로 하는 IEEE 1394 기반의 비동기 연 결을 이용한 소켓 인터페이스 방법.
  12. 제1항에 있어서, 연결 해제 단계는
    클라이언트 또는 서버에 컨트롤러가 구비되어 상대방과의 데이터 수신 또는/및 송신을 위한 연결을 설정한 경우,
    컨트롤러에 의해 연결 설정된 상대방이 socket primitive인 disconnect()를 통해 DETACH 명령을 전송하는 과정과,
    상기 DETACH 명령이 수신되면 상기 컨트롤러가 disconnect_handler를 통해 연결해제 요청에 응답하는 과정과,
    상기 클라이언트와 서버 상호간에 포트레지스터를 "FREE" 모드로 설정하는 과정으로 이루어짐을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
  13. 제1항에 있어서, 연결 해제 단계는
    할당된 소켓을 초기화할 때 해당 소켓에 대해 연결해제되지 않은 연결이 존재하는 경우 소켓 초기화 실패를 알리는 과정을 포함하는 것을 특징으로 하는 IEEE 1394 기반의 비동기 연결을 이용한 소켓 인터페이스 방법.
KR1020040110652A 2004-12-22 2004-12-22 Ieee 1394 기반의 비동기 연결을 이용한 소켓인터페이스 방법 KR100620994B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040110652A KR100620994B1 (ko) 2004-12-22 2004-12-22 Ieee 1394 기반의 비동기 연결을 이용한 소켓인터페이스 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040110652A KR100620994B1 (ko) 2004-12-22 2004-12-22 Ieee 1394 기반의 비동기 연결을 이용한 소켓인터페이스 방법

Publications (2)

Publication Number Publication Date
KR20060072251A KR20060072251A (ko) 2006-06-28
KR100620994B1 true KR100620994B1 (ko) 2006-09-19

Family

ID=37165462

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040110652A KR100620994B1 (ko) 2004-12-22 2004-12-22 Ieee 1394 기반의 비동기 연결을 이용한 소켓인터페이스 방법

Country Status (1)

Country Link
KR (1) KR100620994B1 (ko)

Also Published As

Publication number Publication date
KR20060072251A (ko) 2006-06-28

Similar Documents

Publication Publication Date Title
TW384611B (en) Data communication apparatus and method
US7590133B2 (en) Data communication system, data communication method, and data communication apparatus
US5991520A (en) Application programming interface for managing and automating data transfer operations between applications over a bus structure
US7200641B1 (en) Method and system for encoding SCSI requests for transmission using TCP/IP
US7117280B2 (en) Network based intra-system communications architecture
JPH11127214A (ja) 情報処理装置、制御方法、並びに伝送媒体
CN108063929A (zh) 一种实现双屏同显、双屏异显的智能投影系统
JP5775149B2 (ja) ステーション、ターゲット装置、イニシエータ装置、通信システム及び通信方法
CN115357535A (zh) 一种虚拟串口设计方法及装置
KR100740196B1 (ko) 가정용 네트워크에서 비동기성 데이터를 송신하기 위한 방법
TW475116B (en) A multi-protocol media storage device implementing protocols optimized for storing and retrieving both asynchronous and isochronous data
EP1033657A2 (en) Packet communication apparatus provided with manager means for managing packet labels
JPH10229410A (ja) データ処理装置、電子機器および通信システム
KR100329162B1 (ko) 데이터 전송 방법 및 데이터 전송 시스템
US6041286A (en) Apparatus for and method of accurately obtaining the cycle time of completion of transmission of video frames within an isochronous stream of data transmitted over an IEEE 1394 serial bus network
KR100620994B1 (ko) Ieee 1394 기반의 비동기 연결을 이용한 소켓인터페이스 방법
KR100311707B1 (ko) 데이타 통신 시스템, 데이타 통신 방법, 데이타 통신 장치 및 디지탈 인터페이스
EP1033658B1 (en) Communication apparatus with means for allocating alternate designation information to each function unit, and communication system with two such communication apparatus
US8539109B1 (en) Third party direct memory access protocol extension to separate data path from control path
JP2000269961A (ja) Usbホストとネットワークとの間のデータ転送素子と、この転送を制御するフロー制御方法
JPH11145995A (ja) バスのデータ伝送方式
KR100677222B1 (ko) Ieee 1394 기반의 양방향 비동기 연결 방법
WO2000062179A1 (en) Asynchronous data transmission with scattering page tables
EP1239644A1 (en) Method for managing isochronous file transfers in a HAVI environment
KR100620993B1 (ko) Ieee 1394 기반의 양방향 비동기 연결 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20100630

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee