1. Trang chủ
  2. » Tất cả

Báo cáo bài tập lớn đề tài xây dựng chương trình ftp server

24 22 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Chương Trình FTP Server
Tác giả Dương Đức Hiến, Hà Quang Trường
Người hướng dẫn Phạm Thị Hường
Trường học Trường Đại Học Sao Đỏ
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 24
Dung lượng 677,97 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC SAO ĐỎ ***** BÁO CÁO BÀI TẬP LỚN TÊN ĐỀ TÀI XÂY DỰNG CHƯƠNG TRÌNH FTP SERVER Học phần Lập trình mạng máy tính Sinh viên thực hiện Dương Đức Hiến Hà Quang Trường Giảng viê[.]

Trang 1

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC SAO ĐỎ

*****

BÁO CÁO BÀI TẬP LỚN

TÊN ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH FTP SERVER

Học phần: Lập trình mạng máy tính Sinh viên thực hiện: Dương Đức Hiến

Hà Quang Trường Giảng viên hướng dẫn: Phạm Thị Hường Lớp: DK10 – CNTT

Khoa: Công nghệ thông tin

Năm 2022

Trang 2

LỜI MỞ ĐẦU

Ngày nay cùng v i s phát tri n chóng m t c a khoa h c k thu t, m t kớ ự ể ặ ủ ọ ỹ ậ ộ ỷnguyên m i ớ được m ra k nguyên c a công ngh thông tin Nhu c u c a con ng iở ỷ ủ ệ ầ ủ ườcàng l n c bi t các ngành khoa h c k thu t khác u c n n s h tr c a côngớ đặ ệ ọ ỹ ậ đề ầ đế ự ỗ ợ ủngh thông tin M i ng i u có nhu c u truy c p internet cung c p c ng nh l yệ ọ ườ đế ầ ậ để ấ ũ ư ấ

nh ng thông tin c n thi t qua các máy ch ữ ầ ế ủ

V i nh ng lý do trên em xin ch n tài ớ ữ ọ đề “Xây dựng chương trình FTP server” Ng i s d ng ch ng trình là ng i có nhu c u truy n nh n file b ng giaoườ ử ụ ươ ườ ầ ề ậ ằ

th c FTP (File Transfer Protocol) thông qua m ng Internet.ứ ạ

Trong môi tr ng Internet, khi c n truy n nh n file các file có kích th c l nườ ầ ề ậ ướ ớtrên vài ch c KB ng i s d ng th ng g p tr ng h p vi c truy n nh n file b giánụ ườ ử ụ ườ ặ ườ ợ ệ ề ậ ị

o n Ví d khi l y m t file b ng giao th c FTP s d ng ch ng trình Internet

đ ạ ụ ấ ộ ằ ứ ử ụ ươ

Explorer, ng i s d ng th ng g p thông báo l i sau vài phút download file.ườ ử ụ ườ ặ ỗ

gi i quy t v n này, ng i s d ng th ng s d ng các ch ng trình

Để ả ế ấ đề ườ ử ụ ườ ử ụ ươ

chuyên dùng l y file nh ReGet có th ti p t c l y file t v trí x y ra l i.để ấ ư để ể ế ụ ấ ừ ị ả ỗ

Ng i s d ng có xu h ng l y ng th i nhi u file t i m t server nào ó trênườ ử ụ ướ ấ đồ ờ ề ạ ộ đInternet Nh v y ch ng trình ph i h tr l y nhi u file ng th i Tuy nhiên khôngư ậ ươ ả ỗ ợ ấ ề đồ ờ

ph i lúc nào ch ng trình c ng có th l y ng th i nhi u file t i m t site n u serverả ươ ũ ể ấ đồ ờ ề ạ ộ ế

h n ch s k t n i ng th i t i m t a ch IP.ạ ế ố ế ố đồ ờ ớ ộ đị ỉ Ng i s d ng c ng có nhu c u l y fileườ ử ụ ũ ầ ấ

