80 RTP Real Time Transport Protocol Giao thức truyền tải thời gian thực 81 SCP Service Control Point Nút điều khiển dịch vụ 82 SDP Service Data Point Nút dữ liệu dịch vụ 83 SGSN Servin
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 3MỤC LỤC
LỜI CAM ĐOAN 3
LỜI CẢM ƠN 4
CHỮ VIẾT TẮT 7
DANH MỤC CÁC BẢNG 10
DANH MỤC CÁC HÌNH VẼ 10
MỞ ĐẦU 14
CHƯƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID 16
1.1 Giới thiệu Android 16
1.2 Tính năng Android 16
1.3 Kiến trúc Android 17
1.3.1 Ứng dụng (Applications) 17
1.3.2 Nền ứng dụng (Application Framework) 18
1.3.3 Thư viện (Libraries) 19
1.3.4 AndroidRuntime 20
1.3.5 Linux Kernel 21
1.4 Kiến trúcAndroid GUI 23
1.5 Ứng dụng Android 24
1.5.1 Khởi động ứng dụng 24
1.5.2 Activity Back-Stack 25
1.5.3 Nhiệm vụ Tasks 26
1.5.4 Vòng đời của Activity 26
1.5.5 Vòng đời của Process 28
1.5.6 Service 29
CHƯƠNG 2: CÁC GIAO THỨC SỬ DỤNG 30
2.1 Giao thức TCP/IP 30
2.1.1 Khái niệm 30
2.1.2 Mục đích và nguồn gốc 30
2.1.3 Đặc điểm 31
2.1.4 Cấu trúc phân tầng của TCP/IP 31
2.1.5 Đóng gói dữ liệu trong TCP/IP 32
2.1.6 Các tầng trong mô hình TCP/IP 33
2.2 Bản tin nhắn ngắn SMS 35
CHƯƠNG 3: TỔNG QUAN VỀ MẠNG THÔNG TIN DI ĐỘNG (VINAPHONE) 39
3.1 Cấu trúc, các thành phần chức năng hệ thống GSM 39
Trang 43.1.1 Cấu trúc hệ thống chuyển mạch 40
3.1.2 Hệ thống trạm gốc 41
3.1.3 Hệ thống hỗ trợ giám sát OSS 42
3.2 Cấu trúc, các thành phần chức năng hệ thống GPRS/EDGE 43
3.3 Cấu trúc, các thành phần chức năng hệ thống 3G 46
CHƯƠNG 4: GIẢI PHÁP 50
4.1 Mô hình giải pháp 50
4.1.1 Mô hình có sử dụng máy chủ IP tĩnh 50
4.1.2 Mô hình không sử dụng máy chủ 51
4.2 Lựa chọn mô hình giải pháp 51
4.3 Thiết kế phần mềm trên Android 52
4.3.1 Mô hình Usecase 52
4.3.2 Mô hình Package 53
4.3.3 Mô hình Class cùng mô hình hoạt động chi tiết của từng Modul 54
4.4 Thiết kế phần cứng thiết bị 90
4.4.1 Yêu cầu phần cứng 90
4.4.2 Thiết bị sử dụng trong quá trình Demo và kiểm thử 91
4.5 Thiết kế phần mềm nhúng trên thiết bị 93
CHƯƠNG 5: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 95
5.1 Kết quả 95
5.2 Hướng phát triển 95
TÀI LIỆU THAM KHẢO 96
Trang 5CHỮ VIẾT TẮT
Chữ viết tắt trong lĩnh vực phần mềm
1 ADT Android Development Tools Công cụ phát triển phần mềm
Android tích hợp cho Eclipse
2 SDK Software Development Kits Bộ phát triển phần mềm
3 API Application Programming Interface Giao diện ứng dụng trong chương
trình phần mềm
Chữ viết tắt trong lĩnh vực viễn thông
1 3GPP 3rd Generation Partnership Project Dự án hợp tác về di động thế hệ
thứ 3
2 3GPP2 3rd Generation Partnership Project 2 Dự án 2 hợp tác về di động thế hệ
thứ 3
4 AMPS Advance Mobile Phone System Hệ thống điện thoại tin di động
tiên tiến
5 ATM Asynchronous Transfer Mode Chế độ truyền không đồng bộ
6 AUC Authencation Centre Trung tâm nhận thực
8 BCF Base Station Control Function Chức năng điều khiển trạm gốc
9 BG Border Gateway Tổng đài cổng giữa 2 giao diện
10 BICC Bearer Independent Call Control Điều khiển cuộc gọi độc lập kênh
mang
11 BSC Base Station Controller Thiết bị điều khiển trạm gốc
12 BSS Base Station Subsystem Hệ thống trạm gốc
13 BTS Base Transceiver Station Trạm thu phát gốc
14 CBO Compact Base Station Outdoor Trạm gốc đơn tiêu chuẩn ngoài trời
15 CDMA Code Division Multiple Access Đa truy nhập phân chia theo mã
16 CDR charging data record Bản ghi dữ liệu tính cước
19 D-AMPS Digital-Advance Mobile Phone
20 DBS Distributed Base Station Trạm gốc phân bố
Trang 622 DSSS Direct Sequence Spectrum Spread Trải phổ chuỗi trực tiếp
23 EDGE Enhanced Data rates for GSM
Evolution
Mạng dữ liệu mở rộng cho hệ thống GSM
24 EIR Equipment Identification Register Bộ ghi nhận dạng thiết bị
25 EMC Electro-Magnetic Compatibility Tương thích điện từ trường
26 ETSI European Telecommunications
Standards Institute
Viện tiêu chuẩn viễn thông châu
Âu
27 FDMA Frequency Division Multiple Access Đa truy nhập phân chia theo tần số
28 GGSN Gateway GPRS Support Node Nút hỗ trợ GPRS cổng
29 GMSK Gaussian minimum-shift keying Khóa dịch pha tối thiểu Gauss
30 GPRS General Packet Radio Service Dịch vụ vô tuyến gói chung
31 GSM Global System for Mobile
Communications
Hệ thống toàn cầu cho thông tin di động
33 HLR Home Location Register Bộ ghi định vị thưởng trú
34 HSDPA High-Speed Downlink Packet Access Truy nhập gói đường lên tốc độ
cao
35 HSL High Speed Link Đường truyền dẫn báo hiệu tốc độ
cao
36 HSPA High-Speed Packet Access Truy nhập gói tốc độ cao
37 HSS Home subscriber server Máy chủ quản lý thuê bao thường
trú
39 IETF Internet Engineering Task Force Ủy ban kỹ thuật Internet
40 IMEI International Mobile Equipment
Identity Nhận dạng thiết bị di động quốc tế
42 ITU International Telecommunication
43 LNA Low Noise Amplifier Khuyếch đại tạp âm thấp
44 LTE Long Term Evolution Mạng phát triển lâu dài trong
tương lai
45 MAC Medium Access Control Điều khiển truy nhập phương tiện
46 MBI Multi-Standard Base Station Indoor Trạm gốc đa tiêu chuẩn trong nhà
47 MBO Multi-Standard Base Station Outdoor Trạm gốc đa tiêu chuẩn ngoài trời
48 MCB Main Circuit Breaker Bộ ngắt mạch tự động
Trang 749 MCCDMA Multi Carrier - CDMA CDMA đa sóng mang
50 MCS Modulation and coding scheme Mô hình mã hóa và điều chế
53 MIMO Muliple Input Multiple Output Công nghệ sử dụng nhiều đầu vào
nhiều đầu ra
54 MMS Multimedia Messaging Service Dịch vụ nhắn tin đa phương tiện
56 MSC Mobile Switching Center Trung tâm chuyển mạch di động
57 MSS Mobile SoftSwitch Solution Giải pháp chuyển mạch mềm di
động
58 N-AMPS Narrowband-Advance Mobile Phone
60 OFDMA Orthogonal Frequency Division
Multiple Access
Đa truy nhập phân chia theo tần số trực giao
61 OMC Operation and Maintenance Center Trung tâm vận hành và bảo dưỡng
64 OML Operation and Maintenance Link Đường tín hiệu vận hành và bảo
dưỡng
65 OSS Operation Support System Hệ thống hỗ trợ hoạt động
66 PCM Pulse-code modulation Điều chế xung mã
67 PCU Packet Control Unit Khối điều khiển gói
68 PDC Personal Digital Cellular Mạng di động số cá nhân
69 PDC Personal Digital Cellular Hệ thống di động số cá nhân
71 PLMN Public Land Mobile Network Mạng di động mặt đất công cộng
73 PSTN Public Switched Telephone Network Mạng điện thoại chuyển mạch
kênh
74 QAM Quadrature amplitude modulation Điều chế biên độ cầu phương
75 QPSK Quadrature Phase Shift Keying Điều chế dịch pha cầu phương
76 RLC Radio Link Control Điều khiển kết nối vô tuyến
77 RNC Radio Network Controller Bộ điều khiển mạng vô tuyến
78 RPP Regional Processor Platform Nền tảng xử lý vùng
79 RRU Remote Radio Unit Khối vô tuyến từ xa
Trang 880 RTP Real Time Transport Protocol Giao thức truyền tải thời gian thực
81 SCP Service Control Point Nút điều khiển dịch vụ
82 SDP Service Data Point Nút dữ liệu dịch vụ
83 SGSN Serving GPRS Support Node Nút hỗ trợ GPRS phục vụ
84 SMS Short Message Service Dịch vụ bản tin ngắn
85 SMSC Short Message Service Center Trung tâm dịch vụ bản tin ngắn
87 STM (1) Synchronous Transport Module Khối truyền tải đồng bộ
88 STP Signaling Transfer Point Điểm chuyển đổi báo hiệu
89 TACS Total Access Communication System Hệ thống thông tin truy nhập toàn
bộ
91 TCP/IP Transmission Control
Protocol/Internet Protocol
Giao thức điều khiển truyền/Giao thức liên mạng
92 TDM Time Division Multiplexing Ghép kênh phần chia thời gian
93 TDMA Time Division Multiple Access Đa truy nhập phân chia theo thời
99 UMB Ultra Mobile Broadband Mạng băng rộng di động
100 UMTS Universal Mobile
103 VLR Visitor Location Register Bộ ghi định vị tạm trú
104 VMS Voice Messaging Service Dịch vụ nhắn tin thoại
105 VSWR Voltage Standing Wave Ratio Tỷ số sóng đứng điện áp
106 WAP Wireless Application Protocol Giao thức ứng dụng vô tuyến
107 WCDMA Wideband Code Division Multiple
108 WiMAX Worldwide Interoperability for
Microwave Access
Mạng liên kêt toàn cầu với truy nhập siêu cao tần
Trang 9DANH MỤC CÁC BẢNG
Bảng 2-1: Bảng giao thức trên các tầng của TCP/IP 33
DANH MỤC CÁC HÌNH VẼ Hình 1-1: Kiến trúc Android 18
Hình 1-2: Quản lý Surface 20
Hình 1-3: Quản lý Audio 20
Hình 1-4: Khởi tạo Platform 21
Hình 1-5: Quá trình IPC 22
Hình 1-6: Quản lý năng lượng 23
Hình 1-7: Kiến trúc Android GUI 23
Hình 1-8: Activity back stack 25
Hình 1-9: Background và Foreground Task 26
Hình 1-10: Vòng đời của Activity 27
Hình 1-11: Lưu trạng thái Activity 28
Hình 2-1: Giao thức TCP/IP 32
Hình 2-2: Cấu trúc gói Dữ liệu 32
Hình 2-3: Mô Hình TCP/IP 33
Hình 2-4: Quan hệ giữa MS và SC 36
Hình 2-5: Quá trình gửi tin MO trong mạng GSM 36
Hình 2-6: Quá trình gửi tin MT trong mạng GSM 37
Hình 2-7: Vòng đời của tin nhắn 38
Hình 3-1: Cấu trúc hệ thống thông tin di động trong hệ thống GSM 39
Hình 3-2: Cấu trúc ghép nối TRAU tại BTS, BSC, MSC 42
Hình 3-3: Sơ đồ kết nói các thành phần mạng lõi GSM/GPRS/EDGE của Vinaphone 43 Hình 3-4: Sơ đồ các khối chức năng hệ thống GPRS/EDGE kết hợp với GSM 44
Hình 3-5: Sơ đồ kết nối mạng lõi 3G theo 3GPP Release 4 46
Hình 3-6: Sơ đồ kết nối mạng lõi Vinaphone khi triển khai 3G 49
Hình 4-1: Mô hình điều khiển có sử dụng Server 50
Hình 4-2: Mô hình điều khiển không sử dụng Server 51
Trang 10Hình 4-3: Mô hình Usecase của phần mềm điều khiển 52
Hình 4-4: Mô hình Package của phần mềm điều khiển 53
Hình 4-5: Biểu đồ Main class và giao diện 54
Hình 4-6: Biểu đồ hoạt động hàm onCreate() trong Class MainActivity 55
Hình 4-7: Biểu đồ ServiceManager class 55
Hình 4-8: Biểu đồ hoạt động hàm onCreate() trong ServcieManage class 56
Hình 4-9: Intent xử lý sự kiện nhận SMS trong ServiceManager class 56
Hình 4-10: Biểu đồ hoạt động hàm processMessage() trong ServiceManage class 57
Hình 4-11: Biểu đồ hoạt động hàm checkPhoneExist() của ServiceManager class 57
Hình 4-12: Biểu đồ hoạt động hàm storeSMSContent của ServiceManager class 58
Hình 4-13: Biểu đồ hoạt động hàm getPhoneOrDescription() 58
Hình 4-14: Biểu đồ SMSReceiver class 59
Hình 4-15: Biểu đồ hoạt động hàm oReceive() của SMSReceiver class 59
Hình 4-16: Biểu đồ class của DeviceManager 60
Hình 4-17: Giao diện quản lý và thêm thiết bị 61
Hình 4-18: Màn hình ContextMenu và cập nhật mô tả thiết bị 61
Hình 4-19: Biểu đồ hoạt động hàm onCreate() của DeviceTabActivity class 62
Hình 4-20: Biểu đồ hoạt động hàm onCreate() của AddDeviceActivity class 62
Hình 4-21: Biểu đồ hoạt động hàm onCreateDialog của AddDeviceActivity class 63
Hình 4-22: Biểu đồ hoạt động hàm loadPhoneInfoList() của AddDevieActivity class 63 Hình 4-23: Biểu đồ hoạt động hàm addPhoneNumber() của AddDeviceActivity class64 Hình 4-24: Biểu đồ hoạt động hàm removePhoneNumber 64
Hình 4-25: Biểu đồ hoạt động hàm updatePhoneDescription() 65
Hình 4-26: Biểu đồ hoạt động hàm clearPhoneList() của AddDeviceActivity class 65
Hình 4-27: Biểu đồ hoạt động hàm importPhoneList() của AddDeviceActivity class 66 Hình 4-28: Biểu đồ hoạt động hàm getPhoneOrDescription 66
Hình 4-29: Biểu đồ hoạt động hàm clearPhoneData() của AddDeviceActivity class 67
Hình 4-30: Biểu đồ hoạt động hàm isMyServiceRunning() 67
Hình 4-31: Hàm onCreateContextMenu() của AddDeviceActivity class 68
Hình 4-32: Biểu đồ hoạt động hàm onContextItemSelected() 68
Trang 11Hình 4-33: Biểu đồ hoạt động hàm onCreateOptionMenu() 69
Hình 4-34: Biểu đồ hoạt động hàm onPrepareOptionsMenu() 69
Hình 4-35: Biểu đồ hoạt động hàm onOptionsItemSelected() 70
Hình 4-36: Biểu đồ hoạt động hàm isExistPhone() của AddDeviceActivity class 70
Hình 4-37: Biểu đồ hoạt động hàm inputPhoneInfo() của AddDeviceActivity class 71
Hình 4-38: Biểu đồ class của DeviceCommand 72
Hình 4-39: Giao diện của DeviceCommand và thêm một Command 72
Hình 4-40: Giao diện ContextMenu, cập nhật và xác nhận truyền một Command 73
Hình 4-41: Biểu đồ hoạt động hàm onCreate của DeviceCommandActivity class 73
Hình 4-42: Biểu đồ hoạt động hàmloadCommandInfoList() 74
Hình 4-43: Biểu đồ hoạt động hàm addCommandName() 74
Hình 4-44: Biểu đồ hoạt động hàm removeCommandName() 75
Hình 4-45: Biểu đồ hoạt động hàm updateCommandContent 75
Hình 4-46: Biểu đồ hoạt động hàm clearCommandList() 76
Hình 4-47: Biểu đồ hoạt động hàm onCreateContextMenu() 76
Hình 4-48: Biểu đồ hoạt động hàm onContextItemSelected() 77
Hình 4-49: Biểu đồ hoạt động hàm getCommandOrContent 77
Hình 4-50: Biểu đồ hoạt động hàm isExistCommand() 78
Hình 4-51: Biểu đồ hoạt động hàm inputCommand() 78
Hình 4-52: Biểu đồ hoạt động hàm onCreateDialog() 79
Hình 4-53: Biểu đồ hoạt động hàm sendCommandControl 79
Hình 4-54: Biểu đồ hoạt động hàm sendSMS() của DeviceCommandActivity class 80
Hình 4-55: Biểu đồ class của DeviceContent 80
Hình 4-56: Giao diện quản lý nội dung các message của thiết bị (khi chƣa có dữ liệu)81 Hình 4-57: Biểu đồ hoạt động hàm getListValues() của DeviceContentActivity class 81 Hình 4-58: Biểu đồ hoạt động hàm onCreate() của DeviceContentActivity class 82
Hình 4-59: Biểu đồ hoạt động hàm loadSMSContentList() 82
Hình 4-60: Biểu đồ hoạt động hàm updateData() của DeviceContentActivity class 83
Hình 4-61: Biểu đồ hoạt động hàm loadSMSDateList() 84
Hình 4-62: Biểu đồ class của DeviceReportActivity 84
Trang 12Hình 4-63: Giao diện báo cáo và các dạng biểu đồ thống kê 85
Hình 4-64: Thêm các dạng biểu đồ thống kê 85
Hình 4-65: Biểu đồ hoạt động hàm onCreate() của DeviceReportActivity class 86
Hình 4-66: Biểu đồ hoạt động hàm getListValue() của DeviceReportActivity class 86
Hình 4-67: Biểu đồ Connection class 87
Hình 4-68: Biểu đồ hoạt động hàm khởi tạo của Connection class 87
Hình 4-69: Biểu đồ hoạt động hàm open() của Connection 88
Hình 4-70: Biểu đồ hoạt động hàm sendCloseSignal() của Connection class 88
Hình 4-71: Biểu đồ hoạt động hàm close() của Connection class 89
Hình 4-72: Biểu đồ hoạt động hàm write() của Connection class 89
Hình 4-73: Biểu đồ mô hình hóa thiết bị điều khiển tiêu chuẩn 90
Hình 4-74: Khối nguồn 91
Hình 4-75: Khối vi điều khiển trung tâm 92
Hình 4-76: Khối hiển thị 92
Hình 4-77: Khối nhập liệu 92
Hình 4-78: Khối giao tiếp 93 Hình 4-79: Biểu đồ tuần tự quá trình giao tiếp giữa thiết bị với phần mềm trên Android94
Trang 13MỞ ĐẦU
Trong những năm gần đây, cùng với sự phong phú về chủng loại, cấu hình và giá thành, điện thoại Android đã trở nên phổ biến và xâm nhập ngày càng sâu rộng tới người sử dụng trên toàn thế giới Có lẽ lý do giúp cho “dế” Android phát triển nhanh chính là có một hệ điều hành được người dùng ưa chuộng nhất Sở dĩ hệ điều hành Android thu hút được sự chú ý đó vì chúng được tạo nên từ nền tảng nguồn mở, cho phép người dùng có thể tùy biến nhiều trên đó Mặt khác, với Android thiết bị người dùng không đòi hỏi phải có một cầu hình tối thiểu nào cả Chúng có thể hoạt động trên mọi cấu hình, máy có hỗ trợ cảm ứng hay không, cũng như tương thích với mọi nhà sản xuất thiết bị phần cứng [9]
Bên cạnh đó, các thiết bị trong công nghiệp, dân sự cũng như quốc phòng ngày càng đa dạng, hiện đại, với sự trải rộng của không gian vận hành, cho nên việc quản
lý, giám sát và điều khiển chúng thông minh, linh hoạt là yêu cầu thiết yếu
Thêm nữa, nền tảng di động trong xã hội hiện tại đã đạt tới mức phổ biết cũng như những tiện ích, dịch vụ mà nó mang lại là vô cùng phong phú, đây chính là cơ sở thuận lợi hướng tới một xã hội kết nối, khả năng đưa con người có thể kiểm soát các thiết bị, dịch vụ mình làm ra trong quy mô rộng lớn Năng suất lao động cũng từ đó mà
có những bước nhảy vọt
Đó cũng là lý do tôi chọn đề tài: “Quản lý, giám sát và điều khiển thiết bị bằng phần mềm trên Android qua mạng điện thoại di động”
Đề tài được trình bày thành5 chương:
Chương 1: Tổng quan về hệ điều hành Android
Trang 14CHƯƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID
Hệ điều hành Android đã được mô tả chi tiết trong các tài liệu tham khảo [5-7], tuy nhiên, để có cái nhìn tổng quan về vấn đề này, dưới đây là những trình bày tóm tắt
1.1 Giới thiệu Android
Android làhệ điều hành dành cho điện thoại di động,được xây dựng dựa trên nền Linux Trước đây hệ điều hành này thuộc sở hữu của Android Inc, Google đã mua lại
hệ điều hành này tại thời điểm phát triển ban đầu (năm 2005) và tiếp tục phát triển nó như một phần của chiến lược để bước vào không gian di động
Google Android là hệ điều hành mở, hoàn thiện và miễn phí đầu tiên Sự ra đời của nó gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai Các nhà cung cấp (thường là các nhà sản xuất phần cứng) có thể thêm phần mở rộng cho Android và tùy biến Android để phân biệt sản phẩm của họ với những người khác Mô hình này phát triển đơn giản làm cho Android rất hấp dẫn và do đó đã khơi dậy sự quan tâm của nhiều nhà cung cấp
1.2 Tính năng Android
Androidlà mã nguồn mở và miễn phí cho các nhà sản xuất tuỳ biến, có nghĩa là không có phần cứng cố định và cấu hình phần mềm Tuy nhiên, Android tự bản thân
nó đã hỗ trợ các tính năng sau đây:
Lưu trữ - Sử dụng SQLite, một cơ sở dữ liệu quan hệ, trọng lượng nhẹ cho dữ liệu lưu trữ
Kết nối - Hỗ trợ GSM / EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth (bao gồm A2DP và AVRCP), WiFi, LTE và WiMAX
Hỗ trợ phần cứng - Accelerometer cảm biến, máy ảnh, kỹ thuật số Compass, Cảm biến tiệm cận và GPS
Multi-touch - Hỗ trợ màn hình cảm ứng đa điểm
Đa chức năng - Hỗ trợ các ứng dụng đa tác vụ
Hỗ trợ Flash - Android 2.3 hỗ trợ Flash 10.1
Tethering - Hỗ trợ chia sẻ kết nối Internet là một điểm nóng không dây/có dây
Trang 15Tất cả các ứng dụng có sẵn đều đƣợc viết bằng ngôn ngữ Java và sử dụng Android SDK (Software Development Kit)
Bộ SDK của Android bao gồm mọi thứ cần thiết giúp bạn có thể lập trình, debug
và test ứng dụng Android
Android API Cốt lõi của bộ SDK là thƣ viện các API và Google cũng chỉ sử
dụng bộ API này để xây dựng các ứng dụng có sẵn cho Android (native application)
Development Tool SDK bao gồm rất nhiều công cụ giúp biên dịch, sửa lỗi và
hỗ trợ trong việc lập trình ứng dụng
Android Emulator Trình giả lập một thiết bị chạy Android thực sự với nhiều
skin thay thế, cực kì tiện lợi cho việc test ứng dụng Android ngay trên máy tính mà không cần phải thông qua một thiết bị chạy Android thực
Tài liệu SDK bao gồm bộ tài liệu rất chi tiết, giải thích cặn kẽ, chính xác những
gì bao gồm trong mỗi package, class cùng với cách sử dụng chúng Ngoài tài liệu về “code”, còn có những tài liệu dùng để “getting started” và giải thích các nguyên tắc về cơ chế hoạt động của ứng dụng trong Android
Code mẫu SDK bao gồm các ứng dụng mẫu đơn giản minh họa cho các tính
năng nổi bật trên Android, cũng nhƣ các ứng dụng demo cách sử dụng những tính năng của bộ API
Đối với Eclipse IDE (Integrated Development Environment), Google cung cấp một plug-in giúp kết hợp chặt chẽ giữa Eclipse với Android Emulator cũng nhƣ công
cụ debug Điều này giúp cho việc phát triển ứng dụng cho Android bằng Eclipse thực
sự trở nên đơn giản
Trang 16Hình 1-1: Kiến trúc Android
1.3.2 Nền ứng dụng (Application Framework)
Đây là lõi hay là nền tảng mà tất cả những nhà phát triển Android đều phải theo Các nhà phát triển có thể truy cập vào tất cả các framework API cơ bản của các chức năng của một điện thoại như quản lý phân bổ tài nguyên, chuyển đổi giữa các quy trình hoặc các chương trình, các ứng dụng điện thoại và theo dõi lưu giữ vị trí của điện thoại Về cơ bản tất cả các ứng dụng đều là một tập hợp các dịch vụ và các hệ thống, bao gồm:
Quản lý Activity
Quản lý cửa sổ (màn hình)
Cung cấp nội dung
Hệ thống View
Quản lý gói tin
Quản lý điện thoại
Quản lý nguồn tài nguyên
Trang 17Cung cấp nội dung cho phép các ứng dụng truy cập dữ liệu từ các ứng dụng khác (như Contacts) hoặc để chia sẻ dữ liệu riêng của chúng
Quản lý nguồn tài nguyên, cung cấp quyền truy cập vào tài nguyên phi mã nguồn như chuỗi, đồ họa và các lớp tập tin
Quản lý thông báo cho phép tất cả các ứng dụng để hiển thị thông báo tùy chỉnh trong thanh trạng thái
Quản lý Activity, quản lý vòng đời của ứng dụng và cung cấp một stack (ngăn xếp), back-stack
Kiến trúc được thiết kế để đơn giản hóa việc tái sử dụng của các thành phần Hiểu cách khác framework ứng dụng như là một tập các công cụ cơ bản mà một nhà phát triển có thể xây dựng các công cụ phức tạp hơn nhiều
1.3.3 Thư viện (Libraries)
Lớp này bao gồm thư viện của Android được viết bằng C, C++ và được sử dụng bởi các thành phần khác nhau của hệ thống Android Các nhà phán triển truy cập những tính năng cung cấp bởi các thư viện thông qua Framework ứng dụng Android Một số các thư viện này bao gồm các phương thức truyền thông (media), đồ họa, 3D, SQLite, thư viện trình duyệt web…
Hệ thống thư viện C (Android Libc implementation): Kế thừa các hệ thống
thư viện chuẩn C (LIBC), tối ưu hóa để sử dụng trong các thiết bị nhúng trên nền Linux
Theo giấy phép BSD
Kích thước nhỏ và dẫn xuất mã nhanh
Tùy chỉnh nhanh thực hiện pthread
Được xây dựng - trong hỗ trợ cho Android-dịch vụ cụ thể (thuộc tính hệ thống, khả năng đăng nhập)
Không hỗ trợ một số tính năng POSIX
Lưu trữ, dựng hình, đa phương tiện (Media Library): Cung cấp các tính
năng chính trên nền tảng Android:
SQLite, một hệ thống quản lý cơ sở dữ liệu quan hệ đơn giản (không IPC, tập tin đơn giản)
WebKit, một framwork ứng dụng cung cấp nền tảng cho việc xây dựng một trình duyệt web
Media Framework, dựa trên nền tảng PacketVideo openCORE (codec)
Tối ưu hóa thư viện đồ họa 2D / 3D dựa trên OpenGL ES
Quản lý giao diện (Surface Manager): Cung cấp một hệ thống rộng các
surface để có thể tạo ra tất cả các surface trong một bộ khung đệm:
Kết hợp surface 2D và 3D
Trang 18 Có thể sử dụng OpenGL ES và bộ tăng tốc phần cứng 2D cho các thành phần của nó
Hình 1-2: Quản lý Surface
Quản lý âm thanh (Audio Manager): Quá trình nhiều dòng âm thanh trong
đường âm ra PCM
Xử lý các loại khác nhau của các thiết bị (tai nghe, loa ngoài…)
Chuyển hướng dòng âm với đầu ra quy định
Hình 1-3: Quản lý Audio
Thư viện trừu tượng phần cứng (Hardware Abstraction Libraries): Chỉ rõ
giao diện phần cứng mà Androidđòi hỏi để vận hành
Đặt tiêu chuẩn hóa APIs các nhà phát triển sẽ phải thực hiện
Có sẵn cho tất cả các thành phần một nhà sản xuất có thể tích hợp trên nền tảng Android của nó
1.3.4 AndroidRuntime
Lớp này bao gồm các thiết lập của các thư viện cơ sở được yêu cầu cho các thư viện java Mỗi ứng dụng Android được ví như của riêng máy ảo Dalvik Dalvik đã được viết để một thiết bị có thể chạy nhiều máy ảo hiệu quả và thực hiện các tập tin thực thi ( Dex) tối ưu hóa cho bộ nhớ tối thiểu
Dalvik máy ảo: Một máy ảo chỉ thông dịch (không có JIT), thiết lập cơ bản
Tối ưu hóa cho các yêu cầu bộ nhớ thấp
Được thiết kế để cho phép nhiều máy ảo để chạy một lúc
Dựa vào hệ điều hành cơ bản cho quá trình cách ly, quản lý bộ nhớ và hỗ trợ luồng
Trang 19Thực hiện chương trình chạy Dalvik (DEX) các tập tin được nén vào một gói Android (APK)
1.3.5 Linux Kernel
Lớp này bao gồm các chương trình quản lý bộ nhớ của Android, thiết lập bảo mật, phần mềm quản lý điện năng và một số trình điều khiển cho phần cứng, truy cập tập tin hệ thống, mạng và các quá trình giao tiếp Kernel cũng hoạt động như một lớp trừu tượng giữa phần cứng và phần còn lại của stack phần mềm
Linux 2.6.24phù hợp cho Android:
Một số tính năng phổ biến đã được loại bỏ:
Không có hỗ trợ GBLIC
Không có hệ thống cửa sổ gốc
Không bao gồm các thiết lập đầy đủ các tiện ích Linux
Android, thành phần cụ thể đã được thêm vào:
Báo thức, chia sẻ bộ nhớ Android
Kernel Memory Killer, Kernel Debugger, Logger
Khởi tạo Platform
Hình 1-4: Khởi tạo Platform
Trang 20(A) Bootloader tải các phần cơ bản (Kernel) và bắt đầu quá trình "Init".
(B) "Daemons" xử lý các giao diện phần cứng mức thấp bắt đầu hoạt động (USB, ADB, trình gỡ lỗi, phát thanh) Sau đó, "Zygote", khởi tạo quá trình thiết lập máy ảo Dalvik và "Runtime" khởi tạo quá trình "Quản lý dịch vụ", một yếu tố quan trọng cho
"Binders" và IPC (Inter Process Communication)
(C) "Runtime": xử lý yêu cầu "Zygote" để bắt đầu một thể hiện mới của Dalvik chạy "System Server"
(D) Hai quá trình đầu tiên có khả năng xử lý đồ họa và âm thanh đầu ra
(E) Tất cả các thành phần khác của Android sau đó đƣợc khởi động
(nhƣ hình 1-4)
Quá trình giao tiếp trong (Inter Process Communication IPC):
Process B Process A
get Service
call foo (object)
Marshal proxy object Service
Trang 21tượng được sắp xếp Về phía dịch vụ B, Binder duy trì một chủ đề chung (rõ ràng với dịch vụ) Một trong các chủ đề trong nhóm chung là nhận cuộc gọi đến, xác định được đối tượng thực tế trong dịch vụ B và thực hiện cuộc gọi Giá trị trả về được gửi lại cho người nhận tương tự như vậy:
Hạn chế được thực hiện bằng cách sử dụng cơ chế khóa
Hình 1-6: Quản lý năng lượng
1.4 Kiến trúcAndroid GUI
Android GUI là một luồng đơn, hướng sự kiện và xây dựng trên một thư viện của các thành phần nestable Nền tảng của Android GUI là được tổ chức theo mô hình phổ biến Model-View-Controller
Hình 1-7: Kiến trúc Android GUI
Model: Model đại diện cho dữ liệu hoặc chứa dữ liệu Chúng ta có thể thấy nó
như là một cơ sở dữ liệu của hình ảnh trên thiết bị Có thể ví dụ, khi người dùng nghe một tập tin âm thanh, khi nhấp chuột vào button và nó kích hoạt sự kiện trong ứng
Trang 22dụng, bây giờ các ứng dụng sẽ có được dữ liệu từ dữ liệu lưu trữ hoặc cơ sở dữ liệu và như mỗi đầu vào và tạo ra dữ liệu để được gửi trở lại cho người sử dụng Đây chính là chế độ Model
View: View là một phần của các ứng dụng chịu trách nhiệm vẽ giao diện hiển thị
trên màn hình, gửi âm thanh tới loa, tạo ra thông tin phản hồi về xúc giác (cảm ứng) Theo ví dụ trên, phần hiển thị trong một chương trình nghe nhạccó thể chứa một thành phần hiển thị bìa album cho cho file âm thanh đang chạy Người dùng sẽ luôn luôn tương tác với lớp này Người sử dụng tác động tới lớp này sẽ kích hoạt sự kiện đó
và sẽ đi đến các chức năng tương ứng của ứng dụng
Controller: Controller là một phần của ứng dụng để đáp ứng hành động bên
ngoài: một sự kiện nhấn phím, một sự kiện chạm màn hình, cuộc gọi đến… được thực hiện như một hàng đợi sự kiện Hành động của người sử dụng, kiểm soát được thông qua bộ điều khiển và điều này sẽ chăm sóc tất cả các logic cần được thực hiện và chuẩn bị Model cần phải được gửi tới lớp View
1.5 Ứng dụng Android
Một ứng dụng Android là tập hợp của các thành phần Có 4 loại thành phần:
Activity: Một Activity là một thành phần giao diện người dùng tương ứng với mỗi màn hình mà người dùng tương tác để làm gì đó
Service: Một Service là một thành phần ứng dụng không có giao diện người
sử dụng để thực hiện các hoạt động lâu chạy ở chế độ nền (background)
Broadcast Receiver: Một broadcast receiver là một thành phần để phản ứng với những thông tin quảng bá trong toàn hệ thống (ví dụ: tắt màn hình, pin hết )
Content Provider: Một content provider là một thành phần dùng để lưu trữ
và truy xuất dữ liệu và làm cho nó có sẵn với tất cả ứng dụng Có nhiều loại khác nhau của content provider: audio, video, danh bạ… và bạn có thể cũng tạo ra provider cho riêng mình
có hai bước cần thiết:
Trang 23 Trong trường hợp ứng dụng chưa sẵn sàng chạy, hệ thống Android sẽ mang ứng dụng đó vào chu kỳ sống trong quá trình mới tách ra từ Zygote
Các thành phần bên trong ứng dụng cần được kích hoạt
Chú ý rằng trong trường hợp ứng dụng sẵn sàng chạy, thành phần mới được khởi tạo mặc định trong cùng quá trình
Như đề cập ở trên, IPC (giao tiếp giữa các thành phần) được thực hiện thông qua một đối tượng Context Như vậy, khi một thành phần A bên trong một ứng dụng cần
để kích hoạt thành phần B khác trong ứng dụng khác hoặc cung cấp cho nó một vài cái mới để thực hiện, về cơ bản nó sử dụng đối tượng Context để gửi một bản tin tới thành phần khác Trong trường hợp của một Activity, Service hoặc BroadcastReceiver, dạng nhiệm vụ này được gọi là một Intent - một cấu trúc dữ liệu bị động
Tuy nhiên Content Providers không kích hoạt thông qua Intens Thay vào đó, kích hoạt xảy ra trên yêu cầu từ một Content Resolver, hoạt động như một trung gian giữa các thành phần yêu cầu và Content Provider
1.5.2 Activity Back-Stack
Xem xét kịch bản sau (hình 1-8):
Hình 1-8: Activity back stack
Ta có màn hình Home Đây là Activity 1
Ta kích chuột trên biểu tượng ứng dụng Mail và thực hiện hành động chính trong ứng dụng Mail Đây là Activity 2
Bây giờ ta kích chuột trên Soạn Thư (Compose) và thực hiện hành động Soạn thư trong ứng dụng Mail Đây là Activity 3
Ta quyết định huỷ soạn tin mới và nhấn nút quay trở lại Ta quay trở lại Activity 2
Đây là những gì đã xảy ra ở background:
Khi một Activity bắt đầu một Activity khác, nó dừng và trạng thái của nó được lưu
Trang 24 Sau khi Activity 1 bắt đầu Activity 2, Activity 1 bị dừng và trạng thái của nó được lưu
Hệ thống ngăn xếp chính (back stack) với Activity mới nhất trên đầu và cũ nhất
ở dưới cùng
Khi người dùng nhấn phím back, Activity 3 bị dừng và Activity 2 được bắt đầu
từ trạng thái lưu của nó
Cách tiếp cận này cho phép Android chuyển đổi liên tục từ một ứng dụng sang ứng dụng khác một cách nhất quán
1.5.3 Nhiệm vụ Tasks
Trong kịch bản trên, giả sử rằng người dùng đã ở trong Soạn Thư, người đó lại quyết định gọi một vài người và ấn phím Home Điều này sẽ không ở back-stack, nhưng bắt đầu một stack mới Để làm được điều này, bộ các Activity trong stack đầu tiên cần vào trong background Điều này đạt được thông qua khái niệm Task - một đơn
vị gắn kết của các Activity Khi một task di chuyển vào background, tất cả các Activity trong Task bị dừng nhưng back-stack cho nhiệm vụ này vẫn còn nguyên vẹn, như vậy, khi người dùng trở lại Task, họ có thể tiếp tục ở nơi kết thúc Tuy nhiên, để tiết kiệm bộ nhớ, back-stack cho Task ở background là không được giữ lại trong một thời gian dài và nếu người dùng không quay trở lại Task, back stack sẽ bị xoá
Hình 1-9: Background và Foreground Task
1.5.4 Vòng đời của Activity
Vòng đời của một Activity bị ảnh hưởng bởi liên kết của nó với Activity khác, Task của nó và back-stack của nó Có 4 trạng thái cho một Activity:
Hoạt động: Nếu Activity là trong foreground của màn hình
Tạm dừng: Activity có thể nhìn thấy, nhưng có Activity khác trong
foreground và được người dùng sử dụng Điều này xảy ra nếu Activity khác
ở đầu, nhưng bị mờ hoặc vì nó không chiếm toàn bộ màn hình Trong trạng thái tạm dừng, đối tượng Activity được giữ trong bộ nhớ, duy trì tất cả các trạng thái của nó, thông tin thành viên và vẫn được đính bởi quản lý Window Tuy nhiên nó có thể bị giết trong điều kiện bộ nhớ giảm xuống cực
kỳ thấp
Trang 25 Bị dừng: Activity bị che hoàn toàn bởi một Activity khác Nó vẫn được lưu
trữ trong bộ nhớ, duy trì tất cả các trạng thái, thông tin thành viên, tuy nhiên người dùng không nhìn thấy vì cửa sổ của nó bị ẩn Activity như vậy thường
sẽ bịgiết bởi hệ thống khi bộ nhớ là cần thiết ở nơi khác
Bị hủy: Khi Activity tạm dừng hoặc bị dừng, hệ thống có thể hủy Activity
từ bộ nhớ bằng cách yêu cầu nó kết thúc hoặc kill process của nó Khi hiển thị lại nó phải khởi động lại hoàn toàn trạng thái trước của nó nhờ vào cơ
chế lưu trạng thái
Hình 1-10: Vòng đời của Activity
Lưu trạng thái Activity
Lưu ý rằng hệ thống hoàn toàn có thể tiêu diệt một Activity, thậm chí cả tiến trình mà Activity đang chạy, để lấy lại bộ nhớ Tuy nhiên, khi người dùng trở lại Activity (thông qua back stack), họ vẫn muốn tiếp tục tại thời điểm mà họ đã rời khỏi
Để làm được điều này, một Activity phải lưu trạng thái của nó Điều đó xảy ra thông qua phương thức Activity.onSaveInstanceState()
Trang 26Hình 1-11: Lưu trạng thái Activity
1.5.5 Vòng đời của Process
Hệ thống Android có thể cần để kill một tiến trình để lấy lại bộ nhớ Để chắc chắn rằng điều này tác động tối thiểu đến người dùng, Android xếp hạng các Process thành hạng được ưu tiên như sau:
Foreground Process: Một process là cần thiết cho những gì người dùng hiện
đang làm Như vậy process bị kill chỉ là giải pháp cuối cùng
Visible Process: Đây là Process không trong foreground nhưng có thể ảnh
hưởng đến những gì người dùng nhìn thấy trên màn hình Ví dụ nó có thể tổ chức một Activity tạm dừng Một process như vậy sẽ không bị kill trừ khi làm như vậy là cần thiết để giữ tất cả các process ở foreground đang hoạt
động
Service Procress: Một process đang chạy một service và không là một trong
hai loại trên Ví dụ service có thể đang chơi nhạc hoặc tải cái gì đó Hệ thống
sẽ tiếp tục giữ cho process đang chạy, trừ khi không đủ bộ nhớ để giữ
Foreground và Visible process đang chạy
Background Process: Một process tổ chức cho một Activity hiện tại không
hiển thị cho người dùng (Activity bị dừng) Một process như vậy không tác động đến người dùng (nếu vòng đời của Activity được thực hiện chính xác và trạng thái Activity được lưu và phục hồi) Hệ thống có thể kill process loại
Trang 27này bất cứ lúc nào Thông thường, có nhiều background process đang chạy và
hệ thống lưu trữ một danh sách LRU được sử dụng để kill process như vậy
Process rỗng: Mộtprocess rỗng không tổ chức bất kỳ một thành phần nào hoạt
động Lý do duy nhất một process như vậy được giữ sống ở nơi đầu tiên của
bộ nhớ đệm và cải thiện thời gian khởi động Hệ thống thường xuyên kill process như vậy để duy trì cân bằng giữa các quá trình lưu trữ và các lưu trữ
kernel cơ bản
Tất nhiên, như vậy có thể xảy ra rằng một Process ưu tiên cao hơn lại phụ thuộc vào một Process ưu tiên thấp hơn Trong trường hợp này việc xếp hạng Process được tăng lên mức tương tự như của quá trình phụ thuộc
Một tình huống mà bảng xếp hạng (ưu tiên các Process) này tác động trực tiếp là: Ứng dụng của bạn cần tải cái gì đó lớn và có thể mất thời gian và người dùng thích di chuyển ra ngoài activity của ứng dụng để làm việc khác.Nếu bạn sinh ra một thread nhân công làm cho quá trình này và người dùng di chuyển ra ngoài, thì process trở thành background process.Thay vì vậy, nếu bạn sinh ra một dịch vụ, process sẽ là service process và ít có khả năng bị kill
1.5.6 Service
Như đã đề cập trước, một Service là một loại thành phần được sử dụng để thực hiện hoạt động background và không cung cấp giao diện người dùng Một thành phần ứng dụng có thể bắt đầu một service và thậm chí nếu người dùng chuyển ra ngoài của ứng dụng, service này sẽ tiếp tục chạy Trường hợp sử dụng điển hình như khi nghe nhạc và tải về tệp tin Android đảm bảo rằng một process chạy một Service không bị kill càng nhiều càng tốt (nhìn vòng đời process trên)
Lưu ý rằng service được mặc định chạy trên thread giao diện người dùng chính trong cùng một process Điều này có nghĩa là nếu nó thực hiện một hoạt động ngăn chặn, giao diện người dùng sẽ không đáp ứng từ thread sẽ không kích hoạt để chạy Activity Để đối phó điều này, ta nên chạy một thread nhân công trong service
Tóm tắt
Ở chương này ta đã tìm hiểu cơ bản về hệ điều hành mã nguồn mở dành cho các thiết bị di động Android Cũng như những tính năng nổi bật mà Android đem lại Chương tiếp theo ta sẽ bắt đầu giới thiệu về các giao thức được sử dụng trong
chương trình “Quản lý, giám sát và điều khiển thiết bị bằng phần mềm trên Android qua mạng điện thoại di động”
Trang 28
CHƯƠNG 2: CÁC GIAO THỨC SỬ DỤNG
2.1 Giao thức TCP/IP
Mô hình OSI là mô hình tham chiếu được tổ chức ISO xây dựng nhằm tạo một chuẩn phục vụ việc nối kết các hệ thống mở Tuy nhiên, do nhiều lý do khác nhau mà OSI không được sử dụng trong thực tế mà thay vào đó được sử dụng rộng rãi nhất là
mô hình kiến trúc mạng (giao thức) TCP/IP Hầu như tất cả các hệ điều hành hiện tại đều có cài đặt giao thức TCP/IP Trong phần này sẽ giới thiệu sơ lược về mô hình TCP/IP Thông tin chi tiết có thể xem trong tài liệu [4]
2.1.1 Khái niệm
Giao thức (Protocol) là một khái niệm cơ bản của mạng truyền thông Có thể hiểu một cách khái quát đó là tập hợp tất cả các quy tắc cần thiết (các thủ tục, các khuôn dạng dữ liệu, các cơ chế phụ trợ ) cho phép các giao thức trao đổi thông tin trên mạng được thực hiện một cách chính xác và an toàn Có rất nhiều họ giao thức đang được sử dụng trên mạng truyền thông hiện nay như IEEE802.X dùng trong mạng cục bộ, CCITT (nay là ITU) dùng cho liên mạng diện rộng và đặc biệt là họ giao thức chuẩn của ISO (tổ chức tiêu chuẩn hoá quốc tế) dựa trên mô hình tham chiếu bảy lớp cho việc kết nối các hệ thống mở Trên Internet họ giao thức được sử dụng là giao thức TCP/IP Giao thức TCP/IP, ngắn gọn là TCP/IP (tiếng Anh: Internet protocol suite hoặc IP suite hoặc TCP/IP protocol suite - giao thức liên mạng), là một giao thức truyền thông cài đặt chồng giao thức mà Internet và hầu hết các mạng máy tính thương mại đang chạy trên đó Giao thức này được đặt tên theo hai giao thức chính của nó là TCP (giao thức Điều khiển Giao vận) và IP (giao thức Liên mạng) Chúng cũng là hai giao thức đầu tiên được định nghĩa
Như nhiều giao thức khác, giao thức TCP/IP có thể được coi là một tập hợp các tầng, mỗi tầng giải quyết một tập các vấn đề có liên quan đến việc truyền dữ liệu và cung cấp cho các giao thức tầng cấp trên một dịch vụ được định nghĩa rõ ràng, dựa trên việc sử dụng các dịch vụ của các tầng thấp hơn Về mặt lôgic, các tầng trên gần với người dùng hơn và làm việc với dữ liệu trừu tượng hơn, chúng dựa vào các giao thức tầng cấp dưới để biến đổi dữ liệu thành các dạng mà cuối cùng có thể được truyền
đi một cách vật lý
2.1.2 Mục đích và nguồn gốc
Giao tiếp thông tin đã trở thành nhu cầu không thể thiếu trong tất cả mọi lĩnh vực hoạt động Mạng máy tính ra đời phần nào đó đáp ứng được nhu cầu đó Phạm vi lúc đầu của các mạng bị hạn chế trong một nhóm làm việc, một cơ quan, công ty trong một khu vực Tuy nhiên thực tế của những nhu cầu cần trao đổi thông tin trong nhiều lĩnh vực khác nhau, về nhiều chủ đề khác nhau, giữa các tổ chức, các cơ quan là không có giới hạn Vì vậy nhu cầu cần kết nối các mạng khác nhau của các tổ chức
Trang 29khác nhau để trao đổi thông tin là thực sự cần thiết Nhưng thật không may là hầu hết các mạng của các công ty, các cơ quan đều là các thực thể độc lập, được thiết lập để phục vụ nhu cầu trao đổi thông tin của bản thân các tổ chức đó Các mạng này có thể được xây dựng từ những kĩ thuật phần cứng khác nhau để phù hợp với những vấn đề giao tiếp thông tin của riêng họ Điều này chính là một cản trở cho việc xây dựng một mạng chung, bởi vì sẽ không có một kĩ thuật phần cứng riêng nào đủ đáp ứng cho việc xây dựng một mạng chung thoả mãn nhu cầu người sử dụng Người sử dụng cần một mạng tốc độ cao để nối các máy, nhưng những mạng như vậy không thể được mở rộng trên những khoảng cách lớn Nhu cầu về một kỹ thuật mới mà có thể kết nối được nhiều mạng vật lý có cấu trúc khác hẳn nhau là thật sự cần thiết Nhận thức được điều
đó, trong quá trình phát triển mạng ARPANET của mình, tổ chức ARPA (Advanced Research Projects Agency) đó tập trung nghiên cứu nhằm đưa ra một kỹ thuật thỏa mãn những yêu cầu trên Kỹ thuật ARPA bao gồm một thiết lập của các chuẩn mạng xác định từ những chi tiết của việc làm thế nào để các máy tính có thể truyền thông với nhau cũng như một sự thiết lập các quy ước cho kết nối mạng, lưu thông và chọn đường Kỹ thuật đó được phát triển đầy đủ và được đưa ra với tên gọi chính xác là TCP/IP Iternet Protocol Suit và thường được gọi tắt là TCP/IP Dùng TCT/IP người ta
có thể kết nối được tất cả các mạng bên trong công ty của họ hoặc có thể kết nối giữa các mạng của các công ty, các tổ chức khác nhau với nhau
2.1.3 Đặc điểm
Là giao thức chuẩn mở và sẵn có, vì nó không thuộc sở hữu của bất cứ một tổ chức nào; các đặc tả thì sẵn có và rộng rãi Vì vậy bất kì ai cũng có thể xây dựng phần mềm truyền thông qua mạng máy tính dựa trên nó
TCP/IP độc lập với phần cứng mạng vật lý, điều này cho phép TCP/IP có thể được dùng để kết nối nhiều loại mạng có kiến trúc vật lý khác nhau như: Ethernet, Tokenring, FDDI, X25, ATM
TCP/IP dùng địa chỉ IP để định danh các host trên mạng tạo ra một mạng ảo thống nhất khi kết nối mạng
2.1.4 Cấu trúc phân tầng của TCP/IP
Như ta đó nói ở phần trên, TCP/IP là mô hình mở để kết nối mạng Do vậy, nó cũng được thiết kế theo kiến trúc phân tầng tương tự như mô hình OSI Giao thức TCP/IP được thiết kế gồm 4 tầng được mô tả theo hình 2-1
Trang 30Hình 2-1: Giao thức TCP/IP
2.1.5 Đóng gói dữ liệu trong TCP/IP
Giao thức TCP/IP dùng sự đóng gói dữ liệu nhằm trừu tượng hóa các giao thức
và dịch vụ, nói cách khác là các giao thức ở tầng cao hơn sử dụng các giao thức ở tầng thấp hơn nhằm đạt được mục đích của mình bằng cách đóng gói dữ liệu giống như ở ví
dụ trong hình 2-2
Hình 2-2: Cấu trúc gói Dữ liệu
Những tầng trên đỉnh gần với người sử dụng hơn, những tầng thấp nhất gần với thiết bị truyền thông hơn Trong mỗi tầng là một nhóm nhiều giao thức, trong đó có một giao thức để phục vụ tầng trên của nó và một giao thức sử dụng dịch vụ của tầng dưới của nó (ngoại trừ tầng đỉnh và tầng đáy)
Bảng 2-1 liệt kê một số giao thức của các tầng:
Trang 31Bảng 2-1: Bảng giao thức trên các tầng của TCP/IP
Application DNS, TFTP, TLS/SSL, FTP, Gopher, HTTP, IMAP, IRC, NNTP, POP3,
SIP, SMTP,SMPP, SNMP, SSH, Telnet, Echo, RTP, PNRP, rlogin, ENRP Transport TCP, UDP, DCCP, SCTP, IL, RUDP, RSVP
Internet IP (IPv4, IPv6), ICMP, IGMP, ICMPv6
Link ATM, Ethernet, Token Ring, Frame Relay,…
2.1.6 Các tầng trong mô hình TCP/IP
Để cho các máy tính trao đổi dữ liệu với nhau TCP/IP sử dụng mô hình truyền thông 4 tầng hay cũng gọi là mô Hình DoD (mô hình của Bộ Quốc Phòng Hoa Kỳ) Các tầng trong mô hình này là (theo thứ tự từ trên xuống):
Tầng ứng Dụng (Application Layer)
Tầng Giao Vận (Transport Layer)
Tầng Liên Mạng (Internet Layer)
Tầng Liên Kết (Link Layer)
Hình 2-3: Mô Hình TCP/IP
2.1.6.1 Tầng ứng dụng (Application Layer)
Đây là tầng cao nhất trong cấu trúc phân lớp của TCP/IP Tầng này bao gồm tất
cả các chuơng trình ứng dụng sử dụng các dịch vụ sẵn có thông qua một chồng giao thức TCP/IP Các chương trình ứng dụng tương tác với một trong các giao thức của tầng giao vận để truyền hoặc nhận dữ liệu Mỗi chương trình ứng dụng lựa chọn một kiểu giao thức thích hợp cho công việc của nó Chương trình ứng dụng chuyển dữ liệu theo mẫu mà tầng giao vận yêu cầu
Một số giao thức thông dụng trong tầng này là:
Trang 32DHCP (Dynamic Host Configuration Protocol): Giao Thức Cấu Hình Trạm Động
DNS (Domain Name System): Hệ Thống Tên Miền
SNMP (Simple Network Management Protocol): Giao Thức Quản Lý Mạng Đơn Giản
FTP (File Transfer Protocol): Giao Thức Truyền Tập Tin
TFTP (Trivial File Transfer Protocol): Giao Thức Truyền Tập Tin Bình Thường
SMTP (Simple Mail Transfer Protocol): Giao Thức Truyền Thư Đơn Giản
TELNET
2.1.6.2 Tầng giao vận (Transport Layer)
Nhiệm vụ trước tiên của tầng giao vận là cung cấp sự giao tiếp thông tin giữa các chương trình ứng dụng Mỗi quá trình giao tiếp được gọi là end-to-end Tầng giao vận cũng có thể điều chỉnh lưu lượng luồng thông tin Nó cũng cung cấp một sự vận chuyển tin cậy, đảm bảo rằng dữ liệu đến mà không bị lỗi Để làm như vậy, phần mềm giao thức hỗ trợ để bên nhận có thể gửi lại các thông báo xác nhận về việc thu dữ liệu
và bên gửi có thể truyền lại các gói tin bị mất hoặc bị lỗi Phần mềm giao thức chia dữ liệu ra thành những đơn vị dữ liệu nhỏ hơn (thường được gọi là các Packets) và chuyển mỗi packet cùng với địa chỉ đích tới tầng tiếp theo để tiếp tục quá trình truyền dẫn
Hai giao thức chính trong tầng này gồm:
UDP (User Datagram Protocol): Cũng gọi là Giao Thức Gói Người Dùng UDP cung cấp các kênh truyền thông phi kết nối nên nó không đảm bảo truyền dữ liệu một cách tin cậy Các ứng dụng dùng UDP thường chỉ truyền những gói
có kích thước nhỏ, độ tin cậy dữ liệu phụ thuộc vào từng ứng dụng
TCP (Transmission Control Protocol): Ngược lại với UDP, TCP cung cấp các kênh truyền thông hướng kết nối và đảm bảo truyền dữ liệu một cách tin cậy TCP thường truyền các gói tin có kích thước lýn và yêu cầu phía nhận xác nhận về các gói tin đó nhận
2.1.6.3 Tầng Internet (Internet Layer)
Tầng mạng xử lý giao tiếp thông tin từ một máy này tới một máy khác Nó chấp nhận một yêu cầu để gửi một gói từ từ tầng giao vận cùng với một định danh của máy đích mà gói tin sẽ được gửi tới Ví dụ với giao thức TCP hay UDP của tầng giao vận,
nó sẽ bọc gói tin trong một IP Datagram, điền đầy vào trong phần header, sử dụng giải thuật chọn đường để quyết định là giao phát gói tin trực tiếp hay là gửi nó tới một Router và chuyển datagram tới giao diện phối ghép mạng thích hợp cho việc truyền dẫn Tầng mạng cũng xử lý các Datagram đến, kiểm tra tính hợp lệ của chúng và sử
Trang 33dụng giải thuật chọn đường để quyết định là datagram sẽ được xử lý cục bộ hay là sẽ được chuyển đi tiếp Đối với các datagrams có địa chỉ đích cục bộ, thì phần mềm tầng mạng sẽ xem phần header của các datagram đó và chọn trong số các giao thức tầng giao vận một giao thức thích hợp để xử lý packet
Bốn giao thức quan trọng nhất trong tầng này gồm:
IP (Internet Protocol): Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích
ARP (Address Resolution Protocol): Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC
ICMP (Internet Control Message Protocol): Có chức năng thông báo lỗi trong trường hợp truyền dữ liệu bị hỏng
IGMP (Internet Group Management Protocol): Có chức năng điều khiển truyền
đa hướng (Multicast)
2.1.6.4 Tầng liên kết (Link Layer)
Là tầng thấp nhất của giao thức TCP/IP, chịu trách nhiệm về việc chấp nhận các datagram của tầng trên (ví dụ IP datagram) và việc truyền phát chúng trên một mạng xác định Theo quan điểm hiện nay mô hình TCP/IP bao gồm các đặc tả vật lý, nói cách khác tầng liên kết bao gồm vấn đề về phần cứng hay việc truyền tín hiệu vật lý nữa
Tầng này gồm các thiết bị phần cứng vật lí chẳng hạn như Card Mạng và Cáp Mạng Một Card Mạng chẳng hạn card Ethernet chứa 1 số HEX 12 kí tự (00-18-37-03-C0-F4) được gọi là Địa Chỉ MAC (Media Access Control) hay Địa Chỉ Truy Nhập Phương Tiện MAC đóng vai trò quan trọng trong việc gán địa chỉ và truyền dữ liệu Một số giao thức tiêu biểu thuộc tầng này gồm
ATM (Asynchronous Transfer Mode)
SMS (Short Message Service)là dịch vụ tin nhắn ngắn, cung cấp một phương tiện
để chuyển tin nhắn ngắn giữa các trạm di động MS (Mobile Station) và thực thể tin nhắn ngắn SME (Short Message Entity) thông qua một trung tâm dịch vụ SC (Service Centrel) Sau đây là mô tả sơ lược về dịch vụ này, chi tiết hơn sẽ được trình bày trong tài liệu tham khảo [8]
Trang 34SC phục vụ nhƣ là một chức năng chuyển tiếp của truyền thông tin giữa các trạm
di động MS và SME Hai dịch vụ điểm - điểm khác nhau đƣợc định nghĩa:
Bản tin ngắn MT (Mobile Terminated): Bản tin ngắn đƣợc gửi từ SC tới MS Hoạt động này đƣợc gọi là SM cung cấp (delivery)
Bản tin ngắn MO (Mobile Originated): Bản tin ngắn đƣợc gửi từ MS tới SME thông qua SC Hoạt động này đƣợc gọi là SM đệ trình (submitting)
Hình 2-4: Quan hệ giữa MS và SC
Để nhấn mạnh sự khác nhau giữa hai bản tin MO và MT, tìm hiểu gửi tin trong mạng GSM:
Hình 2-5: Quá trình gửi tin MO trong mạng GSM
(1) Hoạt động này tham gia vào một thủ tục đƣợc sử dụng để chuyển SM từ MS đến MSC
(2) MSC sẽ chuyển tiếp SM đến SMS-IWMSC, nơi phục vụ nhƣ một chuyển tiếp giữa PLMN và SC
Trang 35(3) SMS-IWMSC chuyển SM đến SC SC lưu các SM trong bộ nhớ của nó và sẽ
cố gắng gửi tới đích là một MS khác, trong trường hợp thủ tục SM-MT sẽ diễn ra hoặc
sẽ tới SME khác ngoài PLMN
(4) Chuyển các bản tin xác nhận Ack
(5) SMS-IWMSC gửi một bản tin Ack chuyển tiếp lại MSC
(6) Chuyển tiếp MSC thừa nhận trở lại MS
Hình 2-6: Quá trình gửi tin MT trong mạng GSM
(1), (6) Hoạt động (1) SMS gửi từ SC tới SMS-GMSC Hoạt động (6) là một báo cáo quá trình phân phối hoặc là một báo cáo lỗi được gửi từ SMS-GSMC tới SC sau khi cố gắng chuyển SM SMS-GMSC sẽ gửi báo cáo lỗi khi nó nhận được dấu hiệu của các đối tượng khác (MSC, HLR)
(2) Hoạt động này gồm cả „a‟ và „b‟, SMS-GMSC truy vấn HLR lấy các thông tin cần thiết để chuyển tiếp bản tin ngắn
(3), (5) Hoạt động cung cấp một phương tiện cho các tin nhắn SMS-GMSC chuyển mộttin nhắn ngắn đến MSC mà MS hiện đang nằm
(4) Hoạt động được sử dụng để chuyển một bản tin ngắn từ MSC tới MS
Trang 36Hình 2-7: Vòng đời của tin nhắn
Nếu bản tin ngắn được gửi từ trạm di động, nó được lưu trong cơ sở dữ liệu Và bản tin được đánh dấu là “Trạng thái bắt đầu” Nếu bản tin ngắn được gửi từ ứng dụng thì nó sẽ được lưu ở cơ sở dữ liệu khác và được gọi là “giao dịch”, để phân biệt nó với tin nhắn thông thường khác
Một xác nhận được gửi tới nguồn rằng bản tin ngắn đã được nhận và lưu trữ
Các tin nhắn được gửi tới mục tiêu và được đánh dấu là “được gửi”
Nếu phản hồi từ mục tiêu phân phối thành công hoặc thường xuyên thất bại thì bản tin được đánh dấu là “Trạng thái kết thúc”
Nếu phản hồi từ mục tiêu là lỗi tạm thời (ví dụ điện thoại không thể truy cập), bản tin sẽ được phân phối vào lúc khác và được đánh dấu là “Chờ gửi lại”
Nếu bản tin là “Trạng thái kết thúc”, thì một thông báo sẽ được gửi đến nguồn gửi Một bản tin thông báo có thể định dạng giống như bản tin ngắn và cũng
sẽ trải qua các thủ tục các bước như ở trên, trừ bước này
Nếu bản tin là “Chờ gửi lại” thì khi thời gian phân phối mới tới, bạn tin lại được gửi lại như thế
Trang 37CHƯƠNG 3: TỔNG QUAN VỀ MẠNG THÔNG TIN DI ĐỘNG
(VINAPHONE)
Mạng di động Vinaphone là một trong 2 mạng di động đầu tiên được cấp phép cung cấp dịch vụ tại thị trường Việt Nam sau Mobifone và đều thuộc Tập đoàn Bưu chính Viễn thông Việt Nam (VNPT) Mạng Vinaphone từ khi thành lập năm 1996 đã triển khai hệ thống thông tin di động GSM 900, sau đó mở rộng băng tần thêm GSM
1800 và gần đây nhất vào tháng 10/2009 đã trở thành mạng di động đầu tiên ở Việt Nam cung cấp dịch vụ 3G theo chuẩn WCDMA
Dưới đây sẽ trình bày một số đặc điểm cấu trúc hệ thống thông tin di động Vinaphone đối với cả hệ thống 2G GSM và 3G WCDMA Thông tin cụ thể hơn trong tài liệu tham khảo [1, 2]
3.1 Cấu trúc, các thành phần chức năng hệ thống GSM
Hình 3-1: Cấu trúc hệ thống thông tin di động trong hệ thống GSM
Mạng Vinaphone ban đầu sử dụng GSM 900 là hệ thống thông tin di động dùng băng tần xung quanh tần số 900 MHz (890 - 960) được chia thành 2 dải tần:
Dải tần từ 890 – 915 MHz dùng cho đường lên từ MS đến BTS (Uplink)
Dải tần từ 935 – 960 MHz dùng cho đường xuống từ BTS đến MS (Downlink)
Trang 38Khoảng cách giữa các sóng mang trong hệ thống GSM là 200 KHz mà hệ thống GSM có 2 băng tần rộng 25 MHz bao gồm 25MHz / 200 = 125 kênh Trong đó kênh 0
là dãy bảo vệ, còn các kênh từ 1 – 124 được gọi là kênh tần số vô tuyến tuyệt đối Trong đó, Vinaphone được cấp phát kênh từ 1 – 41, Viettel từ kênh 42 – 83 và Mobifone từ kênh 84 -124
Tương tự, với dải băng tần 1800 MHz dùng cho đường lên từ 1710 – 1785 MHz vàđường xuống từ 1805 – 1880 MHz, Vinaphone được cấp dải kênh với tần số trong khoảng từ 1710.1 – 1723.5 MHz (Uplink) và 1805.1 – 1818.5 MHz (Downlink)
Do Vinaphone sử dụng hệ thống GSM nên về cơ bản sẽ có cấu trúc tương tự như cấu trúc chuẩn của hệ thống GSM do ETSI quy định Cấu trúc hệ thống thông tin di động GSM được phân chia thành các thành phần cơ bản dưới đây:
Nó bao gồm các bộ phận điều khiển và quản lý toàn bộ hệ thống để đạt được hiệu quả cao đồng thời phải đảm bảo tuyệt đối về an ninh và an toàn
HLR (Home Location Register): Bộ ghi định vị thưởng trú
Bộ ghi định vị thường trú có chức năng quản lý toàn bộ dữ liệu thuê bao Nó là
cơ sở dữ liệu thuê bao để quản lý nhận thực, cấp phát, hủy, quản lý các dịch vụ người dùng
VLR (Visitor Location Register): Bộ ghi định vị tạm trú
Trang 39Bộ ghi định vị tạm trú thường nằm kết hợp trong MSC Trong thời gian máy di động cập nhật vị trí, dữ liệu thuê bao được chuyển từ HLR tới VLR hiện tại Dữ liệu này được lưu trữ trong VLR trong suốt thời gian mà MS di chuyển trong vùng này VLR sẽ cung cấp dữ liệu cho thuê bao bất kỳ lúc bào nó cần cho việc xử lý cuộc gọi Khi MS di động sang một vùng phục vụ của MSC mới, MSC/VLR cũ sẽ thông báo cho HLR và HLR lại tiếp tục ấn định cho MSC/VLR mới quản lý thuê bao đang di động trên
AUC (Authencation Centre): Trung tâm nhận thực
Khi một thuê bao muốn truy nhập mạng, VLR đang quản lý sẽ kiểm tra thông tin yêu cầu của thuê bao có được chấp nhận hay không, nghĩa là nó thực hiện một sự nhận thực VLR sử dụng những thông số nhận thực được gọi là những bộ ba, nó được tạo ra một cách liên tục và riêng biệt cho mỗi thuê bao di động được cung cấp bởi trung tâm nhận thực AUC Thông thường, AUC được kết hợp với HLR
EIR (Equipment Identification Register): Bộ ghi nhận dạng thiết bị
EIR kiểm tra tính hợp lệ của thuê bao dựa trên yêu cầu đặc tính thiết bị di động quốc tế theo số IMEI từ MS sau đó gửi nó tới bộ ghi nhận dạng thiết bị EIR Trong EIR, IMEI của toàn bộ thiết bị di động được sử dụng được phân chia thành các danh sách để quản lý: thiết bị di động được chấp nhận, theo dõi, không được chấp nhận (whitelist, greylist, blacklist) EIR kiểm tra IMEI của MS và đưa vào một trong các danh sách phân loại trên chuyển kết quả tới MSC
3.1.2 Hệ thống trạm gốc
Hệ thống trạm gốc bao gồm các khối chức năng chính là BSC và BTS:
BSC (Base Station Controller): Bộ điều khiển trạm gốc
Bộ điều khiển trạm gốc BSC cung cấp những chức năng thông minh điều khiển mọi hoạt động của hệ thống con vô tuyến Một BSC có thể điều khiển nhiều BTS Nó phân phối sự kết nối các kênh lưu lượng (Traffic channel) kèm báo hiệu từ hệ thống chuyển mạch tới các cell vô tuyến BTS, ngoài ra nó còn thực hiện quá trình chuyển giao cùng với MSC
BTS (Base Transceiver Station): Trạm thu phát gốc
Trạm thu phát gốc BTS bao gồm các thiết bị thu phát, anten và xử lý tín hiệu đặc thù cho giao diện vô tuyến BTS được thiết lập tại tâm của mỗi tâm của mỗi tế bào, nó thông tin đến các MS thông qua giao diện vô tuyến Um, có nhiệm vụ cung cấp những kết nối vô tuyến giữa MS và BTS để MS có thể thực hiện được các dịch vụ
Một bộ phận quan trọng của BTS là TRAU là khối chuyển đổi mã hóa và tốc độ
TRAU (Transcoder/Adapter Rate Unit)
Trang 40Khối chuyển đổi mã hóa thoại và tốc độ TRAU gồm bộ chuyển đổi mã hóa TC (Transcoder) và bộ tương thích tốc độ RA (Rate Adaptor) thực hiện chuyển đổi luồng
64 kbit/s thoại và dữ liệu tương ứng từ MSC thành luồng thoại, dữ liệu có tốc độ thấp dùng cho giao diện vô tuyến tại BTS là 16 kbit/s
TRAU là một bộ phận của BTS nhưng cũng có thể đặt nó cách xa BTS và thậm chí trong nhiều trường hợp nó được đặt giữa MSC &BSC Hình 3-2 mô tả các vị trí có thể đặt TRAU Đối với các nhà khai thác như Vinaphone, Mobifone, TRAU thường được đặt gần MSC để tiết kiệm đường truyền dẫn đến BSC qua luồng E1 PCM30
Hình 3-2: Cấu trúc ghép nối TRAU tại BTS, BSC, MSC
3.1.3 Hệ thống hỗ trợ giám sát OSS
Tất cả mọi sự hoạt động, sự kiểm tra và sự bảo trì cho tất cả những thành phần mạng SS, BSS (BSC, BTS, TRAU) có thể được thực hiện ở trung tâm OMC, gọi là trung tâm vận hành và bảo dưỡng OMC được liên kết với những phần tử SS và BSS thông qua một mạng dữ liệu gói X25
Hệ thống OMC bao gồm một hoặc nhiều OMC Đối với riêng hệ thống hỗ trợ giám sát mạng GSM thì được phân ra là OMC – R, OMC – S tương ứng với việc quản
lý phần vô tuyến, phần chuyển mạch Khi thêm các thành phần mạng gói như GPRS thì sẽ có thêm thành phần OMC– G, điều này được thể hiện trong hình vẽ các kết nối giữa thành phần mạng lõiGSM/GPRS/EDGE của Vinaphone
Như ta thấy trên hình vẽ (hình 3-3), ngoài các thành phần cơ bản trong cấu trúc
hệ thống GSM theo chuẩn 3GPP đã trình bày, còn có rất nhiều các thành phần khác nhằm duy trì các dịch vụ người dùng ví dụ như hệ thống IN để quản lý các thuê bao trả trước, hệ thống SMSC để thực hiện các dịch vụ liên quan đến hệ thống nhắn tin, các điểm tập trung báo hiệu STP… Các kết nối giữa các thành phần MSC, TSC, STP, HLR được thực hiện trên nhiều giao diện E1, STM1 tùy theo dung lượng hướng kết nối Trong đó luồng PCM 2Mbit/s là giao diện vật lý truyền thống mang các kênh