下文中的worklist交互的测试数据,请在资源中下载,需要wireshark将文件打开,并且加入过滤条件ip.addr == 192.168.2.193 and tcp.port == 104 ,并且选择dicom协议。

1 DICOM通讯概要介绍

DICOM通讯和TCP IP的设计原理别无二致。从用户数据发送到网络上的数据的过程中,要经历多层协议处理,每经一层,就会加入用来描述当前层含义的数据字段,例如,我们熟悉的TCP层,会在用户的数据流前,加入目标端口,源端口,TCP层用来模拟链接通道的Sequence Number和Acknowlegment Number等的字段。

TCP IP协议栈示意图

在DICOM通讯中,当数据通过TCP层后,数据流就进入了DICOM的会话层(ACSE),详细介绍可在标准第8章中。ACSE(Association Control Service Element),包含了7种类型的协议数据单元,分别是A-ASSOCIATE-RQ PDU(Protocol Data Units),A-ASSOCIATE-AC PDU,A-ASSOCIATE-RJ PDU,P-DATA-TF PDU,A-RELEASE-RQ PDU,A-RELEASE-RP PDU,A-ABORT PDU。这些服务数据单元构成了ACSE服务组。解析数据流时,当第一个字节的值是4的时候,就代表PDU是一个P-DATA类型,应当由DIMSE层来处理;相反,如果是其他值,就属于a-associate-rq, a-associate-rj, a-associate-ac, a-release-rq, a-release-rsp, a-abort6种类型PDU中的一种,直接在ACSE层内进行处理。具体的解析过程,第二章节中,以一个Modality Worklist(C-Find)的例子来介绍。

ACSE层数据流示意图

当会话层接收到PDU,并且PDU的Type是4的时候,ACSE层协议,擦掉PDU头信息,将信息流变为PDVs(Presentation Data Values )后,将数据流交给表示层来解析。详细介绍,可参考第七章。在表示层DIMSE层中,提供了C-Find, C-Store, C-Move, C-Get, C-Echo, N-EVENT-REPORT, N-GET,N-SET, N-CREATE, N-DELETE, N-ACTION 11种类型的服务,这些服务成为了DIMSE服务组。

DIMSE层数据流示意图

能标识当前PDV是什么类型,数据流中,有一个Flags标识,具体的含义见下图。DIMSE中消息由指令(Command)和数据集(Data Set)构成。

PDV类型含义

2 Modality Worklist通讯

Worklist 消息交互过程

2.1 A-ASSOCIATE-req

A-ASSOCIATE-rq

首先由SCU向SCP发起建立连接建立连接请求,此过程主要是要协商是否能够提供此服务,以及在实际通讯中所使用的传输语法,传输语法主要是指显式或者隐式VR以及大小尾编码方式;从上图中可以看出,在1标记处,能看到PDU的Type是0x01,是A-ASSOCIATE-req类型的PDU;SCU的AE Title是WLY(占用16个字节),SCP的AE Title是CONQUESTSRV1(占用16个字节);之后有32个字节的保留区域不存放任何信息;

A-ASSOCIATE-rq 字节流占位

具体的字节占位,请看下图中所示:

A-ASSOCIATE-rq 二进制流占位

2.1.1 应用上下文

应用上下文,大家可以不必关注,这个只是标识DICOM通讯类型的标识,所有通讯都是一致的;下图是应用上下文的二进制的占位

应用上下文二进制流占位

具体的二级制流如下

应用上下文二进制流

2.1.2 表示上下文

表示上下文二进制流占位

表示上下文二进制流

2.1.3 User Info

User Info 二进制流

通过对request的分析后,后续的PDU将只针对内部关键的信息进行说明。

2.2 A-ASSOCIATE-ac

A-ASSOCIATE-ac 二进制流

2.3 P-DATA-TF PDU (C-FIND-RQ)

SCU发送端WLY向SCP服务端CONQUESTSRV1发送C-FIND的DIMSE消息,服务端解析当前的PDU,发现其类型是0x04。那么,后续的解析工作,就将PDU的头信息去掉后,交给DIMSE层来进行处理,详细的解释见下图,其中,橘黄色2位置,表示当前的PDV是一个命令集。在命令集中,请求的Message ID是1,注意,服务方要对当前的请求进行应答,必须也要携带此Message ID,来表示应答信息是对此请求进行的响应。

Worklist请求信息组成的PDU二进制流

 2.4 P-DATA-TF PDU (C-FIND-RSP)

C-FIND-RQ的命令集二级制流

服务端接收到C-FIND-RQ后,将回复请求端信息。在回复命令信息中,Status是一个重要的概念,如果是Pending,表示对应客户端请求(回复数据流的Message ID Being Responsed To的值和请求端的Message ID的值相同)的回复数据流还未结束。具体的含义,可以在第4章中进行查询。下边给出Status的可能的值

C-FIND Response中的Status的值

 2.5  P-DATA-TF PDU 服务端返回相关查询信息

服务端回复客户端查询信息的数据集二级制信息流

 2.6 P-DATA-TF PDU ,PDV是命令集,标识对应MessageID=1的查询已结束