b ng nhi u giao th c khác nhau nh FTPằ ề ứ ư (File Transfer Protocol), HTTP (HyperTextTransfer Protocol), …Tuy nhiên trong ph m vi c a lu n v n này chúng em ch có thạ ủ ậ ă ỉ ể

h tr ỗ ợ được vi cệ l y file b ng giao th c FTP M t khác ch ng trình c ng ph i t o sấ ằ ứ ặ ươ ũ ả ạ ự

ti n l i cho ng i s d ng Ch ngệ ợ ườ ử ụ ươ trình ph i có giao di n h a thân thi n, giúp choả ệ đồ ọ ệ

ng i s d ng xem ườ ử ụ đượ ộc n i dung các th m c t xa và c c b T ó giúp cho vi cư ụ ừ ụ ộ ừ đ ệupload và download d dàng h n.ễ ơ

Ch ng trình c ng ph i hi n th c m t s ch c n ng c b n c a m t FTP clientươ ũ ả ệ ự ộ ố ứ ă ơ ả ủ ộdownload, upload,…

Mục tiêu:

- Khuy n khích vi c chia s file.ế ệ ẻ

- Giúp vi c s d ng gián ti p(thông qua các ch ng trình) các máy tính t xa.đỡ ệ ử ụ ế ươ ừ

- Che thông tin ng i s d ng kh i nh ng thay i trong các h th ng l u trườ ử ụ ỏ ữ đổ ệ ố ư ữ file gi aữcác máy ch (host).ủ

- Truy n d li u m t cách tin c y và hi u qu ề ữ ệ ộ ậ ệ ả

Trang 3

- T o m t ng d ng FTP ch y trên b t k máy nào.ạ ộ ứ ụ ạ ấ ỳ

- Nghiên c u tìm hi u v l p trình socket TCPứ ể ề ậ

- Nghiên c u v ngôn ng l p trình ứ ề ữ ậ C#

Trang 4

MỤC LỤC

Chương 1 TỔNG QUAN VỀ LẬP TRÌNH MẠNG 5

1.1 Giới thiệu về lập trình mạng 5

1.2 Cơ sở lập trình mạng 5

1.3 Các mô hình lập trình mạng 6

1.3.1 Mô hình Client/Server 6

1.3.2 Mô hình điểm - điểm 7

1.3.3 Mô hình đa tầng 7

1.4 C# là gì ? 8

1.4.1 Tại sao phải sử dụng ngôn ngữ C# 9

1.4.2 C# là ngôn ngữ đơn giản 9

1.4.3 C# là ngôn ngữ hiện đại 10

1.4.4 C# là ngôn ngữ hướng đối tượng 10

1.5 Giao thức FTP 10

1.5.1 Hoạt động của giao thức FTP 11

1.5.2 Mục đích của giao thức FTP 12

1.5.3 Những phê bình về giao thức FTP 12

1.6 Các loại kết nối 13

1.6.1 Active FTP 13

1.6.2 Passive FTP 14

1.7 Tìm hiểu các hệ thống FTP có sẵn 15

1.7.1 FTP client 15

1.7.2 FTP Server 15

1.8 Mô hình FTP 16

Chương 2 PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 17

2.1 Cài đặt FTP server 17

2.1.1 Cài đặt FTP Server trên Windows 17

2.1.2 Các bước truy cập server 20

2.2 Thiết kế chương trình trên nền tảng winform c# 22

2.2.1 Truy cập server: 22

2.2.2 Upload file lên Server 22

2.2.3 Doaload file từ Server 22

Trang 5

Chương 3 GIỚI THIỆU CHƯƠNG TRÌNH 23 3.1 Giới thiệu tổng quan chương trình: 23

Trang 6

Chương 1 TỔNG QUAN VỀ LẬP TRÌNH MẠNG

1.1 Giới thiệu về lập trình mạng

