Trong mô hình đầy đủ cung cấp thông tin SD&S, giao thức HTTP sẽ được sử dụng cho tất cả các giao tiếp giữa các HNED và giữa các máy chủ SD&S.
Khi một HNED yêu cầu thông tin SD&S, chúng sẽ sử dụng định dạng sau:
63 'GET /dvb/sdns' request ' HTTP/1.1' CRLF 'Host: ' host CRLF
Khi yêu cầu là: sp_discovery_request/service_discovery_request
<request> được sử dụng để xác thực loại yêu cầu. Có 2 loại yêu cầu được định nghĩa:
Sp_discovery_request cho các yêu cầu về thông tin phát hiện liên quan tới các nhà cung cấp dịch vụ.
Service_discovery_request cho các yêu cầu về thông tin phát hiện liên quan tới dịch vụ đề nghị của nhà cung cấp dịch vụ.
Sp_discovery_request<host> là địa chỉ IP của máy chủ SD&S thu được(như trong mục 5.2.4). Service_discovery_request<host> là địa chỉ đặc biệt trong trường
“Location of SP Discovery Record” (như trong mục 5.2.5.)
Yêu cầu có thể chưa các trường tiêu để khác tương thích với RFC 2616.
Thông tin từ yêu cầu HTTP ở trên sẽ trả về các bản ghi XML thích hợp trong phần 5.2.6 giải nén và giải mã hoá. HNED sẽ đánh giá các tin nhắn trả về từ máy chủ SD&S để chắc chắn rằng nó chứa một chuỗi 200 trạng thái thành công. Nếu chuỗi này không được trả về thì việc thử lại sẽ phải sử dụng một cơ chế chống nghẽn mạng.
Sau khi nhận được chuỗi 200 trạng thái thành công, giao tiếp TCP được giải phóng.
2.5.2.1 Yêu cầu phát hiện SP
sp_discovery_request sẽ trả về bản ghi phát hiện SP như được chỉ ra trong phần 5.2.5 cho tất cả các nhà cung cấp dịch vụ đang hoạt động trong mạng. Yêu cầu này có một thông số mà có thể đưa ra giá trị ALL để yêu cầu thông tin phát hiện liên quan tới tất cả các nhà cung cấp dịch vụ hoặc tên các vùng miền của nhà cung cấp dịch vụ để yêu cầu thông tin phát hiện liên quan tới nhà cung cấp dịch vụ đó.
Khi sử dụng “pull mode”, các bản ghi đang chứa thông tin phát hiện nhà cung cấp dịch vụ (như Payload ID) sẽ không bị phân đoạn. Bản ghi phát hiện nhà cung cấp
64
dịch vụ sẽ tồn tại ở 2 dạng, như là bản ghi XML đơn với một danh sách các thông tin phát hiện cho việc hoàn thành thiết lập của nhà cung cấp đang hoạt động trên mạng và như là một nhóm các bản ghi XML, mỗi một bản ghi tương ứng với một nhà cung cấp.
sp_discovery_request sẽ tuân theo định dạng sau:
sp_discovery_request = sp_discovery?id='ALL'/SPId nơi mà SPId = domainName.
Việc này dẫn đến có thể có 2 yêu cầu với định dạng sau:
'GET /dvb/sdns/sp_discovery?id=ALL HTTP/1.1' CRLF 'Host: ' host CRLF
Và:
'GET /dvb/sdns/sp_discovery?id=DomainName HTTP/1.1' CRLF 'Host: ' host CRLF
2.5.3 Yêu cầu chỉ phát ra trong một chu kỳ thời gian tối đa (Maximum Cycle Time).
2.5.3.1 Yêu cầu dịch vụ phát hiện.
Service_discovery_request sẽ trả về bản ghi phát hiện dịch vụ miêu tả dịch vụ đề nghị của nhà cung cấp dịch vụ nào đó. Yêu cầu có 3 thông số bắt buộc là tên vùng miền của nhà cung cấp, loại dịch vụ đề nghị, và segmentID. Lựa chọn một phiên bản đoạn tin có thể được chú trọng đặc biệt trong bản tin yêu cầu, việc này sẽ chỉ ra cho máy chủ biết chính xác phiên bản của đoạn tin mà HNED có được.
Khi phiên bản của đoạn ghi được chú ý, nơi nhận yêu cầu sẽ chỉ trả về bản ghi phát hiện dịch vụ mới nhất cho đoạn tin đó khi phiên bản mới của đoạn tin đang được sử dụng. Số thứ tự của phiên bản có thể được tìm thấy trong bản ghi XML.
Nếu đoạn tin không thay đổi thi máy chủ sẽ trả về trạng thái mã “204” như trên RFC 2616 để chỉ ra rằng yêu cầu đã được xử lý thành công nhưng không có bản tin nào được trả về.
65
Khi phiên bản của một đoạn tin không được chú ý, nơi nhận yêu cầu sẽ trả về bản ghi phát hiện dịch vụ cho đoạn tin đặc biệt.
Khi một bản ghi không được tìm thấy, máy chủ sẽ trả về trạng thái mã “404”
như trên RFC 2616. HNED sẽ phải đưa ra một sp_discovery_request thích hợp để kiểm tra giá trị chính xác của Id của đoạn.
Service_discovery_request sẽ có định dạng như sau:
service_discovery_request= service_discovery?id='SPId '&Payload='PayloadId'&Segment=SegmentItem
SPId là tên vùng miền
PayloadId = OCTET; any hex number from 0x00 to 0xff
SegmentId = 4*4 HEXDIG;any hex number from 0x0000 to 0xffff SegmentItem = SegmentId 0*1('&'VersionNumber)
SegmentItem là một SegmentId với một trường lựa chọn số thứ tự của phiên bản.
VersionNumber = OCTET; any hex number from 0x00 to 0xff
Ví dụ một yêu cầu có thể được xây dựng để yêu cầu thông tin dịch vụ phát hiện có liên quan tới đề nghị quảng bá của một nhà cung cấp dịch vụ với Domain Name được xác thực như sau:
'GET/dvb/sdns/service_discovery?id=
DomainName&Payload=02&Segment=0001 HTTP/1.1' CRLF 'Host: ' host CRLF
Máy chủ chứa yêu cầu địa chỉ IP máy chủ đáp ứng phát hiện dịch vụ của nhà cung cấp, địa chỉ này được thu được bởi quyết định của URL chứa trong trường PullURL. Service_discovery_request sẽ được sử dụng cho thông tin SD&S nhận được đầu tiền và chỉ khi một thay đổi được tìm ra ở một trong các đoạn tin.