3.2.3.1. Giao thức UDP
UDP (User Datagram Protocol) là giao thức theo phương thức không liên kết được sử dụng thay thế cho TCP ở trên IP theo yêu cầu của từng ứng dụng. Khác với TCP, giao thức UDP không có các chức năng thiết lập và kết thúc liên kết.
Tương tự như IP, nó cũng không cung cấp cơ chế báo nhận (Acknowledgment), không sắp xếp tuần tự các gói tin (Datagram) đến và có thể dẫn đến tình trạng mất hoặc trùng dữ liệu mà không có cơ chế thông báo lỗi cho người gửi. Qua đó ta thấy UDP cung cấp các dịch vụ vận chuyển không tin cậy như trong TCP.
Khuôn dạng UDP datagram được mô tả với các vùng tham số đơn giản hơn nhiều so với TCP segment.
Hình 3.15: Dạng thức của gói tin UDP
UDP cũng cung cấp cơ chế gán và quản lý các số hiệu cổng (Port number) để định danh duy nhất cho các ứng dụng chạy trên một trạm của mạng. Do ít chức năng phức tạp nên UDP thường có xu thế hoạt động nhanh hơn so với TCP. Nó thường được dùng cho các ứng không đòi hỏi độ tin cậy cao trong giao vận [5],[6],[12].
3.2.3.2. Một số thuật ngữ UDP
Trước khi kiểm tra xem giao thức UDP hoạt động như thế nào, chúng ta cần làm quen với một số thuật ngữ. Trong phần dưới đây, chúng ta sẽ định nghĩa một số thuật ngữ cơ bản có liên quan đến giao thức UDP.
Packet: Trong truyền số liệu, một packet là một dãy các số nhị phân,
biểu diễn dữ liệu và các tín hiệu điều khiển, các gói tin này được chuyển đi và chuyển tới tới host. Trong gói tin, thông tin được sắp xếp theo một khuôn dạng cụ thể.
Datagram: Một datagram là một gói tin độc lập, tự chứa, mang đầy đủ
MTU: Là viết tắt của Maximum Transmission Unit. MTU là một đặc trưng của tầng liên kết mô tả số byte dữ liệu tối đa có thể truyền trong một gói tin. Mặt khác, MTU là gói dữ liệu lớn nhất mà môi trường mạng cho trước có thể truyền. Thí dụ, Ethernet có MTU cố định là 1500 byte. Trong UDP, nếu kích thước của một datagram lớn hơn MTU, IP sẽ thực hiện phân đoạn, chia datagram thành các phần nhỏ hơn (các đoạn), vì vậy mỗi đoạn nhỏ có kích thước nhỏ hơn MTU.
Port: UDP sử dụng các cổng để ánh xạ dữ liệu đến vào một tiến trình
cụ thể đang chạy trên một máy tính. UDP định đường đi cho packet tại vị trí xác định bằng cách sử dụng số hiệu cổng được xác định trong header của datagram. Các cổng được biểu diễn bởi các số 16-bit, vì thế các cổng nằm trong dải từ 0 đến 65535. Các cổng cũng được xem như là các điểm cuối của các liên kết logic, và được chia thành ba loại sau [3],[6],[12]:
Các cổng phổ biến: Từ 0 đến 1023.
Các cổng đã đăng ký: 1024 đến 49151.
Các cổng động/dành riêng 49152 đến 65535.
Chú ý rằng các cổng UDP có thể nhận nhiều hơn một thông điệp ở một thời điểm. Trong một số trường hợp, các dịch vụ TCP và UDP có thể sử dụng cùng một số hiệu cổng, như 7 (Echo) hoặc trên cổng 23 (Telnet).
Bảng 3.2: UDP có các cổng thông dụng
TTL (Time To Live) Giá trị TTL cho phép chúng ta thiết lập một giới
hạn trên của các router mà một datagram có thể đi qua. Giá trị TTL ngăn ngừa các gói tin khỏi bị kẹt trong các vòng lặp định tuyến vô hạn. TTL được khởi tạo bởi phía gửi và giá trị được giảm đi bởi mỗi router quản lý datagram. Khi TTL bằng 0, datagram bị loại bỏ.
Multicasting: Là phương pháp dựa trên chuẩn có tính chất mở để phân phối các thông tin giống nhau đến nhiều người dùng. Multicasting là một đặc trưng chính của giao thức UDP. Multicasting cho phép chúng ta truyền tin theo kiểu một nhiều, Thí dụ gửi tin hoặc thư điện tử tới nhiều người nhận, đài phát thanh trên Internet, hoặc các chương trình demo trực tuyến.
3.2.3.3. Hoạt động của giao thức UDP
Khi một ứng dụng dựa trên giao thức UDP gửi dữ liệu tới một host khác trên mạng, UDP thêm vào một header có độ dài 8 byte chứa các số hiệu cổng nguồn và đích, cùng với tổng chiều dài dữ liệu và thông tin checksum. IP thêm vào header của riêng nó vào đâu mỗi datagram UDP để tạo lên một Datagram IP.
3.2.3.4. Các nhƣợc điểm của giao thức UDP
So với giao thức TCP, UDP có những nhược điểm sau [9]:
Thiếu các tín hiệu bắt tay: Trước khi gửi một đoạn, UDP không gửi các tín hiệu bắt tay giữa bên gửi và bên nhận. Vì thế phía gửi không có cách nào để biết datagram đã đến đích hay chưa. Do vậy, UDP không đảm bảo việc dữ liệu đã đến đích hay chưa.
Sử dụng các phiên: Để TCP là hướng liên kết, các phiên được duy trì giữa các host. TCP sử dụng các chỉ số phiên (Session ID) để duy trì các liên kết giữa hai host. UDP không hỗ trợ bất kỳ phiên nào do bản chất phi liên kết của nó.
Độ tin cậy: UDP không đảm bảo rằng chỉ có một bản sao dữ liệu tới đích. Để gửi dữ liệu tới các hệ thống cuối, UDP phân chia dữ liệu thành các đoạn nhỏ. UDP không đảm bảo rằng các đoạn này sẽ đến đích đúng thứ tự như chúng đã được tạo ra ở nguồn. Ngược lại, TCP sử dụng các số thứ tự cùng với số hiệu cổng và các gói tin xác thực thường xuyên, điều này đảm bảo rằng các gói tin đến đích đúng thứ tự mà nó đã được tạo ra.
Bảo mật: TCP có tính bảo mật cao hơn UDP. Trong nhiều tổ chức, firewall và router cấm các gói tin UDP, điều này là vì các hacker thường sử dụng các cổng UDP.
Kiểm soát luồng. UDP không có kiểm soát luồng; kết quả là, một ứng dụng UDP được thiết kế tồi có thể làm giảm băng thông của mạng.
3.2.3.5. Các ƣu điểm của UDP
Không cần thiết lập liên kết. UDP là giao thức phi liên kết, vì thế không cần phải thiết lập liên kết. Vì UDP không sử dụng các tín hiệu handshaking, nên có thể tránh được thời gian trễ. Đó chính là lý do tại sao DNS thường sử dụng giao thức UDP hơn là TCP-DNS sẽ chậm hơn rất nhiều khi dùng TCP.
Tốc độ: UDP nhanh hơn so với TCP. Bởi vì điều này, nhiều ứng dụng thường được cài đặt trên giao thức UDP hơn so với giao thức TCP.
Hỗ trợ hình trạng (Topology): UDP hỗ trợ các liên kết 1-1, 1-n, ngược lại TCP chỉ hỗ trợ liên kết 1-1.
Kích thước header: UDP chỉ có 8 byte header cho mỗi đoạn, ngược lại TCP cần các header 20 byte, vì vậy sử dụng băng thông ít hơn.
Bảng dưới đây tổng kết sự kác nhau giữa hai giao thức TCP và UDP [6]: Bảng 3.3: Sự kác nhau giữa hai giao thức TCP và UDP
3.2.3.6. Khi nào nên sử dụng UDP
Rất nhiều ứng dụng trên Internet sử dụng UDP. Dựa trên các ưu và nhược điểm của UDP chúng ta có thể kết luận UDP có ích khi sử dụng cho các phương thức truyền broadcasting và multicasting khi chúng ta muốn truyền tin với nhiều host:
Kích thước datagram nhỏ và trình tự đoạn là không quan trọng.
Không cần thiết lập liên kết.
Ứng dụng không gửi các dữ liệu quan trọng.
Không cần truyền lại các gói tin.
3.2.4. Gửi và nhận tệp
3.2.4.1. Môi trƣờng truyền dẫn vô tuyến
Như chúng ta biết có một số kiểu truyền dẫn như Infrared (Hồng ngoại), Laser, Narrow-band radio (Sóng radio băng thông hẹp), Spread- spectrum radio (Sóng radio băng thông rộng), Microwave (Sóng cực ngắn).
Tín hiệu âm tần có tần số từ 20 Hz đến 20 KHz đây chính là tần số mà tai người cảm nhận được và tần số này qúa thấp không có khả năng lan truyền đi xa trong không gian. Để tín hiệu âm tần có khả năng truyền xa trong không gian người ta sử dụng kỹ thuật điều chế để gởi sóng âm tần trên 1 sóng cao tần rồi sau đó cho nó bức xạ ra ngoài không gian dưới dạng sóng điện từ. Tín hiệu truyền thông không dây giữa các máy tính và các thiết bị là các dạng sóng điện có tần số thấp hơn 3000 gigahéc (GHz) truyền tự do trong không gian trải dài từ tần số radio đến tần số hồng ngoại [7].
3.2.4.2. Môi trƣờng cài đặt
NET Framework 3.5 trở lên: Là một thành phần cơ bản của
Windows cho việc xây dựng và chạy các ứng dụng viết bởi các ngôn ngữ lập trình mới (ứng dụng thế hệ kế tiếp).
Môi trường phát triển tích hợp Visual Studio .NET (sử dụng C#):
C# là một ngôn ngữ lập trình hướng đối tượng thuần túy. Kiểm tra an toàn kiểu. C# có thể sử dụng để viết các kiểu ứng dụng khác nhau như game, các ứng dụng cho doanh nghiệp, các ứng dụng cho thiết bị di động: PC Pocket, PDA , cell phone. Các ứng dụng quản lý đơn giản như ứng dụng quản lý thư viện, quản lý thông tin cá nhân,…
3.2.4.3. Thuật toán truyền tệp sử dụng giao thức TCP
Bài toán truyền tệp sử dụng giao thức TCP (SOCK_STREAM)
Hình 3.16: Sơ đồ khối truyền tệp sử dụng phương thức TCP (SOCK_STREAM)
Mô tả thuật toán: Với mô hình Client-Server sử dụng dịch vụ hướng kết nối, đầu tiên Server (bên nhận) được khởi động và chờ đợi một kết nối từ client (bên gửi) qua một cổng kết nối . Sau khi kết nối được thiết lập, hai bên luân phiên nhau gửi nhận dữ liệu thông qua đường truyền, nó đảm bảo giữa bên gửi và bên nhận dữ liệu phải chính xác (khác với phương thức UDP). Vì vậy hai bên sẽ phải bắt tay rất nhiều lần khi truyền được dữ liệu. Thí dụ như bên gửi sẽ gửi n gói tin (packet), bên nhận sẽ kiểm tra có bị mất hay sai gói tin nào hay không, nếu đủ thì nó sẽ yêu cầu bên gửi gửi tiếp n gói tin tiếp theo, ngược lại thì nó sẽ yêu cầu gửi lại). Công việc thực hiện đến khi nào server nhận toàn bộ dữ liệu được gửi từ client thì sẽ đóng lại và kết thúc quá trình truyền nhận tệp.
3.2.4.4. Yêu cầu và quy trình thực hiện
Không có firewall ở phía máy nhận hoặc mở cổng 7000 (không bị
chặn). Các máy tính kết nối vào mạng qua giao thức TCP/IP và không có chương trình khác chạy trên cổng 7000.
Máy gửi tệp gửi dữ liệu tới máy nhận và yêu cầu nhận tệp bao gồm
tên, dung lượng tệp sau đó chờ máy nhận trả lời.
Nếu máy nhận tệp đồng ý thì máy gửi tệp sẽ đọc file vào bộ đệm
lần lượt 1024 bytes, sau đó tính toán tỷ lệ phần trăm dung lượng hoàn thành rồi tiến hành gửi tệp. Quá trình thực hiện lặp đi lặp lại đến khi máy nhận dữ liệu báo nhận hoàn thành và đóng kết nối, khi đó máy gửi dữ liệu cũng báo đã thực hiện xong. Ngược lại nếu quá trình gửi bị lỗi thì máy gửi sẽ báo lỗi.
3.2.5. Xây dựng giao diện chƣơng trình 3.2.5.1. Giao diện chƣơng trình gửi tệp
Chọn tệp cần gửi: Chọn tệp dữ liệu cần gửi cho máy khác.
Nhập địa chỉ IP máy nhận: Nhập địa chỉ IP của máy nhận dữ liệu.
Thực hiện: Thực hiện kết nối với máy nhận dữ liệu qua cổng truyền
Cho phép nghe kết nối từ máy nhận và thực hiện truyền dữ liệu.
Thoát: Kết thúc chương trình.
IP máy hiện tại: Hiển thị địa chỉ IP của máy.
Danh sách IP: Lấy danh sách các máy đang kết nối trong mạng.
Trạng thái gửi: Thể hiện quá trình gửi dữ liệu.
Hình 3.17: Giao diện chương trình gửi tệp
3.2.5.2. Giao diện chƣơng trình nhận tệp
Thiết kế giao diện chương trình nhận tệp với các thông số như sau:
Dữ liệu được lưu vào: Hiển thị đường dẫn để lưu dữ liệu.
Danh sách IP: Lấy danh sách các máy đang kết nối trong mạng.
IP máy hiện tại: Hiển thị địa chỉ IP của máy.
Thoát: Kết thúc chương trình.
Hình 3.18: Giao diện chương trình nhận tệp
3.2.6. Thực hiện truyền và nhận dữ liệu 3.2.6.1. Truyền và nhận tệp thành công 3.2.6.1. Truyền và nhận tệp thành công
Tại máy truyền tệp chọn tệp dữ liệu cần gửi.
Nhập địa chỉ IP của máy nhận dữ liệu (có thể dùng chuột chọn trực tiếp
các địa chỉ IP xuất hiện trong danh sách).
Hình 3.19: Chọn tệp cần gửi và nhập địa chỉ IP máy nhận tệp
Tại máy nhận tệp xuất hiện thông báo có dữ liệu từ máy truyền và
có nhận dữ liệu hay không.
Hình 3.20: Màn hình thông báo khi có dữ liệu gửi từ máy truyền
Khi chọn nút "Yes" thì chương trình yêu cầu chọn thư mục cần lưu.
Nhấn nút OK để chọn thư mục lưu tệp, chương trình sẽ bắt đầu thực hiện nhận dữ liệu.
Hình 3.22: Máy nhận tệp đang nhận dữ liệu
Khi chương trình nhận dữ liệu tiếp nhận thể hiện trên thanh trạng thái
nhận thì màn hình chương trình gửi cũng thể hiện trạng thái gửi dữ liệu.
Khi gửi và nhận dữ liệu thành công sẽ có thông báo trên màn hình.
Hình 3.24: Thông báo kết quả gửi dữ liệu thành công
Hình 3.25: Thông báo kết quả nhận dữ liệu thành công
3.2.6.2. Truyền và nhận tệp không thành công
Khi thực hiện truyền và nhận dữ liệu nếu bên nhận nhấn nút "No" không đồng ý nhận thì sẽ có thông báo ở máy gửi như hình 3.25.
Hình 3.26: Máy truyền tệp nhận thông báo không nhận dữ liệu từ máy gửi
Khi thực hiện truyền và nhận dữ liệu nếu bên nhận dữ liệu nhấn nút "Thoát" không đồng ý nhận hoặc máy gửi vào địa chỉ máy không chạy chương trình nhận tệp thì sẽ có thông báo ở máy gửi như hình 3.26.
3.2.7. So sánh kết quả truyền tệp với một vài phƣơng thức khác
Với một vài kết quả thực nghiệm tác giả đã tổng hợp được bảng so sánh truyền dữ liệu của phần mềm luận văn thực hiện với một vài phương thức truyền tệp khác: Bảng 3.4: So sánh kết quả thực nghiệm Dung lượng tệp Khoảng cách truyền thử nghiệm (m)
Chi phí thời gian (giây) Phần mềm tác giả làm thử nghiệm Truyền và nhận tệp qua Yahoo chat (đường truyền 3Mb/s) Truyền và nhận tệp qua Skype chat (đường truyền 3Mb/s) 1 MB 3m 6 8 4 10 MB 10m 50 60 36 100 MB 10m 365 385 338 500 MB 5m 1650 1780 1540 1000 MB 2m 3120 Không thực hiện được 3000
Từ kết quả thực nghiệm như trên với thời gian đo ở mức tương đối, số lần thực hiện chưa nhiều và khoảng cách ngắn, cho thấy chương trình truyền tệp thử nghiệm truyền chậm hơn Skype nhưng nhanh hơn Yahoo. Tuy nhiên chương trình cũng còn nhiều hạn chế như chưa truyền được tệp có dung lượng lớn hơn 1000MB, tốc độ chưa thực sự nhanh, chưa truyền được đồng thời nhiều tệp cùng lúc tới nhiều máy.
3.3. Kết luận chƣơng 3
Chương 3 của luận văn đã thực hiện thiết lập kết nối MANET, giới thiệu về môi trường truyền dẫn không dây, lập trình socket với phương thức truyền tệp TCP và UDP, phân tích bài toán và xây dựng sơ đồ khối truyền tệp theo phương thức TCP, xây dựng và thử nghiệm chương trình truyền tệp
KẾT LUẬN
KếT LUậN
Sau một thời gian tìm hiểu và hoàn thành luận văn, tác giả đã nắm bắt được cơ bản về công nghệ MANET và xây dựng phần mềm truyền tệp đơn giản trên mạng MANET. Cụ thể tác giả đã kết nối mạng Adhoc giữa một vài máy tính và chạy chương trình truyền tệp, truyền thành công tệp có dung lượng vừa và nhỏ.
Tuy nhiên công nghệ MANET thì trên thế giới đã và đang nghiên cứu