Khi nói đến phát triển các ứng dụng phần mềm, đa số người ta muốn nói đếnchương trình có khả năng làm việc trong môi trường mạng tích hợp nói chung vàmạng máy tính nói riêng Từ các chương trình kế toán doanh nghiệp, quản lý, tròchơi, điều khiển đều là các chương trình ứng dụng mạng Lập trình mạng là các kỹthuật lập trình nhằm xây dựng những ứng dụng, phần mềm khai thác hiệu quả tàinguyên mạng máy tính Vấn đề lập trình mạng liên quan đế nhiều lĩnh vực kiến thứckhác nhau Từ kiến thức sử dụng ngôn ngữ lập trình, phân tích thiết kế hệ thống, kiếnthức hệ thống mạng, mô hình xây dựng chương trình ứng dụng mạng, kiến thức về cơ

sở dữ liệu cho đến kiến thức truyền thông, các kiến thức các lĩnh vực liên quan khácnhư mạng điện thoại di động, PSTN, hệ thống GPS, các mạng như BlueTooth,WUSB, mạng sensor Nhưng vấn đề lập trình mạng có 3 vấn đề chính cốt lõi tíchhợp trong lập trình ứng dụng mạng

1.2 Cơ sở lập trình mạng

Mô hình kết nối hệ thống mở được ổ chức quốc tế về tiêu chuẩn hoá ISO đưa

ra nhằm cung cấp một mô hình chuẩn cho các nhà sản xuất và cung cấp sản phẩmviễn thông áp dụng theo để phát triển các sản phẩm Ý tưởng mô hình hoá được tạo racòn nhằm hỗ trợ cho việc kết nối giữa các hệ thống và mođun hoá các thành phầnphục vụ mạng viễn thông

 Chức năng của mô hình OSI

 Cung cấp kiến thức về hoạt động của kết nối liên mạng

 Đưa ra trình tự công việc để thiết lập và thực hiện một giao thức cho kết nốicác thiết bị trên mạng

 Chia nhỏ các hoạt động phức tạp của mạng thành các phần công việc đơn giản

 Cho phép các nhà thiết kế có khả năng phát triển trên từng mođun chức năng

 Cung cấp các khả năng định nghĩa các chuẩn giao tiếp có tính tương thích cao

“plug and play” và tích hợp nhiều nhà cung cấp sản phẩm Cấu trúc mô hìnhOSI Mô hình OSI gồm 7 tầng, mỗi tầng thực hiện các chức năng riêng chohoạt động kết nối mạng

APLICATION

Trang 7

PRESENTATION SESSION

TRANSPOST LAYER NETWORK LAYER DATA LINK

PHYSICAL

3 tầng trên cùng của mô hình OSI thường được gọi là các lớp ứng dụng haycòn gọi là các tầng cao Các tầng này thường liên quan tới giao tiếp với người dùng,định dạng của dữ liệu và phương thức truy nhập các ứng dụng đó

- Application layer: Đây là tầng cao nhất trong mô hình, là nơi mà người sửdụng kết nối các chương trình ứng dụng với các thủ tục cho phép truy nhập vàomạng

- Presentation layer: Tầng presentation cung cấp các mã và chức năng đểchuyển đổi mà được cung cấp bởi lớp ứng dụng Các chức năng đó đảm bảo rằng dữliệu từ tầng ứng dụng trong một hệ thống có thể được đọc bởi tầng ứng dụng của một

hệ thống khác Ví dụ dùng để mã hoá dữ liệu từ tầng ứng dụng như mã hoá ảnh jpeg,gif Mã đó cho phép ta có thể hiện lên trang web - Session layer: Được sử dụng đểthiết lập, duy trì và kết thúc phiên làm việc giữa các tầng presentation Việc trao đổithông tin ở tầng này bao gồm yêu cầu dịch vụ và đáp ứng yêu cầu của các ứng dụngtrên thiết bị khác Các tầng dưới của mô hình OSI sử dụng để định nghĩa làm thế nào

để dữ liệu được truyền đi trong các dây nối vật lý, các thiết bị mạng và đi đến trạmđầu cuối, cuối cùng là đến các tầng ứng dụng

Trang 8

