Xem mẫu

  1. Chương 2 Tầng ứng dụng Computer Networking: A Top Down Approach Người dịch: Nguyễn Thanh Thủy 6th edition Jim Kurose, Keith Ross Tài liệu được dịch cho mục đích giảng dạy (được sự đồng ý của tác giả). Addison-Wesley March 2012 All material copyright 1996-2012 J.F Kurose and K.W. Ross, All Rights Reserved Tầng ứng dụng 2-1 Chương 2: Tầng ứng dụng Mục tiêu:  Nghiên cứu một số  Khái niệm, các vấn đề giao thức tầng ứng cài đặt giao thức ứng dụng dụng mạng  HTTP  Các mô hình dịch  FTP vụ tầng giao vận  SMTP / POP3 / IMAP  DNS  Mô hình khách-chủ (client-server)  Tạo một ứng dụng  Mô hình điểm-điểm mạng (peer-to-peer)  socket API Tầng ứng dụng 2-2 1
  2. Chương 2: Nội dung 2.1 Nguyên lý của ứng 2.4 Thư điện tử dụng mạng  SMTP, POP3, IMAP  Kiến trúc của ứng 2.5 DNS dụng  Các yêu cầu của ứng 2.6 Ứng dụng P2P dụng 2.7 Lập trình socket 2.2 Web và HTTP với UDP và TCP 2.3 FTP Tầng ứng dụng 2-3 Một số ứng dụng mạng  Thư điện tử (e-mail)  Điện thoại Internet  web (voice over IP) (ví dụ  Tin nhắn văn bản (text Skype) messaging)  Hội thảo video thời gian  Truy nhập từ xa thực (remote login)  Mạng xã hội  Chia sẻ file P2P  Các ứng dụng tìm kiếm  Trò chơi nhiều người  … trên mạng  …  streaming video (YouTube, Hulu, Netflix) Tầng ứng dụng 2-4 2
  3. Tạo một ứng dụng mạng application transport network data link Viết chương trình để: physical  Chạy trên các hệ thống đầu cuối khác nhau  Truyền thông qua mạng  Ví dụ: phần mềm máy chủ web (web server) truyền thông với phần mềm trình duyệt (browser software) Không cần viết chương trình ứng dụng cho các thiết bị trong phần application transport lõi của mạng network application data link  Các thiết bị trong phần lõi của mạng physical transport network không chạy các ứng dụng người data link physical dùng.  Các ứng dụng chạy trên thiết bị đầu cuối cho phép phát triển và phổ biến ứng dụng một cách nhanh chóng. Tầng ứng dụng 2-5 Kiến trúc của ứng dụng Các ứng dụng có thể có kiến trúc dạng:  Client-server (khách-chủ )  Peer-to-peer (P2P, ngang hàng) Tầng ứng dụng 2-6 3
  4. Kiến trúc client-server server:  Là host luôn hoạt động  Có địa chỉ IP cố định  Các trung tâm dữ liệu client:  Truyền thông với server client/server  Có thể được kết nối liên tục vào mạng hoặc không  Có thể có địa chỉ IP thay đổi  Không truyền thông trực tiếp với client khác Tầng ứng dụng 2-7 Kiến trúc P2P  Không có server luôn hoạt peer-peer động  Các hệ thống đầu cuối (peer) truyền thông trực tiếp với nhau  Mỗi peer yêu cầu dịch vụ từ một peer nào đó, và cung cấp dịch vụ lại cho các peer khác.  Có khả năng tự mở rộng – peer mới mang lại khả năng dịch vụ mới, cũng như có những yêu cầu dịch vụ mới.  Các peer không kết nối liên tục và có thể thay đổi địa chỉ IP  Quản lý phức tạp Tầng ứng dụng 2-8 4
  5. Tiến trình truyền thông Tiến trình: chương trình client, server chạy trên một host Tiến trình client: tiến trình  Trên cùng một host, hai tiến khởi tạo truyền thông trình truyền thông với nhau Tiến trình server: tiến trình qua truyền thông tiến trình nội chờ được tiếp xúc bộ (được xác định bởi hệ điều hành)  Lưu ý: ứng dụng theo kiến  Các tiến trình trên các host trúc P2P có cả tiến trình client khác nhau truyền thông với & tiến trình server nhau bằng cách trao đổi các thông điệp Tầng ứng dụng 2-9 Socket  Các tiến trình gửi/nhận các thông điệp đến/từ socket của nó  Socket tương tự như một cửa vào/ra  Tiến trình gửi đẩy thông điệp ra bên ngoài cửa  Tiến trình gửi dựa trên cơ sở hạ tầng tầng giao vận ở phía bên kia cửa để truyền thông điệp đến socket của tiến trình nhận Ứng dụng Ứng dụng được điều khiển socket bởi người phát tiến trình tiến trình triển ứng dụng Giao vận giao vận Mạng Mạng được điều khiển Liên kết bởi hệ điều hành Liên kết Internet Vật lý Vật lý Tầng ứng dụng 2-10 5
  6. Định địa chỉ cho tiến trình  Để nhận các thông điệp, tiến  Định danh bao gồm cả địa chỉ trình phải có định danh IP và số hiệu cổng được kết (identifier) hợp với tiến tình trên host.  Thiết bị host phải có địa chỉ IP  Ví dụ các số hiệu cổng: 32-bit duy nhất  HTTP server: 80  Hỏi: Địa chỉ IP của host mà  mail server: 25 trên đó tiến trình chạy có đủ để  Để gửi thông điệp HTTP tới xác định định danh của tiến web server gaia.cs.umass.edu: trình không?  Địa chỉ IP: 128.119.245.12  Trả lời: Không, do nhiều  Số hiệu cổng: 80 tiến trình có thể cùng chạy trên một host. Tầng ứng dụng 2-11 Các giao thức tầng ứng dụng  Các loại thông điệp được Các giao thức mở (công trao đổi khai):  Ví dụ: thông điệp yêu cầu  Được định nghĩa trong (request), thông điệp đáp RFCs ứng (response)  Cho phép tương tác  Cú pháp của thông điệp:  Ví dụ: HTTP, SMTP  Các trường trong thông điệp & mô tả Các giao thức riêng (độc  Ngữ nghĩa của thông quyền): điệp  Ví dụ: Skype  Ý nghĩa thông tin của các trường  Quy tắc về thời gian và cách thức các tiến trình gửi và đáp ứng thông điệp Tầng ứng dụng 2-12 6
  7. Một ứng dụng cần những dịch vụ giao vận nào? Toàn vẹn dữ liệu Băng thông  Một số ứng dụng (ví dụ:  Một số ứng dụng (ví dụ: đa truyền file, web) yêu cầu phương tiện) yêu cầu băng truyền tin cậy 100% thông tối thiểu để đảm bảo  Các ứng dụng khác (ví dụ: “hiệu quả”. audio) có thể chịu một số mất  Các ứng dụng khác (“các mát ứng dụng mềm dẻo”) có thể dùng băng thông nào cũng Thời gian thực được  Một số ứng dụng (ví dụ: điện thoại Internet, trò An toàn bảo mật chơi tương tác) yêu cầu  Mã hóa, đảm bảo toàn vẹn độ trễ thấp mới “hiệu quả” dữ liệu, … Tầng ứng dụng 2-13 Một số yêu cầu dịch vụ giao vận với các ứng dụng phổ biến Mất mát Thời gian Ứng dụng dữ liệu Thông lượng thực Truyền file không mềm dẻo không Thư điện tử không mềm dẻo không Web không mềm dẻo không Audio/video audio: 5kbps-1Mbps chịu lỗi có, 100 msec thời gian thực video:10kbps-5Mbps Lưu trữ audio/video chịu lỗi như trên có, vài giây Trờ chơi tương tác chịu lỗi một vài kbps có, 100 msec Tin nhắn nhanh không mềm dẻo có và không Tầng ứng dụng 2-14 7
  8. Dịch vụ giao thức tầng giao vận của Internet Dịch vụ TCP: Dịch vụ UDP:  Truyền tin cậy giữa tiến trình  Truyền dữ liệu không tin gửi và tiến trình nhận cậy giữa tiến trình gửi và tiến  Điều khiển luồng: bên gửi trình nhận không lấn át bên nhận  Không cung cấp: truyền tin  Điều khiển tắc nghẽn: điều cậy, điều khiển luồng, điều tiết bên gửi khi mạng bị quá tải khiển tắc nghẽn, thời gian  Không cung cấp: thời gian thực, đảm bảo băng thông, an toàn bảo mật, hoặc thiết lập thực, đảm bảo băng thông tối kết nối thiểu, an toàn bảo mật  Hướng kết nối: yêu cầu thiết lập kết nối giữa tiến trình client Hỏi: Tại sao lại dùng cả hai dịch và tiến trình server vụ? Dùng UDP để làm gì? Tầng ứng dụng 2-15 Các ứng dụng Internet: các giao thức tầng ứng dụng và giao vận Giao thức Giao thức Ứng dụng tầng ứng dụng tầng giao vận Thư điện tử SMTP [RFC 2821] TCP Truy nhập từ xa Telnet [RFC 854] TCP Web HTTP [RFC 2616] TCP Truyền file FTP [RFC 959] TCP HTTP (ví dụ: YouTube), TCP hoặc UDP Streaming multimedia RTP [RFC 1889] SIP, RTP, giao thức độc Điện thoại Internet quyền (ví dụ: Skype) TCP hoặc UDP Tầng ứng dụng 2-16 8
  9. Bảo mật TCP TCP & UDP SSL là bảo mật tại tầng  Không mã hóa ứng dụng  Mật khẩu dạng bản rõ  Ứng dụng dùng các thư được gửi vào socket để viện của SSL để “nói” truyền trên Internet theo với TCP dạng bản rõ SSL (Secure Sockets Layer) Socket API của SSL  Hỗ trợ kết nối TCP được  Mật khẩu dạng bản rõ mã hóa được gửi vào socket để  Toàn vẹn dữ liệu truyền trên Internet theo dạng đã được mã hóa  Xác thực thiết bị đầu cuối Tầng ứng dụng 2-17 Chương 2: Nội dung 2.1 Nguyên lý của ứng 2.4 Thư điện tử dụng mạng  SMTP, POP3, IMAP  Kiến trúc của ứng 2.5 DNS dụng  Các yêu cầu của ứng 2.6 Ứng dụng P2P dụng 2.7 Lập trình socket 2.2 Web và HTTP với UDP và TCP 2.3 FTP Tầng ứng dụng 2-18 9
  10. Web và HTTP Một số thuật ngữ:  Trang web bao gồm một số đối tượng (object)  Đối tượng có thể là tệp HTML, ảnh JPEG, Java applet, tệp audio,…  Trang web bao gồm tệp HTML cơ bản chứa một số đối tượng được tham chiếu  Mỗi đối tượng được định địa chỉ bởi một URL, ví dụ: www.someschool.edu/someDept/pic.gif Tên host Tên đường dẫn Tầng ứng dụng 2-19 Khái quát về HTTP HTTP: hypertext transfer protocol  Giao thức tầng ứng dụng của PC đang chạy Web trình duyệt Firefox  Mô hình client/server  client: trình duyệt (browser) yêu cầu, nhận (sử dụng giao thức HTTP), và “hiển Máy chủ thị” các đối tượng Web đang chạy Apache Web  server: Máy chủ web (web server server) gửi (sử dụng giao thức HTTP) các đối tượng Iphone đang chạy đáp ứng cho yêu cầu. trình duyệt Safari Tầng ứng dụng 2-20 10
  11. Khái quát về HTTP Dùng TCP: HTTP là “không trạng thái”  Client khởi tạo kết nối TCP  Server không lưu giữ thông (tạo socket) tới server, tin về những yêu cầu trước cổng 80 đó của client  Server chấp nhận kết nối Vấn đề liên quan TCP từ client Giao thức lưu giữ “trạng thái”  Thông điệp HTTP (thông khá phức tạp! điệp giao thức tầng ứng  Lịch sử quá khứ (trạng thái) dụng) được trao đổi giữa cần phải được lưu giữ trình duyệt (HTTP client) và  Nếu server/client bị sự cố, thì máy chủ Web (HTTP quan điểm về “trạng thái” của chúng có thể không nhất quán, server) cần phải được hòa giải  Đóng kết nối TCP Tầng ứng dụng 2-21 Kết nối HTTP HTTP không bền vững HTTP bền vững  Chỉ có tối đa một đối  Nhiều đối tượng có thể tượng được gửi qua được gửi qua một kết một kết nối TCP nối TCP duy nhất giữa  Kết nối sau đó sẽ client và server được đóng lại  Việc tải về nhiều đối tượng sẽ yêu cầu nhiều kết nối Tầng ứng dụng 2-22 11
  12. HTTP không bền vững Giả sử người dùng gõ URL: (chứa văn bản, www.someSchool.edu/someDepartment/home.index tham chiếu tới 10 ảnh jpeg) 1a. HTTP client khởi tạo kết nối TCP tới HTTP server (tiến 1b. HTTP server tại host trình) tại www.someSchool.edu www.someSchool.edu, đang trên cổng 80 chờ kết nối TCP tại cổng 80, “chấp nhận” kết nối, thông báo cho client 2. HTTP client gửi thông điệp HTTP yêu cầu (chứa URL) 3. HTTP server nhận thông điệp vào trong socket kết nối TCP. yêu cầu, định dạng thông điệp Thông điệp chỉ ra là client đáp ứng chứa đối tượng được muốn lấy đối tượng yêu cầu, và gửi thông điệp vào someDepartment/home.index trong socket của nó thời gian Tầng ứng dụng 2-23 HTTP không bền vững 4. HTTP server đóng kết nối TCP. 5. HTTP client nhận thông điệp đáp ứng chứa tệp HTML, hiển thị HTML. Phân tích tệp HTML, tìm 10 đối tượng jpeg được tham chiếu thời 6. Các bước từ 1 đến 5 được lặp gian lại cho từng đối tượng trong 10 đối tượng jpeg Tầng ứng dụng 2-24 12
  13. HTTP không bền vững: thời gian đáp ứng RTT (định nghĩa): thời gian để một gói tin nhỏ đi từ client đến server và quay lại. Khởi tạo kết Thời gian đáp ứng HTTP: nối TCP  Một RTT để khởi tạo kết nối RTT TCP Yêu cầu tệp  Một RTT để gửi HTTP yêu RTT Thời gian cầu và một vài byte HTTP truyền tệp đáp ứng được trả về Nhận  Thời gian truyền tệp tệp  Thời gian đáp ứng của Thời Thời HTTP không bền vững = gian gian 2RTT+ thời gian truyền tệp Tầng ứng dụng 2-25 HTTP bền vững Vấn đề với HTTP không HTTP bền vững: bền vững:  Server để mở kết nối sau khi gửi đáp ứng  Cần 2 RTT cho mỗi đối tượng  Chuỗi các thông điệp HTTP tiếp theo giữa cùng  Hệ điều hành liên quan client/server sẽ được gửi đến mỗi kết nối TCP thông qua kết nối mở này  Các trình duyệt thường mở  Client gửi yêu cầu ngay nhiều kết nối TCP song sau khi gặp một đối tượng song để lấy các đối tượng được tham chiếu được tham chiếu  Ít nhất là một RTT cho tất cả các đối tượng được tham chiếu Tầng ứng dụng 2-26 13
  14. Thông điệp yêu cầu HTTP  Có hai loại thông điệp HTTP: yêu cầu và đáp ứng  Thông điệp HTTP yêu cầu:  ASCII (định dạng con người có thể đọc được) ký tự trở về đầu dòng ký tự xuống dòng Dòng yêu cầu (các lệnh GET, GET /index.html HTTP/1.1\r\n POST, HEAD) Host: www-net.cs.umass.edu\r\n User-Agent: Firefox/3.6.10\r\n Các dòng Accept: text/html,application/xhtml+xml\r\n tiêu đề Accept-Language: en-us,en;q=0.5\r\n (header) Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n Ký tự trở về đầu Keep-Alive: 115\r\n dòng, xuống dòng Connection: keep-alive\r\n ở đầu một dòng sẽ \r\n cho biết điểm cuối của dòng tiêu đề Tầng ứng dụng 2-27 Thông điệp HTTP yêu cầu: định dạng tổng quát method sp URL sp version cr lf dòng yêu cầu header field name value cr lf ~ các dòng ~ ~ ~ tiêu đề header field name value cr lf cr lf ~ ~ entity body ~ ~ phần thân Tầng ứng dụng 2-28 14
  15. Tải lên form input Phương pháp POST:  Trang web thường chứa form input  Đầu vào (input) được tải lên server trong phần thân thực thể (entity body) Phương pháp URL:  Dùng phương thức GET  Đầu vào được tải lên trong trường URL của dòng yêu cầu: www.somesite.com/animalsearch?monkeys&banana Tầng ứng dụng 2-29 Các loại phương thức HTTP/1.0: HTTP/1.1:  GET  GET, POST, HEAD  POST  PUT  HEAD  Tải tệp lên trong phần  Yêu cầu server dời thân thực thể tới đối tượng được yêu đường dẫn được xác cầu ra khỏi đáp ứng định trong trường URL  DELETE  Xóa tệp được xác định trong trường URL Tầng ứng dụng 2-30 15
  16. Thông điệp đáp ứng HTTP Dòng trạng thái (Giao thức mã trạng thái, HTTP/1.1 200 OK\r\n cụm từ trạng Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n thái) Server: Apache/2.0.52 (CentOS)\r\n Last-Modified: Tue, 30 Oct 2007 17:00:02 GMT\r\n Các dòng ETag: "17dc6-a5c-bf716880"\r\n tiêu đề Accept-Ranges: bytes\r\n Content-Length: 2652\r\n Keep-Alive: timeout=10, max=100\r\n Connection: Keep-Alive\r\n Content-Type: text/html; charset=ISO-8859- 1\r\n \r\n Dữ liệu, data data data data data ... ví dụ tệp HTML yêu cầu Tầng ứng dụng 2-31 Các mã trạng thái đáp ứng HTTP  Mã trạng thái xuất hiện ngay trong dòng đầu tiên của thông điệp đáp ứng từ server đến client.  Ví dụ một số mã: 200 OK  Yêu cầu thành công, đối tượng yêu cầu nằm ở phía sau thông điệp này 301 Moved Permanently  Đối tượng yêu cầu đã bị di chuyển, vị trí mới được xác định ở phía sau thông điệp này (Location:) 400 Bad Request  Server không hiểu thông điệp yêu cầu 404 Not Found  Tài liệu yêu cầu không có trong server này 505 HTTP Version Not Supported Tầng ứng dụng 2-32 16
  17. Tự kiểm tra HTTP (phía client) 1. Telnet đến Web server ưa thích của bạn: telnet cis.poly.edu 80 Mở kết nối TCP ở cổng 80 (cổng mặc định của HTTP server) tại cis.poly.edu. Nhập yêu cầu gì đó và gửi tới cổng 80 tại cis.poly.edu 2. Nhập yêu cầu trong lệnh GET HTTP: GET /~ross/ HTTP/1.1 Bằng cách gõ lệnh này (nhấn enter Host: cis.poly.edu 2 lần), bạn đã gửi yêu cầu GET tối thiểu (nhưng đầy đủ) tới HTTP server 3. Xem thông điệp đáp ứng được gửi về từ HTTP server! (hoặc dùng Wireshark để xem thông điệp yêu cầu/đáp ứng HTTP bắt được) Tầng ứng dụng 2-33 Trạng thái User-server: các cookie Nhiều trang Web sử dụng các Ví dụ: cookie  Susan thường truy nhập Bốn thành phần: Internet từ một PC 1) Dòng tiêu đề cookie của  Cô ấy vào một trang thương thông điệp HTTP đáp mại điện tử lần đầu tiên ứng  Khi yêu cầu HTTP khởi tạo đi 2) Dòng tiêu đề cookie đến trang, trang sẽ tạo ra: trong thông điệp HTTP  Một ID duy nhất yêu cầu tiếp theo  Điểm truy nhập vào cơ sở 3) Tệp cookie được lưu giữ dữ liệu back-end cho ID trên host của người dùng, được quản lý bởi trình duyệt của người dùng. 4) Cơ sở dữ liệu back-end tại Web site Tầng ứng dụng 2-34 17
  18. Các cookie: lưu giữ “trạng thái” (tiếp) client server ebay 8734 Thông điệp HTTP yêu cầu thông thường Amazon server tệp cookie tạo ID HTTP đáp ứng thông thường 1678 cho CSDL set-cookie: 1678 tạo điểm ebay 8734 người dùng truy nhập back-end amazon 1678 Thông điệp HTTP yêu cầu thông thường cookie- cookie: 1678 truy nhập hành động Thông điệp HTTP đáp ứng cụ thể thông thường một tuần sau: truy nhập Thông điệp HTTP yêu cầu ebay 8734 thông thường amazon 1678 cookie: 1678 cookie- hành động Thông điệp HTTP đáp ứng cụ thể thông thường Tầng ứng dụng 2-35 Các cookie (tiếp) Ngoài ra Các cookie có thể được cookie và sự riêng tư: dùng cho những việc gì?  Cookie cho phép các site biết  Cấp phép nhiều hơn về người dùng  Giỏ mua hàng  Người dùng có thể cung cấp  Khuyến nghị tên và e-mail cho các site  Trạng thái phiên làm việc của người dùng (Web e-mail) Làm cách nào để lưu giữ “trạng thái”:  Các điểm cuối giao thức: duy trì trạng thái tại bên gửi/bên nhận thông qua nhiều giao dịch  Các cookie: các thông điệp HTTP mang trạng thái Tầng ứng dụng 2-36 18
  19. Web caches (proxy server) Mục tiêu: thỏa mãn yêu cầu của client mà không cần liên quan đến server nguồn  Người dùng thiết lập trình duyệt: truy nhập Web qua vùng nhớ đệm (cache) proxy  Trình duyệt gửi tất cả các server yêu cầu HTTP tới cache client server  Nếu đối tượng có trong nguồn cache: cache sẽ trả về đối tượng  Ngược lại, cache sẽ yêu cầu đối tượng từ server nguồn, sau đó sẽ trả đối client server tượng về cho client nguồn Tầng ứng dụng 2-37 Web caching  Bộ nhớ cache hoạt động Tại sao lại cần Web caching? ở cả client và server  Làm giảm thời gian đáp ứng  Server đáp ứng cho yêu cầu cho yêu cầu của client đầu tiên từ một client  Làm giảm lưu lượng trên  Client gửi yêu cầu tới server gốc một liên kết truy nhập của tổ  Cache thường được cài chức đặt bởi ISP (trường học,  Nếu Internet thực hiện cache công ty, khu dân cư) nhiều thì sẽ làm cho các nhà cung cấp nội dung “nghèo nàn” phân phối nhiều nội dung đó (cũng tương tự như chia sẻ file P2P). Tầng ứng dụng 2-38 19
  20. Ví dụ caching Giả thiết:  Kích thước của đối tượng trung bình: các server 100K bits nguồn  Tốc độ yêu cầu trung bình từ các Internet trình duyệt tới server nguồn: 15/giây công cộng  Tốc độ dữ liệu trung bình tới trình duyệt: 1.50 Mbps  RTT từ bộ định tuyến của tổ chức đến server nguồn bất kỳ: 2 giây liên kết  Tốc độ của liên kết truy nhập: 1.54 truy nhập Mbps 1.54 Mbps Mạng của Kết quả: tổ chức LAN 1 Gbps  Độ khả dụng của LAN: 15%  Độ khả dụng của liên kết truy nhập = 99% Vấn đề!  Trễ tổng = trễ của Internet + trễ truy nhập + trễ của LAN = 2 giây + một số phút + (~ 1 giây) Tầng ứng dụng 2-39 Ví dụ caching: tăng tốc độ của liên kết truy nhập lên Giả thiết:  Kích thước của đối tượng trung bình: 100K bits Các server  Tốc độ yêu cầu trung bình từ các trình duyệt tới server nguồn: 15/giây nguồn Internet  Tốc độ dữ liệu trung bình tới trình công cộng duyệt: 1.50 Mbps  RTT từ bộ định tuyến của tổ chức đến server nguồn bất kỳ: 2 giây  Tốc độ của liên kết truy nhập: Liên kết 1.54 Mbps 154 Mbps truy nhập 1.54 Mbps 154 Mbps Kết quả: Mạng của  Độ khả dụng của LAN: 15% công ty LAN 1 Gbps  Độ khả dụng của liên kết truy nhập = 99% 9.9%  Tổng trễ = trễ của Internet + trễ truy nhập + trễ của LAN Một số giây = 2 giây + một số phút + (~ 1 giây) Chi phí: để làm tăng tốc độ liên kết truy nhập (không hề rẻ!) 2-40 Tầng ứng dụng 20
nguon tai.lieu . vn