1. Trang chủ
  2. » Luận Văn - Báo Cáo

Viết chương trình stream audio, video giữa Client và Server, mã hoá trước khi truyền

13 1,3K 39
Tài liệu đã được kiểm tra trùng lặp

Đ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

Định dạng
Số trang 13
Dung lượng 123,5 KB

Nội dung

Tài liệu tham khảo chuyên ngành tin học Viết chương trình stream audio, video giữa Client và Server, mã hoá trước khi truyền

Trang 1

MỤC LỤC

Lời nói đầu 2

I.Các giao thức hỗ trợ liên lạc trên internet 3

II.Lập trình trong Java 11

1.Mã hóa với Java 11

2.Chương trình stream audio 12

Tài liệu tham khảo: 13

Trang 2

Lời nói đầu

Internet là một hệ thống thông tin toàn cầu gồm nhiều mạng máy tính liên kết với nhau.Bao gồm hàng ngàn mạng máy tính nhỏ hơn của các doanh nghiệp, của các viện nghiên cứu vàcác trường đại học, của người dùng cá nhân, và các chính phủ trên toàn cầu

Mạng Internet mang lại rất nhiều tiện ích hữu dụng cho người sử dụng, một trong các tiệních phổ thông của Internet là hệ thống thư điện tử (email), trò chuyện trực tuyến (chat), giải trítrực tuyến, máy truy tìm dữ liệu (search engine), các dịch vụ thương mại và chuyển ngân, vàcác dịch vụ về y tế giáo dục như là chữa bệnh từ xa hoặc tổ chức các lớp học ảo.

Như vậy, mạng internet đã mang lại nhiều lời ích và một trong những lợi ích đó là thôngqua nó, người dùng có thể xem, nghe video, audio thời gian thực Với mục đích tìm hiểu cách

truyền video, audio thời gian thực trong mô hình Client/Server, em đã thực hiện đồ án “Viếtchương trình stream audio, video giữa Client và Server, mã hóa trước khi truyền” Từ đó

em xác định các yêu cầu khi thực hiện đồ án:+ Tìm hiểu về giao thức RTP/RTCP.+ Lập trình mạng với Java.

+ Mã hóa với Java.

Công cụ thực hiện chương trình là Java Nội dung đồ án được chia thành 2 phần:+ Các giao thức hỗ trợ liên lạc trên internet.+ Lập trình trong java.

Với đồ án này, do em mới làm quen với ngôn ngữ java cùng với sự hạn chế về thời giannên bản đồ án đã thực hiện chưa tốt, còn nhiều thiếu sót Và với đồ án này, em xin gửi lời cảmơn đến cô Bành Thị Quỳnh Mai đã giúp đỡ em thực hiện đồ án này

Trang 3

I.Các giao thức hỗ trợ liên lạc trên internet

1.Giao thức TCP/IP

1.1.Giới thiệu chung

Giao thức TCP/IP được phát triển từ mạng ARPANET và Internet và được dùng như giaothức mạng và vận chuyển trên mạng Internet TCP (Transmission Control Protocol) là giaothức thuộc tầng vận chuyển và IP (Internet Protocol) là giao thức thuộc tầng mạng của mô hìnhOSI Họ giao thức TCP/IP hiện nay là giao thức được sử dụng rộng rãi nhất để liên kết các máytính và các mạng

Hiện nay các máy tính của hầu hết các mạng có thể sử dụng giao thức TCP/IP để liên kếtvới nhau thông qua nhiều hệ thống mạng với kỹ thuật khác nhau Giao thức TCP/IP thực chấtlà một họ giao thức cho phép các hệ thống mạng cùng làm việc với nhau thông qua việc cungcấp phương tiện truyền thông liên mạng

Các đặc điểm của TCP/IP:

- Độc lập với kiến trúc của mạng: TCP/IP có thể sử dụng trong các kiến trúc Ethernet,Token Ring, trong mạng cục bộ (LAN) cũng như mạng diện rộng (WAN)

- Chuẩn giao thức mở: TCP/IP có thể thực hiện trên bất kỳ phần cứng hay

hệ điều hành nào Do đó, TCP/IP là tập giao thức lý tưởng để kết hợp phần cứng cũngnhư phần mềm khác nhau

