Đề tài Phần mềm truyền điện văn sử dụng trong hàng không
Đây là chương trình trên máy tính dùng để truyền nhận các gói TCP giữa trạm điều khiển và máy bay, được kết nối với đường truyền internet công cộng ADSL.
Chương trình ứng dụng được xây dựng trên lớp TCP cho phép nâng cao tính linh động của ứng dụng, do không phải phụ thuộc vào các ứng dụng ở lớp cao hơn như FTP, HTTP, đồng thời cho phép giảm bớt dữ liệu lưu thông trên đường truyền, tiết kiệm chi phí duy trì hệ thống, do không phải thêm vào các protocol tương thích với các ứng dụng ở các lớp cao. Thực ra có hai sự lựa chọn ở đây, đó là TCP và UDP. Đây là hai phương thức truyền nhận dữ liệu phổ biến trong các ứng dụng liên quan đến internet.
22 trang |
Chia sẻ: lylyngoc | Lượt xem: 2457 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Phần mềm truyền điện văn sử dụng trong hàng không, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ-VIỄN THÔNG
***********
BÁO CÁO BÀI TẬP LỚN
ĐỀ TÀI: PHẦN MỀM TRUYỀN ĐIỆN VĂN SỬ DỤNG TRONG HÀNG KHÔNG.
Thầy giáo hướng dẫn: TS.Đỗ Trọng Tuấn
Thực hiện : Nguyễn Thành Đạt
Nguyễn Thanh Tuấn
Hà Nội, 07/07/2013
Tổng quan về mạng thông tin hàng không (ATN)
Khái niệm về mạng ATN
Mạng ATN được xem là cơ sở hạ tầng liên mạng cho mạng thông tin hàng không.ATN sử dụng một tập các giao thức truyền dữ liệu dựa trên mô hình OSI của tổ chức định chuẩn quốc tế ISO để liên kết các hệ thống liên lạc air-ground và ground-ground với nhau.
Mạng ATN bao gồm các ứng dụng và các dịch vụ truyền tin mà cho phép các mạng con ground-ground , air-ground của hàng không hoạt động được với nhau dựa trên các dịch vụ giao thức thông thường nhưng dựa trên mô hình OSI của ISO.
Hình 1: Mô hình mạng ATN
2.Chức năng của ATN
Mạng ATN và các tiến trình ứng dụng tương ứng được thiết lập nhằm hỗ trợ cho hệ thống CNS/STM. Mạng ATN có những chức năng sau:
Mạng chuyên dụng và dành riêng để cung cấp các dịch vụ truyền dữ liệu cho các tổ chức cung cấp dịch vụ không lưu (ATM) và hàng không theo hình thức sau:
+ Công tác thông tin cho dịch vụ không lưu(ATSC)
+ Công tác điều hành khai thác hàng không (AOC)
+ Công tác thông tin phục vụ cho các hãng hàng không (AAC)
+ Công tác thông tin cho hành khách (APC)
Mạng cung cấp, theo nghĩa hoàn toàn trong suốt với người dùng, dịch vụ truyền từ người dùng tới người dùng tin cậy và cho phép các dịch vụ không lưu cung cấp dữ liệu an toàn và hiệu quả giữa :
+ Các hệ thống trên máy bay và hệ thống dưới đất
+ Các hệ thống dưới đất.
Cung cấp các dịch vụ truyền tin, giám sát và thông tin hàng không hỗ trợ các dịch vụ quản lý không lưu (ATMS):
+ Dịch vụ không lưu ATS :
Dịch vụ kiểm soát không lưu ATC
Dịch vụ thông tin bay FIS
Dịch vụ cảnh báo
+ Quản lý luồng không lưu ATFM
+ Quản lý bầu trời Airspace Management
3.Các ứng dụng của ATN
Ứng dụng Ground-Ground
+ Hệ thống AMHS
+ Thông tin giữa các trung tâm bên ngoài (ICC) : trao đổi dữ liệu chuyển giao ATS
Ứng dụng Air-Ground
+ Quản lí ngữ cảnh
+ Liên lạc dữ liệu giữa kiểm soát viên và người lái (CPDLC)
+ Hệ thống giám sát tự động phụ thuộc (ADS)
+ Dịch vụ thông tin chuyến bay (Flight Information Service )
Tổng quan giao thức TCP/IP
Trong phạm vi bài tập chúng em sử dụng truyền dữ liệu qua giao thức TCP/IP
Giao thức TCP/IP
Bộ giao thức TCP/IP, ngắn gọn là TCP/IP ( Internet protocol suite hoặc IP suite hoặc TCP/IP protocol suite - bộ giao thức liên mạng), là một bộ các 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 đó. Bộ 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).
Hình 2: Mô hình TCP/IP
Giao thức TCP gồm có 4 tầng :
Application:
Tầng ứng dụng là nơi các chương trình mạng thường dùng nhất làm việc nhằm liên lạc giữa các nút trong một mạng.
Giao tiếp xảy ra trong tầng này là tùy theo các ứng dụng cụ thể và dữ liệu được truyền từ chương trình, trong định dạng được sử dụng nội bộ bởi ứng dụng này, và được đóng gói theo một giao thức tầng giao vận.
Do chồng TCP/IP không có tầng nào nằm giữa ứng dụng và các tầng giao vận, tầng ứng dụng trong bộ TCP/IP phải bao gồm các giao thức hoạt động như các giao thức tại tầng trình diễn và tầng phiên của mô hình OSI. Việc này thường được thực hiện qua các thư viện lập trình.
Dữ liệu thực để gửi qua mạng được truyền cho tầng ứng dụng, nơi nó được đóng gói theo giao thức tầng ứng dụng. Từ đó, dữ liệu được truyền xuống giao thức tầng thấp tại tầng giao vận.
Hai giao thức tầng thấp thông dụng nhất là TCP và UDP. Mỗi ứng dụng sử dụng dịch vụ của một trong hai giao thức trên đều cần có cổng.
Transport
Trách nhiệm của tầng giao vận là kết hợp các khả năng truyền thông điệp trực tiếp (end-to-end) không phụ thuộc vào mạng bên dưới, kèm theo kiểm soát lỗi (error control), phân mảnh (fragmentation) và điều khiển lưu lượng. Việc truyền thông điệp trực tiếp hay kết nối các ứng dụng tại tầng giao vận có thể được phân loại như sau:
+ định hướng kết nối (connection-oriented), ví dụ TCP
+ phi kế nối (connectionless), ví dụ UDP
Tầng giao vận có thể được xem như một cơ chế vận chuyển thông thường, nghĩa là trách nhiệm của một phương tiện vận tải là đảm bảo rằng hàng hóa/hành khách của nó đến đích an toàn và đầy đủ.
Tầng giao vận cung cấp dịch vụ kết nối các ứng dụng với nhau thông qua việc sử dụng các cổng TCP và UDP. Do IP chỉ cung cấp dịch vụ phát chuyển nỗ lực tối đa (best effort delivery), tầng giao vận là tầng đâu tiên giải quyết vấn đề độ tin cậy.
Network
Trong bộ giao thức liên mạng, giao thức IP thực hiện nhiệm vụ cơ bản dẫn đường dữ liệu từ nguồn tới đích. IP có thể chuyển dữ liệu theo yêu cầu của nhiều giao thức tầng trên khác nhau; mỗi giao thức trong đó được định danh bởi một số hiệu giao thức duy nhất
Data Link
Tầng liên kết - phương pháp được sử dụng để chuyển các gói tin từ tầng mạng tới các máy chủ (host) khác nhau - không hẳn là một phần của bộ giao thức TCP/IP, vì giao thức IP có thể chạy trên nhiều tầng liên kết khác nhau. Các quá trình truyền các gói tin trên một liên kết cho trước và nhận các gói tin từ một liên kết cho trước có thể được điều khiển cả trong phần mềm điều vận thiết bị (device driver) dành cho card mạng, cũng như trong phần sụn (firmware) hay các chipset chuyên dụng. Những thứ đó sẽ thực hiện các chức năng liên kết dữ liệu chẳng hạn như bổ sung một tín đầu (packet header) để chuẩn bị cho việc truyền gói tin đó, rồi thực sự truyền frame dữ liệu qua một môi trường vật lý.
Cấu trúc gói tin
Cấu trúc gói tin TCP
Một gói tin TCP bao gồm 2 phần:
+ header
+dữ liệu
Data offset:Trường có độ dài 4 bít qui định độ dài của phần header
Reserved:dự phòng.
Flags gồm 6 cờ:
URG:Cờ cho trường Urgent pointer
ACK:Cờ cho trường Acknowledgement
PSH:Hàm Push
RST:Thiết lập lại đường truyền
SYN:Đồng bộ lại số thứ tự
FIN:Không gửi thêm số liệu
Window:Số byte có thể nhận bắt đầu từ giá trị của trường báo nhận (ACK)
Checksum:16 bít kiểm tra cho cả phần header và dữ liệu.
Cấu trúc gói tin IP
Bản tin điện văn trong hàng không.
Trong phạm vi bài tập nhóm em tìm hiểu về bản tin NOTAM
Tìm hiểu về bản tin NOTAM
Khái niệm NOTAM:
NOTAM ( Notice to Airmen ) là 1 thông báo của các cơ quan hàng không cảnh báo các phi công lái máy bay về mối nguy hiểm tiềm năng cùng 1 tuyến đường bay hoặc tại 1 vị trí mà có thể ảnh hưởng đến sự an toàn của chuyến bay.
Cấu trúc bản tin
Số loại NOTAM
A : số loại Series ( A or B or C )
1234/06: số thứ tự phát hành NOTAM đi kèm số loại
1234: số thứ tự
06 : năm phát hành
NOTAMR : tính chất của NOTAM
R : Replacement . NOTAM có thông tin thay thế 1 NOTAM trước
N : New . NOTAM có thông tin mới
C : Cancelation . NOTAM hủy bỏ thông tin 1 NOTAM trước và NOTAM này cũng hết hiệu lực.
Mục Q:
Gồm có 8 phần, mỗi phần được phân cách bằng một gạch chéo. Nếu phần nào không có nội dung thì để trống.
VVVV: địa chỉ vùng FIR Ha Noi do ICAO cung cấp.
QMXLC: NOTAM CODE gồm 5 chữ bắt đầu bằng chữ Q. Chữ thứ 2 và thứ 3 chỉ nội dung, chữ thứ 4 và thứ 5 chỉ điều kiện liên quan đến nội dung đó.
MX: đường băng.
LC : đóng cửa.
Traffic: loại quy tắc bay
I–IFR(qui tắc bay bằng thiết bị)
V - VFR (qui tắc bay bằng mắt)K - NOTAM checklistCác giá trị và liên kết có thể sử dụng: I, V, IV, K.
PURPOSE - Mục đíchN - cần được nhận biết ngay lập tứcB - cần thiết phải đưa vào PIBO - liên quan khai thác bayM - thông tin khác chỉ đưa vào PIB khi có yêu cầu . PIB (Pre-flight information bulletin): Bản thông báo tin tức trước chuyến bay.K - NOTAM checklistCác giá trị và liên kết có thể sử dụng: B, BO, NB, NBO, M, K.
SCOPE - Phạm vi ảnh hưởngA - sân bayE - đường bayW - cảnh báo nguy hiểm.K – NOTAM checklistCác giá trị và liên kết có thể sử dụng: A, E, W, AE, AW.
Lower/Upper - Giới hạn thấp và giới hạn caoGiới hạn thấp và giới hạn cao chỉ được biểu hiện bằng mực bay (FL), gồm 3 chữ số cho từng giới hạn.
Coordinates và Radius (NM)
Mục A:
Code 4 chữ chỉ địa danh sân bay hoặc FIR nơi tin tức phát sinh. Nếu ảnh hưởng đến nhiều FIR thì phải liệt kê hết các chỉ danh địa chỉ của chúng trong mục A, nhưng không được quá 7 chỉ danh địa chỉ.Nếu ảnh hưởng đến nhiều sân bay thì mỗi một sân bay sẽ phát hành một NOTAM.
VD: VVNB: mã sân bay Nội Bài.
Mục B: Thời gian bắt đầu có hiệu lực (nhóm 10 ký tự chỉ năm tháng ngày giờ và phút) giờ UTC.
Mục C: Thời gian hết hiệu lực (nhóm 10 ký tự chỉ năm tháng ngày giờ và phút) giờ UTC.
Mục D: Lịch trình bay
Mục E : Nội dung chính của bản tin
Phân tích một vài bản tin NOTAM mẫu
Thiết kế Phần Mềm
- LẬP TRÌNH C#
Socket
Socket là một giao diện lập trình ứng dụng mạng. Thông qua giao diện này chúng ta có thể lập trình điều khiển việc truyền thông giữa hai máy tính sử dụng giao thức mức thấp là TCP, UDP… Có thể hình dung socket như là thiết bị truyền thông hai chiều gửi-nhận dữ liệu giữa hai máy tính với nhau.
Các loại socket
Socket hướng kết nối (TCP Socket)
Socket không hướng kết nối (UDP Socket)
Raw Socket
Đặc điểm của Socket hướng đối tượng
Có 1 đường kết nối ảo giữa hai tiến trình.
Một trong 2 tiến trình phải đợi tiến trình kia yêu cầu kết nối.
Có thể sử dụng để liên lạc theo mô hình Client/Server
Trong mô hình Client/Server thì server lắng nghe và chấp nhận một yêu cầu kết nối.
Mỗi thông điệp gửi đều có xác nhận trở về.
Các gói tin chuyển đi tuần tự.
Đặc điểm của socket không hướng kết nối
Hai tiến trình liên lạc với nhau không kết nối trực tiếp.
Thông điệp gửi đi phải kèm theo địa chỉ của người nhận.
Thông điệp có thể gửi nhiều lần.
Người gửi không chắc chắn thông điệp tới tay người nhận.
Thông điệp gửi sau có thể đến trước thông điệp gửi trước đó.
Số hiệu cổng của Socket.
Để có thể thực hiện các cuộc giao tiếp, một trong hai quá trình phải công bố số hiệu cổng của socket mà mình sử dụng.
Mỗi cổng giao tiếp thể hiện một địa chỉ xác định trong hệ thống. Khi quá trình được gán một số hiệu cổng, nó có thể nhận dữ liệu gửi đến cổng này từ các quá trình khác.
Quá trình còn lại cũng yêu cầu tạo ra một socket.
Giới thiệu về NameSpace System.Net và System.Net.Sockets
Cung cấp một giao diện lập trình đơn giản cho rất nhiều các giao thức mạng.
Có rất nhiều lớp để lập trình.
Ta chỉ quan tâm đến lớp IPAdress, IPEndPoint, DNS,…
Lớp IPAdress
Một số Field cần chú ý:
Any: Cung cấp một địa chỉ IP để chỉ ra rằng Server phải lắng nghe trên tất cả các Card mạng.
Broadcast: Cung cấp một địa chỉ IP quảng bá.
Loopback: trả về một địa chỉ IP lặp.
AddressFamily: trả về một họ IP hiện hành.
Một số phương thức cần chú ý:
Phương thức khởi tạo
IPAddress(Byte[])
IPAddress(Int64)
IsLoopback: Cho biết địa chỉ có phải địa chỉ lặp không.
Parse: Chuyển IP dạng xâu về IP chuẩn.
ToString: Trả địa chỉ IP về dạng xâu.
TryParse: Kiểm tra IP ở dạng xâu có hợp lệ không.
Lớp IPEndPoint
Một số phương thức cần chú ý
Phương thức khởi tạo
IPEndPoint (Int64, Int32)
IPEndPoint (IPAddress,Int32)
Create: Tạo một EndPoint từ một địa chỉ Socket
ToString: Trả về địa chỉ IP và số hiệu cổng theo khuôn dạng Địa Chỉ: Cổng, ví dụ: 192.168.1.1:8080
Lớp DNS
Một số thành phần của lớp
HostName: Cho biết tên của máy được phân giải.
GetHostAddress: Trả về tất cả IP của một trạm.
GetHostEntry: Giải đáp tên hoặc địa chỉ truyền vào và trả về đối tượng IPHostEntry
GetHostName: Lấy về tên của máy tính cục bộ
NameSpace System.Net.Sockets
Một số lớp hay dung: TcpClient, UdpClient, TcpListener, Socket, NetworkStream...
Để tạo ra Socket: Socket(AddressFamily af, SocketType st, ProtocolType pt)
SocketType
ProtocolType
Miêu tả
Dgram
Udp
Giao tiếp không hướng kết nối
Stream
Tcp
Giao tiếp hướng kết nối
Raw
ICMP
Internet Control Message Protocol
Raw
Raw
Plain IP Packet communication
Bảng 3.1 : Giao tiếp trong mạng
Threading
Một số khái niệm
Đa nhiệm (Multitasking): Là khả năng hệ điều hành làm nhiều công việc tại một thời điểm.
Tiến trình (Process): Khi chạy một ứng dụng, hệ điều hành sẽ cấp phát riêng cho ứng dụng đó bộ nhớ và các tài nguyên khác. Bộ nhớ và tài nguyên vật lý riêng biệt này được gọi là một tiến trình. Các tài nguyên và bộ nhớ của một tiến trình thì chỉ tiến trình đó được phép truy cập.
Tuyến (Thread): Trong hệ thống, một tiến trình có thể có một hoặc nhiều chuỗi thực hiện tách biệt nhau và có thể chạy đồng thời. Mỗi chuỗi thực hiện này được gọi là một tuyến (Thread). Trong một ứng dụng Thread khởi tạo đầu tiên gọi là Thread sơ cấp hay Thread chính.
Sử dụng Thread trong các chương trình .Net
Để sử dụng Thread trong .Net ta sử dụng NameSpace System.Threading
Một số phương thức thường dùng
Tên phương thức
Mô tả
Abort()
Kết thúc Thread
Join()
Buộc chương trình phải chờ cho Thread kết thúc (Block) thì mới thực hiện tiếp (Các câu lệnh đứng sau Join)
Resume()
Tiếp tục chạy Thread đã bị tạm ngưng - suspended
Sleep()
Tạm dừng Thread trong một khoảng thời gian.
Start()
Bắt đầu chạy (khởi động) một Thread. Sau khi gọi phương thức này, trạng thái của thread chuyển từ trạng thái hiện hành sang Running
Suspend()
Tạm ngưng (nghỉ) thread. VS 2005 không dung phương thức này.
Bảng 3.2 : Các phương thức dùng trong Thread
Một số thuộc tính thường dung
Tên thuộc tính
Mô tả
CurrentThread
Trả về thread hiện hành đang chạy
IsAlive
Trả về giá trị cho biết trạng thái thực thi của thread hiện hành.
IsBackground
Sets hay gets giá trị cho biết thread là background hay foreground thread
ThreadState
Lấy về trạng thái của Thread (đag dừng hay đang chạy…)
Bảng 3.3 : Các thuộc tính dùng trong Thread
Tạo một tuyến trong C#
…..
Thread newThread = newThread(new ThreadStart(newMethod));
….}
Void newMethod()
{
…..
}
Sử dụng Thread trong các chương trình Server
Đa tuyến hay được ứng dụng trong các chương trình Server, các chương trình đòi hỏi tại một thời điểm chấp nhận nhiều kết nối đến Client.
Để các chương trình server có thể xử lí nhiều Client tại một thời điểm ta có mô hình ứng dụng đa tuyến như sau
Hình 3.1 : Cách tạo ra chương trình server dùng thread
Sơ lược về GPRS TCP Server
Đây là chương trình trên máy tính dùng để truyền nhận các gói TCP giữa trạm điều khiển và máy bay, được kết nối với đường truyền internet công cộng ADSL.
Chương trình ứng dụng được xây dựng trên lớp TCP cho phép nâng cao tính linh động của ứng dụng, do không phải phụ thuộc vào các ứng dụng ở lớp cao hơn như FTP, HTTP, đồng thời cho phép giảm bớt dữ liệu lưu thông trên đường truyền, tiết kiệm chi phí duy trì hệ thống, do không phải thêm vào các protocol tương thích với các ứng dụng ở các lớp cao. Thực ra có hai sự lựa chọn ở đây, đó là TCP và UDP. Đây là hai phương thức truyền nhận dữ liệu phổ biến trong các ứng dụng liên quan đến internet. Mỗi phương thức truyền nhận đều có ưu nhược điểm riêng:
Bảng 3.4 : Bảng so sánh ưu nhược điểm của TCP và UDP
Các thông tin truyền nhận trong hệ thống yêu cầu phải có độ tin cậy cao trong quá trình truyền nhận, nên TCP là sự lựa chọn phù hợp.
THỰC HIỆN
Các chương trình được xây dựng bằng ngôn ngữ lập trình Microsoft Visual C# trên nền .NET. Môi trường lập trình Visual cho phép tạo lập ứng dụng windows một cách dễ dàng và thuận tiện nhất, đi kèm với đó nền tảng .NET cho phép triển khai và thực thi ứng dụng rất mạnh mẽ và hiệu quả.
Server trung tâm
Chức năng
+Chức năng:
Luôn luôn lắng nghe kết nối từ client
Theo dõi và cập nhật các trạng thái của client
Tạo ra các bản tin NOTAM, MATAR
Cho phép gửi và nhận các bản tin text
+Thực hiện:
Server lắng nghe kết nối
Một client (máy bay) muốn liên lạc với Server(trạm điều khiển) phải kết nối tới IP tĩnh của server và qua 1 port cố định đã được mở
Khi có nhiều kết nối , để xử lý được thì server phải cung cấp cho mỗi kết nối đó 1 thread – luồng để truyền nhận dữ liệu
Khi client mất kết nối hoặc ngắt kết nối thì luồng đó sẽ được giải phóng để dành cho client khác.
Kết quả đạt được
Lắng nghe kết nối
Kết nối thành công và bắt đầu gửi nhận dữ liệu
Hạn chế
Chưa xử lý được quá trình ngắt kết nối hoặc mất kết nối
Do khả năng sử lý của server nên số lượng thread tạo được là có hạn vì vậy cần tối ưu hóa các thread tạo ra.
Giải pháp:
+khi đang gửi dữ liệu mà client tự đóng form thì đường kết nối sẽ bị đứt và socket sẽ đưa ra báo lỗi cho bên server để server sử lý.
Lỗi: socketException {"An existing connection was forcibly closed by the remote host"}
socketException.ErrorCode : 10054.
+khi client thực hiện ngắt kết nối, nó sẽ gửi request cho server và server nhận biết được.
Các ý tưởng cải tiến
+ tăng tốc độ xử lý của server khi có nhiều luồng kết nối bằng cách xử lý song song đa luồng thay vì xử lý từng luồng kết nối đến như hiện đang dùng.
+có thể gửi tất cả các file: bằng cách chia nhỏ các file ra thành các gói và gửi từng gói 1 (đã test chạy ok).
Các client
Chức năng
+ Gửi, nhận dữ liệu với server
+ Tạo bản tin FPL
Kết quả đạt được
Kết nối và gửi, nhận dữ liệu
Bản tin FPL
Hạn chế
Quá trình đóng kết nối còn gặp tồn tại.
Các ý tưởng cải tiến
Sử dụng phương pháp gửi đa loại dữ liệu như server, tích hợp cả voice IP.
KỊCH BẢN MÔ PHỎNG CHO BẢN TIN NOTAM
……
KẾT LUẬN
Các file đính kèm theo tài liệu này:
- bao_cao_bai_tap_lon_dien_van_1_7883.docx