Bài giảng Định danh

Tên giữ một vai trò rất quan trọng trong tất cả các hệ thống máy tính. Chúng thường được sử dụng để chia sẻ tài nguyên, nhận biết các thực thể duy nhất, tương ứng với các vị trị và hơn nữa. Một vấn đề quan trọng của việc định danh đó là tên có thể được phân giải tới thực thể tương ứng. Do đó giải pháp định danh cho phép một tiến trình truy cập tới thực thể đã được đặt tên. Để phân giải tên, cần phải bổ sung hệ thống định danh. Sự khác nhau giữa việc đặt tên trong DS và non-DS nằm ở cách hệ thống đặt tên được thực hiện (implemented).

doc12 trang | Chia sẻ: haohao89 | Lượt xem: 2269 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài giảng Định danh, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chương 5 : Định Danh Tên giữ một vai trò rất quan trọng trong tất cả các hệ thống máy tính. Chúng thường được sử dụng để chia sẻ tài nguyên, nhận biết các thực thể duy nhất, tương ứng với các vị trị và hơn nữa. Một vấn đề quan trọng của việc định danh đó là tên có thể được phân giải tới thực thể tương ứng. Do đó giải pháp định danh cho phép một tiến trình truy cập tới thực thể đã được đặt tên. Để phân giải tên, cần phải bổ sung hệ thống định danh. Sự khác nhau giữa việc đặt tên trong DS và non-DS nằm ở cách hệ thống đặt tên được thực hiện (implemented). Trong 1 DS, sự thực thi của hệ thống đặt tên được phân tán trên nhiều máy. Sự phân bố này được thực hiện như thế nào đóng một vai trò then chốt đối với hiệu năng và khả năng mở rộng của của hệ thống đặt tên. Trong chương này chúng ta tập trung vào 3 cách khác nhau và cũng rất quan trọng trong việc sử dụng các hệ thống đặt tên. Đầu tiên, sau khi thảo luận một vài vấn đề cơ bản với sự lưu tâm tới việc đặt tên, chúng ta có cái nhìn gần hơn tới sự tổ chức và bổ sung của các tên thân thiên với con người (human-friendly names). Những ví dụ điển hình của những tên như thế bao gồm những tên đặt cho files system và WWW. Trong việc xây dựng WWW, hệ thống đặt tên mà có thế mở rộng được là mối quan tâm chính đại diện cho những cái tên như thế. Thứ 2, các tên được sử dụng để xác định vị trí các thực thể theo cách thức is independent of their current location. Khi nó đưa ra, hệ thống đặt tên đại diện cho human-friendly names không phù hợp hoàn toàn cho việc hỗ trợ kiểu theo dõi thực thể này. Hầu hết các tên không gợi ý at the entity’s location. Các sự tổ chức thay thế là cần thiết, như là ………………….. Cuối cùng, con người thường miêu tả thực thể bằng các đặc điểm khác nhau, đưa đến một tình huống mà chúng ta cần phân giải sự miêu tả đó bằng các thuộc tính khớp với miêu tả đó. 5.1 Tên, Từ Định Danh, và Địa Chỉ Trên thực tế, tên là gì? Tên trong một DS là một dãy các bit hãy ký tự dùng để tham chiếu đến một thực thể. Một thực thể trong một DS có thể là bất cứ thứ gì thực tế. Những ví dụ điển hình bao gồm các tài nguyên như hosts, printers, disks, files. Các ví dụ về thực thể khác hay được biết đến mà thường được đặt tên rõ ràng đó là processes, users, mailboxes, newsgroups, Web pages, messages … Các thực thể có thể hoạt động. Lấy ví dụ, một tài nguyên như máy in yêu cầu giao diện bao gồm các thao tác cho việc in tài liệu, yêu cầu trang thái của công việc in, … Cụ thể hơn, một thực thể như network connection có thể cung cấp các thao tác cho việc gửi và nhận dữ liệu, thiết lập các tham số QoS, yêu cầu trạng thái, … Để hoạt động trên một thực thể, cần phải truy nhập đến nó, cái mà chúng ta cần ở đây là một access-point. An access-point is yet another, nhưng đặc biệt, nó là một loại thực thể trong DS. Tên của access-point được gọi là địa chỉ. Địa chỉ của một access-point của một thực thể cũng được gọi là địa chỉ của thực thể đó. Một thực thể có thể yêu cầu nhiều access-point. Như sự so sánh sau đây, một điện thoại có thể xem như một access-point của một người, trong khi đó số điện thoại tương ứng với địa chỉ. Thực vậy, ngày nay rất nhiều người có vài số điện thoại, mỗi số tương ứng với một điểm mà họ có thể liên lạc được. Trong DS, một ví dụ điển hình của access-point đó là một host đang vận hành một server cụ thể với địa chỉ được kết hợp lài từ địa chỉ IP và Port number. Một thực thể có thể thay đổi access-point của nó trong một khoảng thời gian. Ví dụ như khi một cái máy tính di động di chuyển đến vị trí khác, nó thường đăng ký một địa chỉ IP khác với địa chỉ trước đó. Tương tự như vậy, khi một người đến một thành phố hay đất nước khác thì họ cần phải đối số điện thoại. Hay là thay đổi công việc hay ISP, có nghĩa là thay đổi email của bạn. Do đó một địa chỉ chỉ là một loại tên đặc biệt: nó tham chiếu đến một access-point của thực thể. Bởi vì một access-point liên quan chặt chẽ với một thực thể, có vẻ như việc sử dụng địa chỉ của một access-point như là một cái tên thông thường đại diện cho thực thể đó mang lại tiện lợi. Tuy nhiên, việc này hầu như không bao giờ được thực hiện vì việc đặt tên thường rất linh hoạt và không được thân thiện với con người. Ví dụ như, sẽ là bất thường nếu tổ chức lại DS một cách đều đặn, vì điều đó mà có thê một server nào đó mà đang chạy trên một host khác so với trước đo. Máy trước đó mà server sử dụng có thể đăng ký lại một server hoàn toàn khác. Nói cách khác, một thực thể có thể dễ dàng thay đổi access-point, hay 1 access-point có thể đăng ký lại thực thể. Nếu một địa chỉ được sử dụng tham chiếu đến 1 thực thể, chúng ta sẽ có 1 tham chiêu không đúng, ngay lúc đó access-point thay đổi hay đăng ký lại thực thể khác. Vì vậy, sẽ là tốt hơn rất nhiều khi để một dịch vụ được biết dưới một cái tên riêng biệt, độc lập với địa chỉ của server tương ứng. Tương tự như vậy, nếu một thực thể yêu cầu nhiều hơn 1 access-point, nó sẽ không rõ ràng rằng địa chỉ nào sẽ dùng để tham chiếu. Lấy ví dụ, rất nhiều tổ chức phân bố Web service của họ trên vài server. Nếu chúng ta sử dụng các địa chỉ cảu những server này như một tham chiếu cho Web service, it is not obvious which address should be chosen as the best one. Lại một lần nữa, một giải pháp tốt hơn rất nhiều đó là chỉ có một tên đại diện cho Web service độc lập với địa chỉ của các Web server khác nhau. Những ví dụ này minh họa rằng tên đại diện cho một thực thể mà độc lập với địa chỉ của nó thì thường sử dụng dễ dàng và linh hoạt hơn. Những cái tên như vậy được gọi là location independent. Thêm vào cùng với địa chỉ, có nhiều loại tên khác nhau mà đáng được xử lý đặc biệt, những tên như vậy được sử dụng để phân biệt một thực thể duy nhất. Một từ định danh đúng là một tên mà có những thuộc tính sau: Một từ định danh tham chiếu tới nhiều nhất 1 thực thể. Mỗi thực thể được tham chiếu nhiều nhất bởi 1 từ định danh. Một từ định danh luôn luôn tham chiếu tới cùng 1 thực thể. ( nó không được phép sử dụng lại) Bằng cách sử dụng từ định danh, sẽ dễ dàng hơn rất nhiều để tham chiếu rõ ràng tới một thực thể. Ví dụ, coi như có 2 tiến trình đang cùng tham chiếu tới 1 thực thể, sẽ rất hiệu quả để kiểm tra nếu 2 định danh là tương đương. Việc kiểm tra như thế sẽ không hiệu quả nếu 2 tiến trình sử dụng những tên thông thường, không duy nhất, và không có tính nhận dạng (nonidentifying). Ví dụ, tên “John Smith” không thể lấy làm tên tham chiếu duy nhất tới chỉ một người. Cũng tương tự như vậy, nếu một địa chỉ có thể đăng ký lại tới một thực thể kahcs, chúng ta không thể sử dụng một địa chỉ như một định danh. Hãy xem xét tới việc sử dụng các số điện thoại, một số điện thoại trong thời gian nào đó để chỉ tới cùng một người hay cùng một tổ chức. Tuy nhiên, việc sử dụng số điện thoại như một định danh sẽ không hoạt động khi nó có thể đăng ký lại trong thời gian nào đó. Vì vậy, hiệu bánh mới của Bob có thế nhận điện thoại gọi tới hiệu bán đồ cổ Alice trong thời gian dài. Trong tình huống này, có lẽ sẽ tốt hơn nếu sử dụng một định danh đúng đại diện cho Alice thay cho số điện thoại của Alice. Địa chỉ và định danh là 2 loại tên quan trọng mà mỗi loại được sử dụng với 1 mục địch rất khác nhau. Trong rất nhiều hệ thống máy tính, địa chỉ và định danh chỉ được biểu diễn dưới dạng mã máy (machine-readable), nghĩa là 1 chuỗi các bit. Ví dụ, một địa chỉ Ethernet cơ bản là một chuỗi ngẫu nhiên 48 bit. Tương tự như vậy, địa chỉ bộ nhớ thường được biểu diễn dưới dạng 32 hay 64 bit. Một loại tên quan trọng khác mà được biến đổi để phục vụ con người đó là human-friendly names. Trái ngược với địa chỉ và định danh, human-friendly name thường được biểu diễn dưới dạng một chuỗi ký tự. Những tên này xuất hiện trong rất nhiều dạng. như là tên file trong hệ thống UNIX là một chuỗi ký tự có thể lên đến 255 chữ cái, và được định nghĩa bởi user, một ví dụ khác là DNS. Việc có đươc tên, định danh và địa chỉ mang chúng ta tới với chủ đề của chương này: làm sao chúng ta có thẻ phân giải tên và định danh sang địa chỉ? Trước khi đi vào những giải pháp khác nhau, có môt điều quan trọng là phải nhận ra đó là có một mối quan hệ chặt chẽ giữa các giải pháp đặt tên trong DS và định tuyến thông điệp (message routing). Về cơ bản, hệ thống đặt tên bao gồm name-to-address binding, là một dạng đơn giản nhất: là một bản gồm các cặp tên và địa chỉ. Tuy nhiên, trong DS mà mạng kết nối rộng và có nhiều tài nguyên cân đặt tên thì cái bảng đó sẽ không hoạt động. Thay vào đó, những gì thường xảy ra đó là tên được phân tích thành vài phần như ftp.cs.vu.nl và giải pháp đặt tên này sẽ thực hiện tìm kiếm đệ quy. CÁC KIỂU ĐỊNH DANH TRONG HỆ PHÂN TÁN 5.2 Định danh phẳng 5.3 Định danh có cấu trúc Định danh phẳng thích hợp với máy nhưng nó gây khó khăn cho người sử dụng. Do đó ra đời một hệ thống định danh hỗ trợ các tên có cấu trúc, phù hợp với con người, phục vụ không chỉ hệ thống tên file mà cả hệ thống tên host trên internet. 5.3.1 Không gian tên Trong hệ thống tên có cấu trúc, không gian tên được biểu điễn bằng biểu đồ có hướng với các node và nhãn. Có hai loại node: Node lá : biểu diễn một thực thể, chứa các thông tin như địa chỉ hoặc trạng thái của thực thể,không có mũi tên đi ra Node thư mục: có nhiều mũi tên đi ra, chứa bảng directory table, trong bảng chứa các cặp : tên mũi tên- tên node n0 : root , một biểu đồ tên có thế có nhiều root, nhưng thường chỉ có một. Đường dẫn sẽ có dạng: N: N: là root -> đó là đường dẫn tuyệt đối, trường hợp còn lại -> đường dẫn tương đối. Tương ứng với hai khái niệm này còn có hai khái niệm global name và local name Các miêu tả của biểu đồ tên gần giống với hệ thống file, tuy nhiên thay vì biểu diễn dạng nó sử dụng cách biểu diễn Một node có thể được biểu diễn bởi các đường dẫn khác nhau.( ví dụ node n5 trên hình 5-9 có thể biểu diễn qua hai đường dẫn /keys hoặc /home/steen/keys. Tuy nhiên việc một node có nhiều đường dẫn được sử dụng nhiều trong biểu đồ tên hơn là trong hệ thống file. Trong một số hệ thống, tất cả các tài nguyên như processes, hosts, I/O devices và network interface được đặt tên theo kiểu file truyền thống, cách tiếp cận này giống như việc cài đặt một biểu đồ tên đơn cho tất cả các tài nguyên trong hệ phân tán. Trong hầu hết các trường hợp, không gian tên được tổ chức một cách chặt chẽ, điều này có nghĩa là trên biểu đồ tên, trừ node gốc và node lá nỗi node chỉ có một đường đi vào -> mỗi node chỉ có duy nhất một đường dẫn tuyệt đối. ( ví dụ cho phần này: hệ thống file của unix) 5.3.2 Phân giải tên Không gian tên đưa ra kĩ thuật lưu trữ và tìm kiếm các tên trên nó một cách dễ dàng. Một trong những phương pháp hay dùng là sử dụng đường dẫn. Quá trình tìm kiếm tên trong không gian tên được gọi là phân giải tên (name resolution). Quá trình phân giải tên trả về định danh một node. Closure machanism: là kĩ thuật cho ta biết quá trình tìm kiếm tên được bắt đầu như thế nào và bắt đầu ở đâu. Linking: kĩ thuật này sử dụng bí danh (alias) - tên giống với tên của thực thể. Với kĩ thuật này cho phép nhiều đường dẫn cùng tham chiếu đến cùng một nút trên đồ thị tên. Một cách tiếp cận khác là dùng một nút lá không phải để lưu trữ địa chỉ hay trạng thái của thực thể mà để lưu trữ đường dẫn tuyệt đối tới thực thể đó. Mounting: là kĩ thuật được thực hiện khi tìm kiếm trên hai không gian tên. Một nút thư mục được gọi là một mount point (điểm gắn kết) lưu giữ id (hoặc các thông tin cần thiết cho việc xác định và truy nhập) một nút thư mục bên phía không gian tên cần gắn kết được gọi là mounting point. Hình . Mouting một không gian tên từ xa nhờ một giao thức truy cập Thông thường, nếu 2 không gian tên NS1, NS2 – để gắn kết một thực thể bên ngoài trong hệ phân tán, chúng ta cần tối thiểu những thông tin sau: Tên của giao thức truy nhập ( được xác định để thực hiện giao thức truyền thông) Tên của server (xá định địa chỉ server) Tên của mounting point (xác định id của nút trong không gian tên bên ngoài) 5.2.3 Cài đặt không gian tên. Phân phối không gian tên Trong hệ phân tán, việc quản lý tên được thực hiện bằng cách phân thành các mức: Mức Global: Chứa những nút thư mục ở mức cao ( gốc và con của nó). Trong lớp này các nút thư mục ít thay đổi.Khả năng sẵn sàng ở lớp Global được yêu cầu cao hơn so với các lớp còn lại. Nếu name server của lớp này bị lỗi thì việc phân giải tên không thể thực hiện. Mức Administrational: Chứa những nút thư mục ở mức trung gian, nó có thể được nhóm thành các nhóm, và mỗi nhóm có thể được chia cho những khu vực quản trị khác nhau. Các nút ở trong nhóm này cũng ít khi thay đổi. Khả năng sẵn sàng của name server trong lớp administrational là rất quan trọng đối với các client do name server quản lí. Vì nếu server này lỗi thì có rất nhiều các tài nguyên không thể truy cập Mức Managerial: Chứa những nút thư mục ở mức thấp. Các nút trong mức này thay đổi khá thường xuyên. Ví dụ như các host trong một mạng LAN. Yêu cầu đối tính sẵn sàng của name server của lớp managerial ít khắt khe hơn so với 2 lớp trên. Song về hiệu năng thì yêu cầu đối với lớp này cao hơn do phải thường xuyên cập nhật các thay đổi. Hình . Thực hiện phân giải tên Cách 1: phân giải tên tương tác (interactive name sesolution),việc phân giải tên thực hiện bằng cách truyền và nhận qua lại giữa client và các name server ở các mức khác nhau. Theo cách này thì các server không trao đổi trực tiếp với nhau, mỗi server chỉ phân giải nhãn tương ứng với lớp để xác định địa chỉ của server tiếp theo, kết quả trả lại cho client là địa chỉ của name server tiếp theo, và việc liên kết với server tiếp theo là do client đảm nhiệm. Hình . Cách 2: phân giải tên đệ quy (recursive name resolution), theo cách này thì mỗi name server sẽ gửi kết quả đến name server tiếp theo mà nó tìm thấy. Và cứ như vậy cho đến khi hoàn thành phân giải toàn bộ đường dẫn. 5.4 Định danh theo thuộc tính Khi thực thể có càng nhiều thông tin hợp lệ cho việc tìm kiếm thì việc định danh hợp lý các thực thể càng trở nên cần thiết. Hướng tiếp cần này đòi hỏi người sử dụng đơn thuần là cung cấp những mô tả về cái mà anh ta đang tìm. Có nhiều cách để cung cấp những mô tả nhưng một cách phổ biến trong hệ phân tán là mô tả một thực thể theo một cặp (thuộc tính, giá trị), cách này được gọi là định danh theo thuộc tính. Theo cách định danh này, một thực thể có một tập hợp liên kết các thuộc tính, mỗi thuộc tính lại mô tả một vài điều về thực thể này. Bằng việc chỉ rõ ra giá trị mà thuộc tính có thể có, người sử dụng ràng buộc bản chất của các thực thể mà anh ta quan tâm. Công việc của hệ thống định danh là trả về một hay nhiều thực thể hợp với những mô tả đã được người sử dụng cung cấp. Trong phần này chúng ta sẽ tiếp cận gần hơn với những hệ thống định danh theo thực thể 5.4.1 Directory Service – Dịch vụ thư mục Hệ thống định danh theo thuộc tính cũng được biết đến với cái tên “dịch vụ thư mục” – Directory service còn hệ thống hỗ trợ danh định theo cấu trúc lại được gọi là những hệ thống định danh. Với dịch vụ thư mục, thực thể có một tập các thuộc tính được sử dụng cho việc tìm kiếm. Việc chọn các thuộc tính đôi khi là đơn giản song đôi khi lại phức tạp, khi mà việc tìm kiếm đỏi hỏi những dạng mô tả khác làm cho việc phát triển nhữgn bộ lọc trở nên khó khăn Việc thiết kế một tập các thuôc tính phù hợp là không đơn giản. Trong phần lớn các trường hợp, việc thiết kế thuộc tính phải làm bằng tay và thực tế chỉ ra rằng việc thiết lập những giá trị đồng trị trên tập những thuộc tính để sử dụng bởi một nhóm nhứng người khác nhau, đôi khi vấn đề là ở bản thân nó. Ví dụ điển hình là truy cập dữ liệu về nhạc và video trên Internet Đẻ khắc phục vấn đề này, nhiều nghiên cứu đã được kiểm hạch những phương pháp thống nhất về mô tả tài nguyên. Xét ở quan điểm hệ phân tán, một phát triển đặc biệt phù hợp là RDF- Resource description framework. Sơ sở của Mô hình RDF là tài nguyên được mô tả như 1 bộ ba gồm: một chủ ngữ(subject), một vị ngữ (predicate) và một tân ngữ (object). Ví dụ: (Person, name, LinhNT). Trong RDF, bản thân mỗi một chủ ngữ, vị ngữ, tân ngữ đều là một tài nguyên. Trong nhiều trường hợp của vị ngữ, tài nguyên có thể bao gồm những mô tả văn bản của vị ngữ. Tham chiếu trong RDF cơ bản là các URL. Nếu các mô tả tài nguyên được lưu trữ lại thì chúng có thể được truy vấn theo các cách thông thường trong các hệ định danh theo thuộc tính và kết quả thông thường được trả về cho các ứng dụng. Dù vậy việc những mô tả tài nguyên được lưu trữ tập trung thì sẽ làm vắt kiệt hiệu năng của hệ thống và hệ phân tán có một ví dụ về việc giải quyết những vấn đề này, đó là LDAP 5.4.2 Thực thi có thứ bậc: Hierarchical Implementation: LDAP Một cách tiếp cận để giải quyết vấn đề với dịch vụ thư mục phân tán là kết hợp danh định cấu trúc và danh định theo thuộc tính. Cách giải quyết này có ứng dụng khá rộng lớn như Microsoft Active Directory và những hệ thống khác. Nhiều hệ thống sử dụng hoặc dựa trên giao thức truy cập thư mục không ưu tiên – lightweight directory access protocol, được gọi tắt là LDAP. Dịch vụ thư mục LDAP được đưa ra từ hệ thống OSI X.500 và như nhiều dịch vụ khác, chất lượng của những thực thi phù hợp của chúng đã cản trở việc sử dụng rộng rãi Một cách khái niệm, một dịch vụ thư mục LDAP bao gồm một số những bản ghi mà thông thường là các thực thể thư mục. Một thực thể thư mục có thể so sánh với bản ghi tài nguyên trong DNS. Mỗi bản ghi được tạo ra từ một tập hơp các cặp (thuộc tính, giá trị). Có sự phân biệt giữa thuộc tính đơn trị và thuộc tính đa trị. Sự khác biệt sau đó là đối với mảng và danh sách Trong ví dụ trên, chúng ta sử dụng một quy tắc đặt tên trongchuẩn LDAP được áp dụng vào 5 thuộc tính. Thuộc tính Organization và OrganitionUnit mô tả các tổ chức vànững phần tương ứng với dữ liệu đươc lưu trữ trong bản ghi. Cũng tương tự như vậy, thuộc tính Locality và Country cung cấp những thông tin thêm về vị trí mà thực thể được lưu trữ. Thuộc tính CommonName được sử dụng như một tên để định nghĩa một thực thể với phần giới hạn của thư mục. Chỉ cần 1 truy vấn “Main server” là đủ cho việc tìm kiếm mà đưa ra giá trị của các thuộc tính khác, cụ thể ở đây là Organization, …. Có thể thấy rõ rằng ở đây Mail_Server là một thuộc tính đa trị còn FTP_Server là một thuộc tính đơn trị Tập hợp tất cả các thực thể thư mục trong dịch vụ thư mục LDAP được gọi là Directory information base (DIB), mỗi bản ghi trong DIB được định danh sao cho mỗi tên là duy nhất để có thể được tìm ra, như một tên duy nhất toàn cục xuất hiện với danh định thuộc tính ở mỗi bản ghi. Mỗi danh định thuộc tính này được gọi là relative distinguished name hoặc gọi tắt là RDN. Trong ví dụ ở hình 5-22, thuộc tính Country, Organization, OrganizationalUnit có thể được sử dụng để định dạng tên duy nhất Giống như trong những DNS, cách sử dụng những tên duy nhất đó bằng cách liên tục lập danh sách đưa ra một cấp bậc cho tập hợp những thực thể được quy nạp vào như một cây thông tin thư mục – directory information tree gọi tắt là DIT. Một DIT cần phải đưa ra một khuôn dạng đồ thì của một dịch vụ thư mục LDAP mà mỗi nút thể hiện một thực thể. Thêm vào đó, một nút có thể có con của nó, kiểu hoạt động này giống như cây thư mục truyền thống Trong ví dụ trên. Nút N vừa hoạt động giống nút cha của nó vừa có một số các thực thể thư mục khác đóng vai trò nút con được thêm vào. Việc thực thi dịch vụ thư mục LDAP xử lý giống như một dịch vụ định danh giống như 1 DNS, trừ việc LDAP hỗ trợ nhiều phép tóan tìm kiếm hơn. Khi liên hệ với một large-scale directory, DIT được phân chia và phân tán ra nhiều DSA – Directory Service agents server. Mỗi phần DIT được chia ra theo đó tương ứng với một không gian DNS. Cũng giống như vậy, mỗi DSA cư xử theo cách giống như một server đăt tên (name server) thông thường trừ việc thực thi một số những dịch vụ thư mục cần thiết như các phép toán thực hiện tìm kiếm nâng cao Điều khiến cho một phương thức của LDAP khác với một phương thức của DNS là phương tiện thuân lợi cho việc tìm kiếm thông qua một DIB. Theo thông thường phương tiện thuận lợi này được cung cấp cho việc tìm kiếm mỗi thực thể thư mục mà mang lại một tập các thuộc tín
Tài liệu liên quan