Chế độ blocking (nghẽn): Khi Client hay Server phát ra lệnh send gửi thôngđiệp, quá trình Client hay Server tương ứng sẽ bị treo cho đến khi phía nhận phát lệnhreceive 14 tiếp nhận thông điệp Tương tự khi gọi lệnh receive mà chưa có send cũng

sẽ vào trạng thái treo cho đến khi có lệnh send từ xa gửi thông điệp đến Chế độnonblocking: Khi phát ra lệnh truyền thông, quá trình Client hay Server vẫn tiếp tụcđược thực thi mà không bị treo Một chương trình Server có thể phục vụ nhiều

chương trình Client đồng thời hoặc tuần tự (kiểu lặp)

Chương trình Client: Client là một chương trình chạy trên máy cục bộ mà đưa

ra yêu cầu dịch vụ đối với Server Chương trình Client có thời gian chạy hữu hạn Nóđược khởi đầu bởi người sử dụng hoặc một chương trình ứng dụng khác và kết thúckhi dịch vụ đã thực hiện hoàn thành Sau khi khởi tạo, Client thực hiện mở một kênhtruyền thông sử dụng địa chỉ IP của máy trạm từ xa và địa chỉ cổng (nhãn) đã biết rõcủa chương trình Server cụ thể chạy trên máy tính từ xa đó Cách mở đó của Clientđược gọi là mở tích cực (active open) Sau khi kênh truyền thông được mở client sẽgửi yêu cầu tới Server và nhận đáp ứng trả về từ Server

Chương trình Server: Chương trình này có đặc điểm là có thời gian chạy vôtận và chỉ dừng chạy bởi người sử dụng hoặc tắt máy tính Chương trình này sau khikhởi tạo, nó sẽ thực hiện mở thụ động (passive open) và được đặt ở trạng thái “nghe”chờ tín hiệu gửi tới từ Client nếu có, nó sẽ nhận yêu cầu gửi tới từ Client, thực hiện

xử lý và đáp ứng yêu cầu đó Các chức năng trong một chương trình ứng dụng gồm: Giao diện nhập liệu - Tính toán, xử lý thông tin theo qui định - Truy vấn và lưu trữ

-thông tin

1.3.2 Mô hình điểm - điểm

Chương trình ứng dụng mạng làm việc theo mô hình điểm S - điểm (ngangcấp, bình đẳng) có thể nói là các chương trình mà có thể thực hiện vai trò của cảServer và của Client Chương trình này khi chạy có thể yêu cầu chương trình khácphục vụ nó và nó cũng có thể phục vụ yêu cầu gửi tới từ chương trình khác

1.3.3 Mô hình đa tầng

Mô hình đa tầng gồm nhiều tầng mà tiêu biểu nhất là mô hình 3 tầng Trong

mô hình này, tầng thấp nhất là tầng thông tin, tầng trung gian và tầng đỉnh Một ví dụ

Trang 9

tiểu biểu của mô hình 3 tầng đó là dịch vụ Web với tầng đỉnh là trình duyệt, tầngtrung gian là Web Server và tầng thông tin là cơ sở dữ liệu.

Hầu hết các ngôn ngữ lập trình đều có thể sử dụng để lập trình mạng, tuy nhiênviệc lập trình mạng còn phụ thuộc vào các thư viện và môi trường lập trình có hỗ trợhay không Có thể liệt kê các ngôn ngữ lập trình sử dụng để lập trình mạng như sau:

- C/C++: Ngôn ngữ lập trình rất mạnh và phổ biến, dùng để viết mọi loại ứngdụng trong đó có ứng dụng mạng

- Java: Ngôn ngữ lập trình khá thông dụng và hỗ trợ trên nhiều môi trường, trong

đó có thể viết ứng dụng chạy trên điện thoại di động

- C#: Ngôn ngữ lập trình cũng rất mạnh và dễ sử dụng, chỉ hỗ trợ trên hệ điềuhành Windows của Microsoft

