DICOM通讯(ACSE->DIMSE->Worklist)
下文中的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)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: c#用canny算子做边缘提取_机器视觉
- 下一篇: mysql 日期滞后_如何滞后MySQL