- Sơ đồ địa chỉ toàn cầu: mỗi máy tính trên mạng TCP/IP có một địa chỉ xác định duynhất Mỗi gói dữ liệu được gửi trên mạng TCP/IP có một header gồm địa chỉ của máyđích cũng như địa chỉ của máy nguồn

- Khung Client-Server: TCP/IP là khung cho những ứng dụng client-server mạnh hoạtđộng trên mạng cục bộ và mạng diện rộng

- Chuẩn giao thức ứng dụng: TCP/IP không chỉ cung cấp cho người lập trình phươngthức truyền dữ liệu trên mạng giữa các ứng dụng mà còn cung cấp nhiều giao thức mứcứng dụng (những giao thức thực hiện các chức năng thường dùng như e-mail, truyềnnhận file)

Trang 4

Lớp Transport:

Cung cấp giao tiếp từ chương trình ứng dụng này đến chương trình ứng dụng khác Giaotiếp như vậy được gọi là đầu cuối- tới- đầu cuối (end-to-end) Lớp Transport sẽ đảm bảo thôngtin đến mà không bị lỗi và theo đúng trật tự Để làm được điều này, máy nhận phải gửi ACKvề báo đã nhận đủ và đúng thông tin hay chưa, nếu chưa thì máy phát phải truyền lại datagramđã mất Phần mềm ở lớp Transport chia thông tin thành các gói (packet), trong mỗi gói có chứacác trường (fields): địa chỉ nguồn, địa chỉ đích, checksum, Thông tin sau khi được chia thànhcác gói sẽ được chuyển xuống các lớp thấp hơn để tiếp tục xử lý và gửi tới máy thu Máy thusẽ dựa vào nội dung của các trường này để quyết định nhận, kiểm tra tính đúng đắn của việctruyền và phục hồi lại thông tin

Các dịch vụ của lớp Transport có thể là: TCP, UDP Khái niệm kết nối phiên (session)trong mô hình OSI có thể so sánh với cơ chế socket của TCP/IP Socket TCP/IP là một điểmcuối (end-point) trong quá trình liên lạc, được tạo bởi địa chỉ của máy tính và một cổng xácđịnh trên máy tính đó

1.3.Địa chỉ IP

Mỗi máy tính trên mạng IP có một địa chỉ duy nhất xác định gọi là địa chỉ IP tạo bởi mộtsố 32 bit Địa chỉ IP chứa đủ những thông tin để xác định duy nhất một mạng và một máy tínhtrong mạng đó.

Vì địa chỉ IP của một máy tính không những phải xác định duy nhất máy tính đó mà cònphải xác định duy nhất mạng mà máy tính đó nối vào nên địa chỉ IP được chia thành phần IDcủa mạng (net ID) và phần ID của host (host ID) Việc phân chia này không giống nhau cho tấtcả các địa chỉ IP mà lớp của địa chỉ sẽ quyết định bao nhiêu bit dành cho net ID và bao nhiêubit dành cho host ID Có 5 lớp địa chỉ IP: lớp A, B, C dùng cho mục đích chung, lớp D và Edùng cho mục đích đặc biệt trong tương lai Một địa chỉ IP theo khuôn dạng sau:

- Lớp A có Class ID là bit cao nhất bằng 0; 7 bit kế tiếp là net ID, 24 bit còn lại là hostID

Trang 5

- Lớp B có Class ID là 2 bit cao nhất lần lượt là 1 và 0, 14 bit kế tiếp là net ID, 16 bit cuốicùng là host ID

- Lớp C có Class ID là 3 bit cao nhất lần lượt bằng 1, 1, và 0; 21 bit kế tiếp là Net ID; 8bit cuối cùng là Host ID

1.4.Giao thức Internet IP (Internet Protocol)

IP tiếp nhận các datagram từ giao diện mạng (network interface) và từ các giao thức lớpcao hơn, sau khi định tuyến, nó sẽ gửi các gói dữ liệu này xuống giao diện mạng hoặc gửi lêncác giao thức ở cấp cao hơn Trên một host, có thể xem IP bao gồm hai phần, một phần kiểmsoát các gói dữ liệu đến và một phần kiểm soát việc gửi các gói dữ liệu đi

Phương thức hoạt động của IP:

- Hàng nhập chung, định tuyến chung: Quá trình IP dùng một hàng nhập chung cho tất cảcác datagrams mà nó kiểm soát, bất kể là chúng đến từ giao diện mạng hay từ các giao thức lớpcao hơn IP lấy các datagrams ra khỏi hàng nhập và xử lý chúng mà không cần biết chúng đếntừ đâu Hàng nhập chung đem lại sự đơn giản trong các thuật toán

- IP hoạt động như một quá trình độc lập.

- Giao diện nội bộ (local host interface): Để tránh việc phân phát các gói tin nội bộ nhưmột quá trình đặc biệt, IP thực hiện một giao thức mạng giả cho chính nội bộ của máy mình.Giao diện này có cùng cấu trúc như các giao diện mạng khác nhưng nó sẽ được xử lý bởi phầnmềm giao thức nội bộ thay vì mạng vật lý Việc thực hiện local host interface đặt ra vấn đề vềcách thức chọn và xử lý các gói Các datagrams đến từ giao diện mạng nào sẽ được đặt tronghàng chờ tương ứng của giao diện đó Hệ thống có nhiều cách lựa chọn để xử lý ưu tiên chodatagram nào trước Nếu IP luôn ưu tiên cho các datagrams đến từ network interface, lúc đócác datagrams của local host interface sẽ có chỉ số ưu tiên thấp hơn và chúng sẽ chỉ được xử lýkhi hàng chờ của network interface trống Ngược lại các datagrams của local host interfaceđược ưu tiên hơn thì chúng sẽ được xử lý trước Việc thực hiện đơn thuần một trong haiphương pháp trên không có hiệu quả tối ưu Trong thực tế, người ta dùng một phương pháp cótên là round-robin, nghĩa là datagram nào đến trước sẽ được xử lý trước bất kể nguồn gốc củachúng là từ network interface hay từ local host interface Một khi tất cả các hàng nhập của IPđều trống, quá trình IP sẽ bị chặn Quá trình này sẽ được khôi phục và tiếp tục thực thi khi códatagram đến

- Để kiểm tra và sửa lỗi, IP dùng các tổng kiểm tra (checksum) Số tổng kiểm tra nàyđược đặt trong header và là một số 16 bit

- Khi địa chỉ đích của một datagram ở dạng quảng bá (broadcast) thì tất cả các máy trênmạng đều nhận được datagram này IP thực hiện 3 địa chỉ quảng bá: broadcast cho mạng nộibộ với địa chỉ toàn là 1, broadcast xác định (lớp A, B, C) với phần địa chỉ của host toàn là 1, vàbroadcast cho mạng con

- Trước khi gửi một datagram phải chuyển đổi các byte thứ tự sang dạng chuẩn trênmạng Khi nhận một datagram cần thực hiện quá trình chuyển đổi ngược lại

User Datagram Protocol (UDP)

Giao thức UDP là cơ chế hướng phi kết nối (connectionless oriented) Nó cho phép mộtchương trình trên một máy có thể gửi dữ liệu đến chương trình trên một máy khác và nhận trảlời Việc thực hiện được thông qua UDP port là điểm đầu cũng như điểm cuối trong quá trình

Trang 6

thông tin

Khái niệm cổng (port) trong UDP được hiểu như sau: nếu các máy trao đổi dữ liệu đượcvới nhau thông qua địa chỉ thì các quá trình cần phải có chỉ số nhận dạng khi tiến hành trao đổithông tin Vì trên một máy trong một thời điểm có thể có rất nhiều quá trình cùng tồn tại, chonên giá trị port được đưa ra là để có sự phân biệt giữa các quá trình UDP sẽ dựa vào giá trịport để gửi các gói (packet) thông tin đến đúng địa chỉ của quá trình Vì vậy, một chương trìnhkhi muốn tham gia vào quá trình thông tin thì phải xác định giá trị port cho mình

Các quá trình sử dụng port trong giao tiếp có thể thực hiện theo hai cách Cách liên kếttrực tiếp cho phép các quá trình nối kết trực tiếp với nhau và tiến hành trao đổi dữ liệu Mộtcách khác là mô hình client/server cho phép một quá trình có thể thực hiện nhiều liên kết quađó có thể gửi nhận dữ liệu với nhiều quá trình khác cùng một lúc

