Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 77 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
77
Dung lượng
1,46 MB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
*
****
*
BÁO CÁO THỰC TẬP
Đề tài: Tìmhiểugiaothức SMPP
Thầy hướng dẫn: Đặng Văn Chuyết
Sinh viên: Nguyễn Ngọc Bảo
Lớp: KS2 K16
Hà Nội - 2004
1
MỤC LỤC
CÁC TỪ VIẾT TẮT 7
PHẦN I. TỔNG QUAN VỀ SMPP 8
1.1. Định nghĩa giaothứcSMPP 9
1.2. Mô tả SMPP Session 9
1.2.1. Lệnh Outbind 10
1.3. Các PDU trong SMPP 11
1.4. Kết kết nối tại tầng mạng của SMPP 12
1.5. Các tin được gửi từ ESME tới SMSC 13
1.5.1. Các tin được phản hồi từ SMSC về ESME 13
1.5.2. Sơ đồ tuần tự của SMPP session - ESME Transmitter 13
1.6. Các tin được gửi từ SMSC tới ESME 14
1.6.1. Tin phản hồi từ ESME về SMSC 14
1.6.2. Sơ đồ tuần tự của SMPP session - ESME Receiver 14
1.7. Trao đổi tin kép giữa SMSC và ESME 15
1.7.1. Typical SMPP session sequence - ESME Transceiver 15
1.8. Bắt lỗi 16
1.9. SMPP Timer 16
1.10. Các chế độ của tin 17
1.10.1. Chế độ Store and Forward 17
1.10.2. Chế độ Datagram 18
1.10.3. Chế độ Transaction 19
1.11. Các loại tin 19
1.11.1. SMSC Delivery Receipt 20
1.11.2. Intermediate Notification 20
1.11.3. SME Delivery Acknowledgement 20
1.11.4. SME Manual/User Acknowledgement 20
1.11.5. Conversation Abort 20
PHẦN II. ĐỊNH DẠNG VÀ KIỂU PDU TRONG SMPP 21
2.1. Các định nghĩa về kiểu 21
2.1.1. Kích thước của các trường tham số 21
2.2. Đinh dạng chung của PDU 21
2.2.2. Chiều dài của PDU 22
2.2.3. Kích thước của tin và phần mở rộng của tin 23
2
2.2.4. Các tham số tùy chọn 23
2.2.4.1. Định dạng tham số tùy chọn 23
2.3. Khả năng tương thích của các phiên bản cũ của giaothứcSMPP 23
2.4. Khả năng tương thích của các phiên bản mới của giaothứcSMPP 24
PHẦN III. CÁC PDU TRONG SMPP 25
3.1. Lệnh “BIND” 25
3.1.1. Cú pháp “BIND_TRANSMITTER” 25
3.1.2. Cú pháp “BIND_TRANSMITTER_RESP” 26
3.1.3. Cú pháp “BIND_RECEIVER” 26
3.1.4. Cú pháp “BIND_RECEIVER_RESP” 27
3.1.5. Cú pháp “BIND_TRANSCEIVER” 28
3.1.6. Cú pháp “BIND_TRANSCEIVER_RESP” 28
3.1.7. Lệnh “OUTBIND” 29
3.1.7.1. Cú pháp “OUTBIND” 29
3.2. Lệnh “UNBIND” 29
3.2.1. Cú pháp “UNBIND” 30
3.2.2. Cú pháp “UNBIND_RESP” 30
3.3. PDU của “GENERIC_NACK” 30
3.3.1. Cú pháp “GENERIC_NACK” 30
3.4. Lệnh “SUBMIT_SM” 30
3.4.1. Cú pháp “SUBMIT_SM” 31
3.4.1.1. Địa chỉ chỉ nguồn và đích 33
3.4.1.2. Quá trình thay thế tin trong “SUBMIT_SM” 33
3.4.2. Cú pháp “SUBMIT_SM_RESP” 34
3.5. Lệnh “SUBMIT_MULTI” 34
3.5.1. Cú pháp “SUBMIT_MULTI” 34
3.5.1.1. Định nghĩa địa chỉ đích dest_address 37
3.5.1.2. Định nghĩa danh sách gửi tin 37
3.5.2. Cú pháp “SUBMIT_MULTI_RESP” 37
3.5.2.1. Truyền không thành công 38
3.6. Lệnh “DELIVER_SM” 38
3.6.1. Cú pháp “DELIVER_SM” 38
3.6.2. Cú pháp “DELIVER_SM_RESP” 41
3.7. Lệnh “DATA_SM” 41
3.7.1. Cú pháp “DATA_SM” 42
3.7.2. Cú pháp “DATA_SM_RESP” 44
3.8. Lệnh “QUERY_SM” 45
3.8.1. Cú pháp “QUERY_SM” 45
3.8.2. Cú pháp “QUERY_SM_RESP” 45
3
3.9. Lệnh “CANCEL_SM” 46
3.9.1. Cú pháp “CANCEL_SM” 46
3.9.2. Cú pháp “CANCEL_SM_RESP” 47
3.10. Lệnh “REPLACE_SM” 47
3.10.1. Cú pháp “REPLACE_SM” 47
3.10.2. Cú pháp “REPLACE_SM_RESP” 48
3.11. Lệnh “ENQUIRE_LINK” 48
3.11.1. Cú pháp “ENQUIRE_LINK” 48
3.11.2. Cú pháp “ENQUIRE_LINK_RESP” 48
3.12. Lệnh “ALERT_NOTIFICATION” 49
3.12.1. Cú pháp “ALERT_NOTIFICATION” 49
PHẦN IV. THAM SỐ TRONG SMPP 50
4.1. Các tham số trong Header của lệnh 50
4.1.1. command_length 50
4.1.2. command_id 50
4.1.2.1. Bộ lệnh của SMPP 50
4.1.3. command_status 51
4.1.4. sequence_number 52
4.2. Các tham số bắt buộc của SMPP 53
4.2.1. system_id 53
4.2.2. password 53
4.2.3. system_type 53
4.2.4. interface_version 53
4.2.5. addr_ton, source_addr_ton, dest_addr_ton, esme_addr_ton 53
4.2.6. addr_npi, source_addr_npi, dest_addr_npi, esme_addr_npi 53
4.2.7. address_range 54
4.2.8. source_addr 54
4.2.9. destination_addr 54
4.2.10. esme_addr 54
4.2.11. service_type 54
4.2.12. esm_class 54
4.2.13. protocol_id 55
4.2.14. priority_flag 55
4.2.15. schedule_delivery_time 56
4.2.16. validity_period 56
4.2.17. registered_delivery 56
4.2.18. replace_if_present_flag 56
4.2.19. data_coding 57
4.2.20. sm_default_msg_id 57
4.2.21. sm_length 57
4.2.22. short_message 57
4.2.23. message_id 58
4.2.24. number_of_dests 58
4.2.25. dest_flag 58
4
4.2.26. no_unsuccess 58
4.2.27. dl_name 58
4.2.28. message_state 58
4.3. Mô tả tham số tùy chọn của SMPP 58
4.3.1. Nhận dạng các Tag của tham số tùy chọn 58
4.3.2. Định nghĩa các Tag của tham số tùy chọn 59
4.3.2.1. dest_addr_subunit 60
4.3.2.2. source_addr_subunit 60
4.3.2.3. dest_network_type 60
4.3.2.4. source_network_type 60
4.3.2.5. dest_bearer_type 61
4.3.2.6. source_bearer_type 61
4.3.2.7. dest_telematics_id 61
4.3.2.8. source_telematics_id 61
4.3.2.9. qos_time_to_live 62
4.3.2.10. payload_type 62
4.3.2.11. additional_status_info_text 62
4.3.2.12. receipted_message_id 62
4.3.2.13. ms_msg_wait_facilities 62
4.3.2.14. privacy_indicator 63
4.3.2.15. source_subaddress 63
4.3.2.16. dest_subaddress 63
4.3.2.17. user_message_reference 64
4.3.2.18. user_response_code 64
4.3.2.19. language_indicator 64
4.3.2.20. source_port 64
4.3.2.21. destination_port 64
4.3.2.22. sar_msg_ref_num 65
4.3.2.23. sar_total_segments 65
4.3.2.24. sar_segment_seqnum 65
4.3.2.25. sc_interface_version 65
4.3.2.26. display_time 65
4.3.2.27. ms_validity 66
4.3.2.28. dpf_result 66
4.3.2.29. set_dpf 66
4.3.2.30. ms_availability_status 66
4.3.2.31. network_error_code 67
4.3.2.32. message_payload 67
4.3.2.33. delivery_failure_reason 67
4.3.2.34. more_messages_to_send 67
4.3.2.35. message_state 68
4.3.2.36. callback_num 68
4.3.2.37. callback_num_pres_ind 68
4.3.2.38. callback_num_atag 69
4.3.2.39. number_of_messages 69
4.3.2.40. sms_signal 69
4.3.2.41. alert_on_message_delivery 69
4.3.2.42. its_reply_type 69
4.3.2.43. its_session_info 70
5
4.3.2.44. ussd_service_op 70
PHẦN V. VẤN ĐỀ MẠNG VÀ CÁC ĐỊNH NGHĨA CHUNG 71
5.1. Các mã lỗi của mạng 71
5.2. Chiều dài tối đa của tin 71
5.1. Định nghĩa về thời gian 71
5.1.1. Định dạng thời gian 71
5.1.1.1. Định dạng thời gian tuyệt đối 71
5.1.1.2. Định dạng thời gian tương đối 71
5.2. Các định về đồng hồ 71
PHỤ LỤC A. BIỂU THỨC QUY TẮC TRONG UNIX 73
PHỤ LỤC B. ĐỊNH DẠNG TIN BÁO CÁO 74
PHỤ LỤC C. XỬ LÝ NĂM 2000 TRONG SMPP 75
PHỤ LỤC D. VÍ DỤ VỀ TIN NGẮN CỦA DỊCH VỤ SMS 76
TÀI LIỆU THAM KHẢO 77
6
CÁC TỪ VIẾT TẮT
ACK Acknowledgement
API Application Programming Interface
CDR Call Detail Record
ESME External Short Message Entity
ETSI European Telecommunications Standards Institute
HEADER Leading portion of the SMPP message, common to all SMPP PDUs
MB Message Bureau - This is typically an operator message bureau.
MSB Most Significant Byte
MSC Mobile Switching Centre
MS Mobile Station
MWI Message Waiting Indication
NACK Negative Acknowledgement
NSAP Network Service Access Point
PDU Protocol Data Unit
PSSD Process Unstructured Supplementary Services Data
PSSR Process Unstructured Supplementary Services Request
SME Short Message Entity
SMSC Short Message Service Centre
SMPP Short Message Peer to Peer Protocol
UDHI User Data Header Indicator
URL Uniform Resource Locator
USSN Unstructured Supplementary Services Notification
USSR Unstructured Supplementary Services Request
VMA VoiceMail Alert
VPS Voice Processing System
TIA Telecommunications Industry Association
WAP Wireless Application Protocol (http://www.wapforum.org)
WCMP Wireless Control Message Protocol
WDP Wireless Datagram Protocol
7
PHẦN I. TỔNG QUAN VỀ SMPP
Giao thức Short Message Pear to Pear (viết tắt là SMPP) là một chuẩn mở, được thiết kế
để cung cấp các cơ chế truyền dữ liệu một cách linh hoạt cho việc truyền tin ngắn giữa một
trung tâm nhắn tin (ví dụ: SMSC) và một hệ thống ứng dụng tin ngắn (ví dụ: WAP Proxy
Server, Email Gateway, hoặc những gateway dùng để gửi tin nhắn). Trong tài liệu sẽ sử dụng
thuật ngữ SMSC để đại diện cho bất kỳ một server SMPP nào mà một SMPP client (External
Short Message Entity - ESME) có thể kết nối được. GiaothứcSMPP hỗ trợ cho các công nghệ
mạng Digital Cellular gồm có: GSM, CDMA, IDMA, iDEN.
Giao thứcSMPP cho phép một ESME có thể khởi tạo kết nối tại tầng ứng dụng với một
SMSC qua mạng TCP/IP hoặc X.25 để gửi và nhận tin ngắn với một SMSC đó. ESME cũng
có thể sử dụng SMPP để truy vấn, bỏ qua hoặc thay thế các tin ngắn.
SMPP hỗ trợ:
− Truyền tin từ một ESME tới một hoặc nhiều đích bằng SMSC;
− Một ESME cũng có thể nhận tin bằng SMSC từ các SME khác (ví dụ: các mobile
station);
− Truy vấn trạng thái của một tin ngắn được lưu trong SMSC;
− Bỏ qua hay thay thế một tin ngắn được lưu trong SMSC;
− Gửi các báo báo;
− Lên lịch gửi tin theo ngày tháng;
− Lựa chọn chế độ của tin, ví dụ: đóng gói hoặc lưu trữ và chuyển tiếp;
− Thiết lập mức độ ưu tiên cho tin ngắn;
− Định nghĩa kiểu định dạng dữ liệu cho tin ngắn;
− Thiết lập khoảng thời gian hợp lệ cho tin ngắn;
− Kết hợp một kiểu dịch vụ với từng tin ngắn, ví dụ: voice mail notification.
Tài liệu này sẽ mô tả định dạng của các lệnh và phản hồi có trong giaothức SMPP. Hình
1-1 mô tả các giao tiếp có thể sử dụng giaothức SMPP.
Hình 1-1. Sơ đồ mô tả các giao tiếp trong mạng di động.
8
1.1. Định nghĩa giaothức SMPP
SMPP dựa trên sự trao đổi đơn vị dữ liệu (PDU) của giaothức yêu cầu và phản hồi giữa
ESME và SMSC qua mạng TCP/IP hoặc X.25. GiaothứcSMPP định nghĩa:
− Một tập các lệnh và PDU cho việc trao đổi thông tin giữa ESME và SMSC,
− Dữ liệu mà một ứng dụng của ESME có thể trao đổi với một SMSC trong các
lệnh.
Tất cả các lệnh phải gồm có PDU của yêu cầu và PDU của phản hồi. Tương ứng với một
yêu cầu phải có một phản hồi, chỉ trừ các ngoại lệ đối với PDU alert_notification sẽ không có
phản hồi. Việc trao đổi tin giữa ESME và SMSC bằng SMPP có thể chia ra làm 3 nhóm sau:
− Tin được gửi từ ESME (Transmitter) tới SMSC,
− Tin được gửi từ SMSC tới ESME (Receiver),
− Tin được gửi từ ESME (Transceiver) tới SMSC và tin được gửi từ SMSC tới
ESME (Transceiver)
Hình 1-2 mô tả 3 nhóm trên, thông tin chi tiết được giải thích tại các đoạn sau.
Hình 1-2. Giao tiếp giữa SMSC và ESME
1.2. Mô tả SMPP Session
Một SMPP Session giữa một SMSC và một ESME được khởi tạo bởi ESME trước khi
thiết lập một kết nối mạng với SMSC và khi đó sẽ tạo ra một yêu cầu SMPP Bind để mở một
SMPP Session. Một ESME mong muốn gửi và nhận các tin được yêu cầu để thiếp lập hai kết
nối mạng (TCP/IP hoặc X.25) và hai SMPP Session (Transmitter và Receiver). Trong phiên
bản hiện tại của giaothức SMPP, một ESME có thể thiết lạp một SMPP Transceiver Session
qua một kết nối mạng đơn. Trong một SMPP Session, một ESME có thể phát ra một loạt các
yêu cầu tới một SMSC và nhận các phản hồi tương ứng với các yêu cầu từ SMSC. Tương tự
như vậy, SMSC có phát ra các yêu cầu tới ESME và nhận các phản hồi tương ứng. Một
SMPP Session có thể có các trạng thái sau:
9
− OPEN (Đã kết nối nhưng chưa Bind). Một ESME đã thiết lập một kết nối mạng
với SMSC nhưng chưa phát yêu cầu Bind.
− BOUND_TX. ESME đã yêu cầu bind như một ESME Transmitter (phát ra PDU
bind_transmitter) và đã nhận một phản hồi từ SMSC cho phép bind. Một ESME
được bind như như một transmitter có thể gửi SMS cho một SMSC để truyền tới
một MS hoặc một ESME khác. ESME cũng có thể thay thế, truy vấn hoặc bỏ qua
một tin ngắn được đệ trình trước đó.
− BOUND_RX. ESME đã yêu cầu bind như một ESME Receiver (phát ra PDU
bind_receiver) và đã nhận một phản hồi từ SMSC cho phép bind. Một ESME được
bind như một receiver có thể nhận tin ngắn từ một SMSC được gửi từ một MS,
một ESME khác hoặc bởi chính SMSC (ví dụ: một SMSC gửi báo cáo).
− BOUND_TRX. ESME đã yêu cầu bind như một ESME Transceiver (phát ra PDU
bind_transceiver) and đã nhận một phản hồi từ SMSC cho phép bind. Một ESME
được bind như như Transceiver hỗ trợ các tất cả các lệnh được hỗ trợ bởi một
Transmitter ESME và một Receiver ESME. Như vây, một ESME được bind như
một Transceiver có thể gửi các tin ngắn tới một SMSC để truyền tới MS hoặc tới
một ESME khác. ESME cũng có thể nhận các tin ngắn từ một SMSC mà có nguồn
gốc từ một MS, từ ESME khác hoặc chính SMSC (ví dụ: SMSC gửi báo cáo).
− CLOSE (Đã thôi bind và ngắt kết nối). Một ESME đã thôi bind khỏi một SMSC
và đã ngắt kết nối mạng. SMSC có thể thôi bind khỏi ESME.
1.2.1. Lệnh Outbind
Mục đích của lệnh outbind là cho phép SMSC ra hiệu cho một ESME khởi tạo yêu cầu
bind_receiver tới SMSC. Để ví dụ, khi SMSC có các tin chưa giải quyết xong mà cần gửi cho
ESME. Một Outbind SMPP session giữa một SMSC và một ESME có thể được khởi tạo bởi
SMSC trước khi thiết lập một kết nối mạng với ESME. Một khi một kết nối mạng được thiết
lập, SMSC bind tới ESME bằng việc phát một yêu cầu outbind. ESME phản hồi bằng yêu cầu
bind_receiver, SMSC sẽ trả lời bằng bind_receiver_resp. Nếu ESME không chấp nhận
outbind session (ví dụ: lỗi system_id, hoặc sai mật khẩu,…) thì ESME ngắt kết nối mạng.
Hình 1-3. Sơ đồ tuần tự của lệnh outbind
ESME
ESME
SMSC
SMSC
outbind
bind_receiver
bind_receiver_res
p
deliver_sm
deliver_sm_resp
10
[...]... các phiên bản mới của giaothứcSMPP Để có thể đảm bảo được sự tương thích các thực thể như SMSC và ESME đang sử dụng phiên bản mới của giaothứcSMPP có thể dễ dàng giao tiếp được với các thực thể sử dụng phiên bản cũ hơn Do vậy, việc diễn giải SMPP phải đảm bảo được quá trình xử lý thành công và thích hợp với các trường hợp sau: − Các PDU đã có không được loại bỏ khỏi giaothức − Định dạng mới của... tương thích của các phiên bản cũ của giaothứcSMPP Để có thể đảm bảo được sự tương thích các thực thể như SMSC và ESME đang sử dụng phiên bản cũ của giao thức SMPP có thể dễ dàng giao tiếp được với các thực thể sử dụng phiên bản mới hơn Do vậy, việc diễn giải SMPP phải đảm bảo được quá trình xử lý thành công và thích hợp với các trường hợp sau: − Nếu một thực thể của SMPP nhận được một lệnh không được... enquire_link_resp 1.4 Kết kết nối tại tầng mạng của SMPPGiao tiếp vần chuyển bên dưới giữa SMSC và ESME có thể dựa trên một kết nối mạng TCP/IP hoăck X.25 SMPP là giao thức thuộc tầng ứng dụng không dùng cho các chức năng vận chuyển Tại mức SMPP, ESME và SMSC xử lý các kết nối mạng giống như các chức năng vận chuyển, truyền và nhận các PDU Hình 1-4 mô tả các giao tiếp chung giữa ESME và SMSC Nếu cần thiết,... Nếu thực thể nhận tìm thấy một lỗi trong header của PDU, nó phải trả lại PDU generic_nak cho người gửi 1.9 SMPP Timer Để đảm bảo việc trao đổi của các giao dịch có hiệu lực, mỗi SMPP session phải được quản lý theo thời gian trên cả hai phía ESME và SMSC: − Mỗi SMPP session cần phải có khoảng thời gian hiệu lực xác định − Một timer cho phép cả ESME và SMSC có thể truy vấn trạng thái cả SMPP session thông... tự cộng thêm ký tự NULL Chiều dài thay đổi tự 0 đến 254, không cần đến ký tự NULL 1 C-Octet String Octet String 2.2 Đinh dạng chung của PDU Bảng 2-2 Định dạng tổng quát của PDU trong giao thức SMPP command length 4 octet SMPP PDU PDU Header (bắt buộc) PDU Body (tùy chọn) command command sequence PDU Body id status number Length = Giá trị của command length – 4 (octet) Phần Header là bắt buộc, Body là... có thể đòi hỏi tầng mạng tại thực thể gửi sẽ phải nắm giữ được sự phân đoạn của các PDU,của SMPP, để truyền như một dãy các gói được phân đoạn qua kết nối mạng Tương tự, tầng mạng tại thực thể nhận cũng phải tổng hợp lại được các PDU trước khi đưa chúng lên tầng SMPP Hình 1-4 Giao tiếp giữa ESME và SMSC trong SMPP 12 1.5 Các tin được gửi từ ESME tới SMSC Một ESME mà gửi các tin ngắn tới một SMSC phải... truy vấn trạng thái cả SMPP session thông qua lệnh equire_link − Sau một khoảng thời gian không có sự giao dịch, SMPP session phải bị hủy 16 − Khoảng thời gian giữa một yêu cầu và phản hồi tương ứng cũng phải được xác định Xem thông tin chi tiết của SMPP Timer trong mục 6.2 1.10 Các chế độ của tin SMPP đưa ra các chế độ của tin, nhưng là tùy chọn Nếu được SMSC hỗ trợ, một ESME có thể chọn cơ chế truyển... datagram ở trong các giaothức truyền thông khác như truyền UDP datagram và không lưu trữ giống như trong chế độ Store and Forward Trong chế độ này các thực thể gửi (ví dụ: ESME) sẽ không nhận bất kỳ thông báo nhận nào Các chức năng điển hình sử dụng chế độ này là nhật ký truyền Chế độ này được sử dụng cho các ứng dụng cần tốc độ cao, không cần đến các chức năng lưu trữ và cố gắng gửi SMPP hỗ trợ chế độ... dãy các phản hồi tương ứng từ ESME ESME phải phản hồi lại cho SMSC theo cùng thứ tự của yêu cầu Số lượng các tin chưa được giải quyết giữa ESME và SMSC không được quy định, sẽ do cách triển khai giao thức SMPP trong thực tế, khuyến nghị không được quá 10 tin trong một lần 1.7 Trao đổi tin kép giữa SMSC và ESME SMSC và ESME có thể tạo ra session trao đổi đổi thông tin kép (duplex), các tin được trao...1.3 Các PDU trong SMPP Bảng 1-1 Danh sách các PDU có trong SMPP và ngữ cảnh sử dụng các PDU Trạng thái của Phát bởi Phát bởi Tên SMPP Session ESME SMSC bind_transmitter OPEN Yes No bind_transmitter_resp OPEN No Yes bind_receiver OPEN Yes No bind_receiver_resp OPEN No Yes bind_transceiver . lệnh và phản hồi có trong giao thức SMPP. Hình
1-1 mô tả các giao tiếp có thể sử dụng giao thức SMPP.
Hình 1-1. Sơ đồ mô tả các giao tiếp trong mạng di. nghĩa giao thức SMPP
SMPP dựa trên sự trao đổi đơn vị dữ liệu (PDU) của giao thức yêu cầu và phản hồi giữa
ESME và SMSC qua mạng TCP/IP hoặc X.25. Giao thức