DICOM通讯(ACSE->DIMSE->Worklist)
下文中的worklist交互的測試數(shù)據(jù),請在資源中下載,需要wireshark將文件打開,并且加入過濾條件ip.addr == 192.168.2.193 and tcp.port == 104 ,并且選擇dicom協(xié)議。
1 DICOM通訊概要介紹
? ? ? ?DICOM通訊和TCP?IP的設(shè)計原理別無二致。從用戶數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上的數(shù)據(jù)的過程中,要經(jīng)歷多層協(xié)議處理,每經(jīng)一層,就會加入用來描述當(dāng)前層含義的數(shù)據(jù)字段,例如,我們熟悉的TCP層,會在用戶的數(shù)據(jù)流前,加入目標(biāo)端口,源端口,TCP層用來模擬鏈接通道的Sequence?Number和Acknowlegment?Number等的字段。
TCP IP協(xié)議棧示意圖? ? ? ? 在DICOM通訊中,當(dāng)數(shù)據(jù)通過TCP層后,數(shù)據(jù)流就進(jìn)入了DICOM的會話層(ACSE),詳細(xì)介紹可在標(biāo)準(zhǔn)第8章中。ACSE(Association Control Service Element),包含了7種類型的協(xié)議數(shù)據(jù)單元,分別是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。這些服務(wù)數(shù)據(jù)單元構(gòu)成了ACSE服務(wù)組。解析數(shù)據(jù)流時,當(dāng)?shù)谝粋€字節(jié)的值是4的時候,就代表PDU是一個P-DATA類型,應(yīng)當(dāng)由DIMSE層來處理;相反,如果是其他值,就屬于a-associate-rq, a-associate-rj, a-associate-ac, a-release-rq, a-release-rsp, a-abort6種類型PDU中的一種,直接在ACSE層內(nèi)進(jìn)行處理。具體的解析過程,第二章節(jié)中,以一個Modality Worklist(C-Find)的例子來介紹。
ACSE層數(shù)據(jù)流示意圖? ? ? ? ? 當(dāng)會話層接收到PDU,并且PDU的Type是4的時候,ACSE層協(xié)議,擦掉PDU頭信息,將信息流變?yōu)镻DVs(Presentation Data Values )后,將數(shù)據(jù)流交給表示層來解析。詳細(xì)介紹,可參考第七章。在表示層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種類型的服務(wù),這些服務(wù)成為了DIMSE服務(wù)組。
DIMSE層數(shù)據(jù)流示意圖?能標(biāo)識當(dāng)前PDV是什么類型,數(shù)據(jù)流中,有一個Flags標(biāo)識,具體的含義見下圖。DIMSE中消息由指令(Command)和數(shù)據(jù)集(Data Set)構(gòu)成。
PDV類型含義?2 Modality Worklist通訊
Worklist 消息交互過程2.1?A-ASSOCIATE-req
A-ASSOCIATE-rq? ? ? ?首先由SCU向SCP發(fā)起建立連接建立連接請求,此過程主要是要協(xié)商是否能夠提供此服務(wù),以及在實際通訊中所使用的傳輸語法,傳輸語法主要是指顯式或者隱式VR以及大小尾編碼方式;從上圖中可以看出,在1標(biāo)記處,能看到PDU的Type是0x01,是A-ASSOCIATE-req類型的PDU;SCU的AE Title是WLY(占用16個字節(jié)),SCP的AE Title是CONQUESTSRV1(占用16個字節(jié));之后有32個字節(jié)的保留區(qū)域不存放任何信息;
A-ASSOCIATE-rq 字節(jié)流占位具體的字節(jié)占位,請看下圖中所示:?
A-ASSOCIATE-rq 二進(jìn)制流占位2.1.1 應(yīng)用上下文
? ? ? ? ?應(yīng)用上下文,大家可以不必關(guān)注,這個只是標(biāo)識DICOM通訊類型的標(biāo)識,所有通訊都是一致的;下圖是應(yīng)用上下文的二進(jìn)制的占位
應(yīng)用上下文二進(jìn)制流占位具體的二級制流如下
應(yīng)用上下文二進(jìn)制流2.1.2?表示上下文
表示上下文二進(jìn)制流占位 表示上下文二進(jìn)制流2.1.3?User?Info
User Info 二進(jìn)制流通過對request的分析后,后續(xù)的PDU將只針對內(nèi)部關(guān)鍵的信息進(jìn)行說明。
2.2 A-ASSOCIATE-ac
A-ASSOCIATE-ac 二進(jìn)制流2.3?P-DATA-TF PDU?(C-FIND-RQ)
? ? ? ?SCU發(fā)送端WLY向SCP服務(wù)端CONQUESTSRV1發(fā)送C-FIND的DIMSE消息,服務(wù)端解析當(dāng)前的PDU,發(fā)現(xiàn)其類型是0x04。那么,后續(xù)的解析工作,就將PDU的頭信息去掉后,交給DIMSE層來進(jìn)行處理,詳細(xì)的解釋見下圖,其中,橘黃色2位置,表示當(dāng)前的PDV是一個命令集。在命令集中,請求的Message ID是1,注意,服務(wù)方要對當(dāng)前的請求進(jìn)行應(yīng)答,必須也要攜帶此Message ID,來表示應(yīng)答信息是對此請求進(jìn)行的響應(yīng)。
Worklist請求信息組成的PDU二進(jìn)制流?2.4?P-DATA-TF?PDU (C-FIND-RSP)
? ?
C-FIND-RQ的命令集二級制流? ?
? ? ?服務(wù)端接收到C-FIND-RQ后,將回復(fù)請求端信息。在回復(fù)命令信息中,Status是一個重要的概念,如果是Pending,表示對應(yīng)客戶端請求(回復(fù)數(shù)據(jù)流的Message ID Being Responsed To的值和請求端的Message ID的值相同)的回復(fù)數(shù)據(jù)流還未結(jié)束。具體的含義,可以在第4章中進(jìn)行查詢。下邊給出Status的可能的值
C-FIND Response中的Status的值?2.5??P-DATA-TF?PDU 服務(wù)端返回相關(guān)查詢信息
? ? ? ? ?
服務(wù)端回復(fù)客戶端查詢信息的數(shù)據(jù)集二級制信息流?2.6?P-DATA-TF?PDU ,PDV是命令集,標(biāo)識對應(yīng)MessageID=1的查詢已結(jié)束
回復(fù)命令集二進(jìn)制流2.7? A-RELEASE request和? A-RELEASE response
A-RELEASE request A-RELEASE response總結(jié)
以上是生活随笔為你收集整理的DICOM通讯(ACSE->DIMSE->Worklist)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#用canny算子做边缘提取_机器视觉
- 下一篇: DCMTK的Worklist初探