Khi một quá trình muốn trao đổi dữ liệu với một quá trình khác theo phương thức trựctiếp thì cả hai quá trình phải xác định giá trị cổng của chính mình Sau đó một quá trình sẽ tiếnhành xác định giá trị cổng cũng như địa chỉ IP của quá trình kia Sau khi định xong thì việctrao đổi dữ liệu mới bắt đầu diễn ra

Còn với mô hình client/server (khách/chủ) thì server phải xác định cổng và chờ dữ liệu từchính cổng này Các quá trình client sẽ gọi đến cổng này để tiến hành quá trình truyền nhận dữliệu

Khi UDP nhận datagram và tiến hành việc phân phát theo đúng port tương ứng Có haicách để thực thi Cách thứ nhất là chỉ dựa vào địa chỉ cổng đích, với cách này chương trình cóthể nhận được dữ liệu từ tất cả các quá trình khác gửi đến Cách thứ hai là tiến hành việc phânphát dựa trên địa chỉ nguồn và địa chỉ đích, với cách này quá trình chỉ có thể nhận dữ liệu từmột địa chi xác định Mỗi cách trên đều có ưu điểm cũng như nhược điểm tuỳ theo từng thờiđiểm hoạt động của hệ thống Vì vậy khi thực hiện, cả hai cách trên đều được sử dụng

Transmission Control Protocol (TCP)

TCP là một trong những giao thức phức tạp nhất trong các giao thức trên mạng Nó baogồm cơ chế liên kết trực tiếp, gửi nhận dữ liệu tin cậy và có tính điều khiển được TCP dùng cơ

chế time out (đếm thời gian) và retransmission(truyền lại) để bảo đảm tính tin cậy trong việc

truyền dữ liệu Ngoài ra, TCP còn cung cấp cơ chế kiểm tra khi có hiện tượng trễ, trùng lặp haymất mát trong quá trình truyền nhận dữ liệu

TCP được thực hiện thông qua 3 quá trình Quá trình thứ nhất kiểm soát các datagramđược truyền đến, quá trình thứ hai chịu trách nhiệm về các datagram sẽ được truyền đi, quátrình còn lại sẽ xử lý các hiện tượng như trễ hoặc truyền lại khi timeout Trên lý thuyết thì cácquá trình này có sự liên kết trong hoạt động để tăng tính hiệu quả trong khi thực thi TCP dùngchỉ số trình tự để đánh số cho các datagram trước khi truyền đi và chỉ số này dùng để xác địnhthứ tự các frame nhận giúp xác định hiện tượng trễ, trùng lặp hay mất mát trong quá trìnhtruyền nhận

Các quá trình thông tin với nhau dùng TCP cũng sử dụng port để tiến hành giao tiếp.Khác với UDP, trước khi giao tiếp các quá trình phải tiến hành liên kết với nhau Sau khiđường truyền được thiết lập thì việc gửi nhận dữ liệu mới bắt đầu được diễn ra Cơ chế liên kếtcủa TCP giúp quá trình truyền nhận được diễn ra tin cậy hơn Các quá trình thông tin với nhauthường sử dụng mô hình client/server

Trang 7

2 Giao thức RTP/RTCP

Giao thức RTP (Realtime Transport Protocol) cung cấp các chức năng giao vận phù hợpcho các ứng dụng truyền dữ liệu mang đặc tính thời gian thực như là thoại và truyền hìnhtương tác Những dịch vụ của RTP bao gồm trường chỉ thị loại tải trọng (payloadidentification), đánh số thứ tự các gói, điền tem thời gian

Thông thường các ứng dụng chạy giao thức RTP ở bên trên giao thức UDP để sử dụngcác dịch vụ ghép kênh (multiplexing) và kiểm tra tổng (checksum) của dịch vụ này; cả hai giaothức RTP và UDP tạo nên một phần chức năng của giao thức tầng giao vận Tuy nhiên RTPcũng có thể được sử dụng với những giao thức khác của tầng mạng và tầng giao vận bên dướimiễn là các giao thức này cung cấp được các dịch vụ mà RTP đòi hỏi Giao thức RTP hỗ trợviệc truyền dữ liệu tới nhiều đích sử dụng phân bố dữ liệu multicast nếu như khả năng nayđược tầng mạng hoạt động bên dưới nó cung cấp.

