의료 영상이 병원 내에서 디지털 방식으로 관리되는 핵심은 서버와 클라이언트 간의 표준화된 통신 프로토콜, 즉 DICOM 네트워크 구조에 있다.
CT, MRI 장비 또는 AI 분석 시스템은 클라이언트 역할을 수행하고, 이들이 전송하거나 요청한 정보를 수신·보관하는 PACS 서버가 서버 역할을 한다. 이러한 상호작용은 단순한 데이터 송수신이 아닌, 명확한 역할 분리와 메시지 기반 통신(DIMSE)을 기반으로 수행되며, AE Title, Association, SOP Class, Transfer Syntax 등의 개념이 이를 가능하게 한다.
이번 글에서는 클라이언트와 서버가 DICOM 네트워크에서 어떻게 상호작용하며, 실제 전송 요청(C-STORE), 검색 요청(C-FIND), 이미지 요청(C-MOVE) 등의 기능이 어떻게 실행되는지를 구조적으로 설명한다.
1. 기본 개념: AE (Application Entity)
모든 DICOM 통신은 AE(Application Entity)라는 논리적 단위 간 통신으로 이루어진다.
AE는 네트워크 내에서 DICOM 기능을 수행할 수 있는 독립적인 단위이며, 서버와 클라이언트 모두 AE로 구성된다.
AE의 구성 요소
구성 항목 | 설명 |
AE Title | 통신 대상의 고유 이름 (예: PACS01, ORTHANC) |
Host/IP | 네트워크 주소 |
Port | 데이터 수신 포트 (예: 104, 4242 등) |
- 클라이언트와 서버는 서로의 AE 정보를 알고 있어야 정상적으로 연결 가능하다.
2. Association: 연결 수립 과정
클라이언트가 서버에 요청을 보내기 전,
DICOM 통신은 반드시 Association(연결 세션)을 수립해야 한다.
Association 흐름
- A-ASSOCIATE-REQUEST: 클라이언트가 서버에 연결 요청
- A-ASSOCIATE-ACCEPT: 서버가 요청 수락
- DIMSE 메시지 교환: 실제 작업 수행 (예: C-STORE, C-FIND 등)
- A-RELEASE 또는 A-ABORT: 연결 종료
📌 Association은 일시적 연결이며, 해당 요청이 끝나면 반드시 종료된다.
하지만 하나의 연결 안에서 여러 작업(C-STORE 여러 개 등)도 가능하다.
3. 클라이언트의 역할
DICOM 클라이언트는 다음과 같은 작업을 수행한다:
- 파일 전송 요청 (C-STORE)
- 조건 검색 요청 (C-FIND)
- 영상 수신 요청 (C-MOVE)
- 워크리스트 요청 (Modality Worklist - C-FIND)
예시 주체
클라이언트 역할 | 예시 장비/시스템 |
영상 생성 | CT, MRI, X-ray 장비 |
데이터 분석 | AI 서버, 연구용 컴퓨터 |
영상 관리 | DICOM 라우터, 외부 시스템 |
4. 서버의 역할
DICOM 서버는 클라이언트의 요청에 응답하고, 필요 시 클라이언트에게 데이터를 전송한다.
수행 기능
- C-STORE 수신: 클라이언트가 전송한 파일을 저장
- C-FIND 응답: 요청 조건에 맞는 Study/Series 정보를 반환
- C-MOVE 수신 및 전송: 요청받은 이미지를 클라이언트에 전송
- 연결 인증 및 제한: 허용된 AE Title만 수신 가능하도록 설정
5. DICOM 통신 구조도
[ CT 장비 / AI 분석기 ] ←→ [ DICOM 서버 (PACS) ]
▲ ▲
│ │
Association Association
│ │
C-STORE / C-FIND / C-MOVE (DIMSE 메시지)
- 클라이언트가 서버에 요청을 보내는 구조이며,
C-MOVE에서는 서버가 오히려 클라이언트로 데이터를 전송한다는 점에 주의해야 한다.
6. 실무 예시: Orthanc 서버와의 통신
- 클라이언트: DCMTK 또는 Pydicom 기반 Python 스크립트
- 서버: 로컬에서 실행 중인 Orthanc (AE Title: ORTHANC, Port: 4242)
storescu -aec ORTHANC 127.0.0.1 4242 sample.dcm
📌 서버에서는 orthanc.json 설정 파일에서 AE Title, 포트, 허용 클라이언트 IP 등을 명시해야 한다.
7. 주요 오류와 해결법
오류 상황 | 원인 및 해결법 |
연결 거부됨 | AE Title 불일치, 포트 차단, IP 차단 |
Association 실패 | SOP Class 또는 Transfer Syntax 불일치 |
이미지 수신 실패 | 클라이언트 측 C-STORE 수신 서버 미구동 |
요청은 되나 응답 없음 | 서버의 Study/Series 검색 조건 불충분 또는 부정확 |
결론
DICOM 서버와 클라이언트는 단순한 송수신 관계가 아니라, 엄격한 프로토콜 기반의 연결 구조를 통해 신뢰성 있는 의료 영상 전송을 수행한다.
Association을 통해 세션을 만들고, 명확히 정의된 메시지(C-STORE, C-FIND, C-MOVE 등)를 주고받는 과정은 실제 병원 PACS와의 연동이나 AI 데이터 수집 시스템 구현에 필수적이다. 이 구조를 정확히 이해함으로써, 개발자나 시스템 설계자는 안정적인 의료 영상 흐름을 구축할 수 있다.
다음 글에서는 Orthanc DICOM 서버 설치 및 PACS 구축 실습으로 이어진다.
'개발 > DICOM 이야기' 카테고리의 다른 글
21. Orthanc 서버 설치 및 PACS 구축 실습 (0) | 2025.07.29 |
---|---|
20. PACS란 무엇인가 – 병원 영상 관리 시스템의 핵심 개념 (3) | 2025.07.29 |
18. DICOM 통신 구조 – C-STORE, C-FIND, C-MOVE의 의미 (3) | 2025.07.29 |
17. DICOM 이미지 PNG, JPEG로 변환하기 (Python 예제 포함) (0) | 2025.07.29 |
16. Pydicom 입문 – Python으로 DICOM 파일 읽고 쓰기 (0) | 2025.07.29 |