回复命令集二进制流

2.7  A-RELEASE request和  A-RELEASE response

A-RELEASE request

A-RELEASE response

DICOM通讯(ACSE->DIMSE->Worklist)相关推荐

  1. 【转】DICOM通讯(ACSE->DIMSE->Worklist)

    转自:DICOM通讯(ACSE->DIMSE->Worklist) - 知乎 1 DICOM通讯概要介绍 DICOM通讯和TCP IP的设计原理别无二致.从用户数据到网络上传输数据的过程中 ...

  2. 【转】dicom通讯的工作方式及dicom标准简介!!

    转自:dicom通讯的工作方式及dicom标准简介 - assassinx - 博客园 本文主要讲述dicom标准及dicom通讯的工作方式.dicom全称医学数字图像与通讯 其实嘛就两个方面 那就是 ...

  3. dicom通讯的工作方式及dicom标准简介

    转自:http://www.cnblogs.com/assassinx/p/3223460.html 本文主要讲述dicom标准及dicom通讯的工作方式.dicom全称医学数字图像与通讯 其实嘛就两 ...

  4. DVT和ADVT - 为数不多的DICOM测试工具说明AND下载

    1. 前言 做DICOM研究.开发和应用的人,最头疼的就是没有充分的工具和手段来进行测试,所以无法知道自己的程序.软件是否正确,能否正确地与其他设备进行DICOM连接?连接出错的原因在哪里?改正的话该 ...

  5. 【174个】最全DICOM资料汇总[截止10.10.20][中国数字医疗论坛]

    此次汇总了HC3i论坛资料中所有关于DICOM的下载资料.截止2010年10月20日.此次汇总贴分为:DICOM文件及相关软件.控件下载,DICOM相关研究及论文.著作--DICOM图像传输,DICO ...

  6. 【转】DICOM协议新手入门资料-DICOM协议详细解释!!

    转自:https://blog.csdn.net/zhuwei0710/article/details/82620036 数字影像传输标准协议的初衷,是为了在不同厂商生产的数字影像设备之间实现影像及其 ...

  7. DICOM 模块介绍

    一.DICOM模块,一般指的是三大模块,包含DICOM Storage.DICOM Worklist.DICOM MPPS. 1.      DICOM Storage:(必要) 指的是仪器将影像打包 ...

  8. DICOM标准及应用——第一讲 DICOM标准概述

    一 什么是DICOM? DICOM是Digital Imaging and COmmunication of Medicine的缩写,是美国放射学会(American College of Radio ...

  9. DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”

    背景: 本专栏"DICOM医学图像处理"受众较窄,起初只想作为自己学习积累和工作经验的简单整理.前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在"关于BMP(JPG ...

  10. 【转】DICOM 网关的设计与实现

    何 博 曹晓光 杜振洲 (北京航空航天大学图像中心 北京     100083) DICOM 网关是医学图像存档与通信系统(PACS) 的关键部分,用于接收.存储.转发DICOM 医学图像,实现了DI ...

最新文章

  1. ZOJ 38727(贪心)
  2. 怎么把文件放在python目录下-python – 如何将文件下载到特定目录?
  3. 提高Python程序运行效率三种模式第一种:多进程multiprocessing模块
  4. Angular中父子组件传值@Input @Output @ViewChild最全面最简单的总结
  5. java文件 linux_Linux执行Java文件
  6. 不需要mysql的php博客_不用数据库,做留言板(PHP)
  7. 为什么选择spark
  8. Hibernate 与触发器协同工作
  9. MATLAB将界面语言由中文改成英文
  10. 从0教你用Python写网络爬虫,内容详细代码清晰,适合入门学习
  11. t分布 u分布 卡方分布_F分布、t分布、正太分布与卡方分布的联系与区别
  12. linux使用jinja2模板_flask中jinjia2模板使用详解2
  13. Lange电桥的设计
  14. 计算机网卡大小怎么查看,查看电脑网卡是100M还是1000M的方法
  15. 陶哲轩实分析 4.4 节习题试解
  16. 所有专业课考c语言的学校,计算机考研哪些学校专业课考408?一共82所院校
  17. c# cad中插入另一个dwg的图块
  18. 办公系统服务器搭建,搭建云桌面办公服务器
  19. 【南大科院】高级网络服务工程训练
  20. php 登录 登出,个人博客—用户登陆登出

热门文章

  1. 切图直接导出html,Dreamweaver切图到生成网页的方法
  2. python模拟账号登录_用Python(Tornado)模拟登录小米帐号
  3. 【毕业设计】基于单片机的超声波雷达系统
  4. Windows 系统:没有远程桌面授权服务器可以提供许可证
  5. 微博开放平台api使用
  6. 5分钟学会五笔 (不用背口诀)
  7. 首次用MFC制作界面,小白采坑记录
  8. 一套鼠标键盘操作两台电脑的方法
  9. 极限学习机(ELM)从原理到程序实现(附完整代码)
  10. Intel IOMMU Introduction