Một điều cần lưu ý là bản thân RTP không cung cấp một cơ chế nào đảm bảo việc phânphát kịp thời dữ liệu tới các trạm mà nó dựa trên các dịch vụ của tầng thấp hơn để thực hiệnđiều này RTP cũng không đảm bảo việc truyền các gói theo đúng thứ tự Tuy nhiên số thứ tựtrong RTP header cho phép bên thu xây dựng lại thứ tự đúng của các gói bên phát.

Đi cùng với RTP là giao thức RTCP (Realtime Transport Control Protocol) có các dịchvụ giám sát chất lượng dịch vụ và thu thập các thông tin về những người tham gia vào phiêntruyền RTP đang tiến hành.

Trang 8

12 octets (byte) đầu tiên của phần tiêu đề có trong mọi gói RTP còn các octets còn lạithường được mixer thêm vào trong gói khi gói đó được mixer chuyển tiếp đến đích.

Phục vụ cho một vài thuật toán mã hoá thông tin cần kích thước của gói cố định.

Dùng để cách ly các gói RTP trong trường hợp nhiều gói thông tin được mang trong cùngmột đơn vị dữ liệu của giao thức tầng dưới.

- Payload Type (PT): 7 bits.

Trường này chỉ ra loại tải trọng mang trong gói Các mã sử dụng trong trường này ứngvới các loại tải trọng được quy định trong một profile đi kèm.

- Sequence Number: 16 bits.

Mang số thứ tự của gói RTP Số thứ tự này được tăng lên một sau mỗi gói RTP được gửiđi Trường này có thể được sử dụng để bên thu phát hiện được sự mất gói và khôi phục lại trìnhtự đúng của các gói Giá trị khởi đầu của trường này là ngẫu nhiên.

- Timestamp (tem thời gian): 32 bits.

Tem thời gian phản ánh thời điểm lấy mẫu của octets đầu tiên trong gói RTP Thời điểmnày phải được lấy từ một đồng hồ tăng đều đặn và tuyến tính theo thời gian để cho phép việc0 2 3 4 8 9 16 31

Trang 9

đồng bộ và tính toán độ jitter Bước tăng của đồng hồ này phải đủ nhỏ để đạt được độ chínhxác đồng bộ mong muốn khi phát lại và độ chính xác của việc tính toán jitter Tần số đồng hồnày là không cố định, tuỳ thuộc vào loại khuôn dạng của tải trọng Giá trị khởi đầu của temthời gian cũng được chọn một cách ngẫu nhiên Một vài gói RTP có thể mang cùng một giá trịtem thời gian nếu như chúng được phát đi cùng một lúc về mặt logic (ví dụ như các gói củacùng một khung hình video) Trong trường hợp các gói dữ liệu được phát ra sau những khoảngthời gian bằng nhau (tín hiệu mã hoá thoại tốc độ cố định, fixed-rate audio) thì tem thời gianđược tăng một cách đều đặn Trong trường hợp khác giá trị tem thời gian sẽ tăng không đều.

- Số nhận dạng nguồn đồng bộ SSRC (Synchronization Source Identifier): 32 bits.SSCR chỉ ra nguồn đồng bộ của gói RTP, số này được chọn một cách ngẫu nhiên Trongmột phiên RTP có thể có nhiều hơn một nguồn đồng bộ Mỗi một nguồn phát ra mộtdòng các gói RTP Bên thu nhóm các gói của cùng một nguồn đồng bộ lại với nhau đểphát lại tín hiệu thời gian thực Nguồn đồng bộ có thể là nguồn phát các gói RTP phát ratừ một micro, camera hay một RTP mixer.

- Các số nhận dạng nguồn đóng góp (CSRC list - Contributing Source list): có từ 0đến 15 mục mỗi mục 32 bít.

Các số nhận dạng nguồn đóng góp trong phần tiêu đề chỉ ra những nguồn đóng góp thôngtin và phần tải trọng của gói Các số nhận dạng này được Mixer chèn vào tiêu đề của gói và nóchỉ mang nhiều ý nghĩa trong trường hợp dòng các gói thông tin là dòng tổng hợp tạo thành từviệc trộn nhiều dòng thông tin tới mixer Trường này giúp cho bên thu nhận biết được góithông tin này mang thông tin của những người nào trong một cuộc hội nghị.