- Python, Perl, Php…: Các ngôn ngữ thông dịch, sử dụng để viết nhanh các tiệních nhỏ một cách nhanh chóng, trong đó có ứng dụng mạng

- Việc lập trình mạng phụ thuộc rất nhiều vào các thư viện hỗ trợ đến từ hệthống Tùy thuộc vào nền tảng phát triển ứng dụng mà có thể sử dụng các thư việnkhác nhau Có thể liệt kê một vài thư viện hỗ trợ lập trình mạng như sau:

- Winsock: Thư viện liên kết động của Microsoft, được phân phối cùng hệ điềuhành Windows Winsock cung cấp khá nhiều API để phát triển ứng dụng mạng.Winsock có thể sử dụng cùng bất kỳ ngôn ngữ lập trình nào, bộ đôi C/C++ vớiWinsock đem lại hiệu năng cao nhất, nhưng khó sử dụng

- Thư viện System.Net trong NET framework: Thư viện cung cấp nhiều API dễ

sử dụng để xây dựng ứng dụng mạng Để sử dụng thư viện này, người ta thường dùngC#, việc phát triển ứng dụng mạng khá dễ dàng

- Thư viện MFC Socket: Thư viện đi cùng bộ phát triển Visual Studio C++

- Các thư viện trong Java Runtime, PHP,…

1.4 C# là gì ?

C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ kỹ sưcủa Microsoft vào năm 2000, trong đó người dẫn đầu là Anders Hejlsberg và ScottWiltamuth

C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và nó được xây dựng trên nền tảngcủa hai ngôn ngữ mạnh nhất là C++ và Java

C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và nó được xây dựng trên nền tảng

Trang 10

của hai ngôn ngữ mạnh nhất là C++ và Java.

C# được thiết kế cho Common Language Infrastructure (CLI), mà gồm ExecutableCode và Runtime Environment, cho phép chúng ta sử dụng các ngôn ngữ high-level đadạng trên các nền tảng và cấu trúc máy tính khác nhau

C# với sự hỗ trợ mạnh mẽ của NET Framework giúp cho việc tạo một ứng dụngWindows Forms hay WPF (Windows Presentation Foundation), trở nên rất dễdàng

0.1

1.1

1.4.1 Tại sao phải sử dụng ngôn ngữ C#

Nhiều người tin rằng không cần thiết có một ngôn ngữ lập trình mới Java,C++,Perl, Microsoft Visual Basic, và những ngôn ngữ khác được nghĩ rằng đã cung cấptất cả những chức năng cần thiết

Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và C++, nhưng nó được tạo

từ nền tảng phát triển hơn Microsoft bắt đầu với công việc trong C và C++ và thêmvào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụng hơn Nhiều trong sốnhững đặc tính này khá giống với những đặc tính có trong ngôn ngữ Java Khôngdừng lại ở đó Microsoft đưa ra một số mục đích khi xây dựng ngôn ngữ này Nhữngmục đích này được được tóm tắt như sau:

 C# là ngôn ngữ đơn giản

 C# là ngôn ngữ hiện đại

 C# là ngôn ngữ hướng đối tượng

 C# là ngôn ngữ mạnh mẽ và mềm dẻo

 C# là ngôn ngữ có ít từ khóa

 C# là ngôn ngữ hướng module

 C# sẽ trở nên phổ biến

1.4.2 C# là ngôn ngữ đơn giản

C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và c++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo(virtual base class) Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn đếnnhững vấn đề cho các người phát triển C++ Nếu chúng ta là người học ngôn ngữ nàyđầu tiên thì chắc chắn là ta sẽ không trải qua những thời gian để học nó! Nhưng khi

đó ta sẽ không biết được hiệu quả của ngôn ngữ C# khi loại bỏ những vấn đề trên

Trang 11

Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++ Nếu chúng ta thân thiện với