Số lượng các số nhận dạng nguồn đóng góp được giữ trong trường CC của phần tiêu đề.Số lượng tối đa của các số nhận dạng này là 15 Nếu có nhiều hơn 15 nguồn đóng góp thôngtin vào trong gói thì chỉ có 15 số nhận dạng được liệt kê vào danh sách.

Mixer chèn các số nhận dạng này vào gói nhờ số nhận dạng SSRC của các nguồn đónggóp

2/Phần tiêu đề mở rộng

Cơ chế mở rộng của RTP cho phép những ứng dụng riêng lẻ của giao thức RTP thực hiệnđược với những chức năng mới đòi hỏi những thông tin thêm vào phần tiêu đề của gói Cơ chếnày được thiết kế để một vài ứng dụng có thể bỏ qua phần tiêu đề mở rộng này (mà vẫn khôngảnh hưởng tới sự hoạt động) trong khi một số ứng dụng khác lại có thể sử dụng được phần đó

Cấu trúc của phần tiều đề mở rộng

Trang 10

Nếu như bit X trong phần tiêu đề cố định được đặt bằng 1 thì theo sau phần tiêu đề cốđịnh là phần tiêu đề mở rộng có chiều dài thay đổi.

- 16 bit đầu tiên trong phần tiêu đề được sử dụng với mục đích riêng cho từng ứngdụng được định nghĩa bởi profile Thường nó được sử dụng để phân biệt các loại tiều đềmở rộng.

- Length: 16 bits Mang giá chiều dài của phần tiêu đề mở rộng tính theo đơn vị là32 bits Giá trị này không bao gồm 32 bit đầu tiên của phần tiêu đề mở rộng.

Giao thức điều khiển RTCP

Giao thức RTCP dựa trên việc truyền đều đặn các gói điều khiển tới tất cả các ngườitham gia vào phiên truyền Nó sử dụng cơ chế phân phối gói dữ liệu trong mạng giống nhưgiao thức RTP, tức là cũng sử dụng các dịch vụ của giao thức UDP qua một cổng UDP độc lậpvới việc truyền các gói RTP.

Giao thức điều khiển thời gian thực Real-time Control Protocol (RTCP) có nhiệm vụgiám sát và đánh giá quá trình truyền tin dựa trên việc truyền một cách định kỳ các gói tin điềukhiển tới các thành viên tham gia phiên truyền với cùng cơ chế truyền dữ liệu RTCP thi hành4 chức năng chính :

Cung cấp cơ chế phản hồi chất lượng truyền dữ liệu Bên gửi thống kê quá trình gửi dữliệu qua bản tin người gửi cho các thành viên Bên nhận cũng tiến hành gửi lại bản thống kêcác thông tin nhận được qua bản tin người nhận Từ việc giám sát quá trình gửi và nhận giữacác bên, ta có thể điều chỉnh lại các thông số cần thiết để tăng chất lượng cho phiên truyền.Đây là chức năng quan trọng nhất của RTCP.

Mỗi nguồn cung cấp gói tin RTP được định danh bởi một tên CNAME (Canonical point identifer SDES item) RTCP có nhiệm vụ cho các thành viên biết tên này Khi có thànhviên mới tham gia phiên truyền thì anh ta phải được gán với một trường CNAME trong gói tinSDES.

end-Quan sát số thành viên tham gia phiên truyền thông qua sự thống kê ở các bản tin

Ngày đăng: 22/11/2012, 09:13

HÌNH ẢNH LIÊN QUAN

Tiêu đề cố định được miêu tả trong hình vẽ trên: - Viết chương trình stream audio, video giữa Client và Server, mã hoá trước khi truyền
i êu đề cố định được miêu tả trong hình vẽ trên: (Trang 7)
Giá trị của trường PT (Packet Type) ứng với mỗi loại gói được liệt kê trong bảng sau: - Viết chương trình stream audio, video giữa Client và Server, mã hoá trước khi truyền
i á trị của trường PT (Packet Type) ứng với mỗi loại gói được liệt kê trong bảng sau: (Trang 10)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w