C và C++ hoậc thậm chí là Java, chúng ta sẽ thấy C# khá giống về diện mạo, cú pháp,biểu thức, toán tử và những chức năng khác được lấy trực tiếp từ ngôn ngữ C và C++,nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn Một vài trong các sựcải tiến là loại bỏ các dư thừa, hay là thêm vào những cú pháp thay đổi Ví dụ như,trong C++ có ba toán tử làm việc với các thành viên là ::, , và -> Để biết khi nàodùng ba toán tử này cũng phức tạp và dễ nhầm lẫn Trong C#, chúng được thay thếvới một toán tử duy nhất gọi là (dot) Đối với người mới học thì điều này và nhữngviệc cải tiến khác làm bớt nhầm lẫn và đơn giản hơn

1.4.3 C# là ngôn ngữ hiện đại

Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính như là xử lý ngoại lệ,thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, và bảo mật mã nguồn là nhữngđặc tính được mong đợi trong một ngôn ngữ hiện đại C# chứa tất cả những đặc tínhtrên Nếu là người mới học lập trình có thể chúng ta sẽ cảm thấy những đặc tính trênphức tạp và khó hiểu Tuy nhiên, cũng đừng lo lắng chúng ta sẽ dần dần được tìmhiểu những đặc tính qua các chương trong cuốn sách này

1.4.4 C# là ngôn ngữ hướng đối tượng

Những đặc điểm chính của ngôn ngữ hướng đối tượng (Object-orientedlanguage) là sự đóng gói (encapsulation), sự kế thừa (inheritance), và đa hình(polymorphism) C# hỗ trợ tất cả những đặc tính trên

1.5 Giao thức FTP

FTP(viết tắt của File Transfer Protocol dịch ra là “Giao thức truyền tập tin”) làgiao thức truyền file giữa các máy tính Giao thức này xuất hiện trong những năm1971(khi Internet vẫn chỉ là một dự án thử nghiệm ) nhưng vẫn còn được sử dụng rộngrãi cho đến tận ngày nay.FTP được đặc tả trong RFC 959 FTP cho phép trao đổi filegiữa hai máy tính

Thông qua giao thức FTP,người dùng có thể tải dữ liệu như hình ảnh ,văn bản ,các tậptin media(nhạc,video)…từ máy tính có trên máy chủ về máy tính cá nhân

Trang 12

1.5.1 Hoạt động của giao thức FTP

Trong phiên làm việc của FTP, người dùng làm việc trên máy tính của mình vàtrao đổi file với một máy tính ở chỗ khác Để truy cập tới máy tính khác, người dùngphải đăng nhập thông qua việc cung cấp định danh người dùng và mật khẩu Sau khinhững thông tin này được kiểm chứng thì công việc truyền file từ hệ thống file trênmáy tính của mình đến hệ thống file ở đầu kia mới có thể được thực hiện FTP sử dụnghai kết nối TCP song song, một đường truyền thông tin điều khiển (controlconnection) và một đường truyền dữ liệu (data connection) Các thông tin điều khiểnnhư thông tin định danh người dùng, mật khẩu truy nhập, lệnh thay đổi thư mục, lệnh

“PUT” hoặc “GET” file giữa hai máy tính được trao đổi qua đường truyền thông tinđiều khiển Đường truyền dữ liệu để truyền file dữ liệu thực sự Vì FTP phân biệtluồng thông tin điều khiển với luồng dữ liệu nên nó dược gọi là gửi thông tin điềukhiển out-of-band

FTP gồm 2 kết nối điều khiển và dữ liệu Khi người dùng bắt đầu một phiên làmviệc FTP, đầu tiên FTP sẽ thiết lập một đường kết nối thông tin điều khiển TCP quacổng 21 Phía client của giao thức FTP truyền thông tin về định danh người dùng vàmật khẩu cũng như lệnh thay đổi mở một kết nối khác Như vậy với FTP, luồng thôngtin điều khiển được mở và tồn tại trong suốt phiên làm việc của người dùng, nhưngmỗi kết nối dữ liệu được tạo ra cho mỗi một yêu cầu truyền file (kết nối dữ liệu làkhông liên tục)

Ngày đăng: 09/03/2023, 14:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w