VII. Application Layer (data)
Lớp 6 Presentation
Trong 5 bài trc, tôi đã viết về năm lớp thấp nhất của mô hình tham chiếu OSI. Trong bài này, chúng ta sẽ cùng nhau tìm hiểu lớp thứ 6. Lớp 6, còn đc gọi là lớp Presentation, là lớp đầu tiên thực hiện quá trình truyền dữ liệu xuyên qua 1 mạng ở mức độ trừu tượng hơn so với chỉ những bit 0 và 1; ví dụ như khi chúng ta truyền 1 bức thư, lớp này sẽ cho biết chúng đc biểu diễn dưới dạng 0 và 1 như thế nào (hay nói 1 cách rõ ràng hơn, chungs đc biểu diễn như thế nào ở dưới những lớp thấp hơn của mô hình tham chiếu OSI).
Chức năng này có thể hiểu như là 1 quá trình translation, nó cho phép những ứng dụng khác nhau (thường là ở trên những phần cứng máy tính khác nhau) có thể trao đổi thông tin bằng những chuẩn translation chung đã đc quy định, đc gọi là cú pháp truyền tải. Bên cạnh cú pháp truyền tải có thể biểu diễn những chuỗi bit 0 và 1, còn có những cú pháp truyền tải khác có thể truyền tải đc những dữ liệu phức tạp hơn, như những đối tượng trong các ngôn ngữ lập trình hướng đối tượng (Object Oriented Programming languages). Extensible Markup Language (XML) là 1 ví dụ cho điều này.
Nén dữ liệu (Compression):
1 chức năng quan trọng khác của lớp Presentation là nén dữ liệu. Nén dữ liệu thường dùng để tối ưu hóa đường truyền trong 1 mạng, hay tối ưu hóa dung lượng
đĩa cứng khi lưu dữ liệu.
Nén ko làm mất dữ liệu (Lossless Compression):
Có 2 kiểu nén chuẩn thường đc nói đến là nén ko mất dữ liệu và nén mất dữ liệu. Nén ko mất dữ liệu, như tên gọi của nó, sẽ nén dữ liệu theo cách mà sau khi giải nén, dữ liệu sẽ hoàn toàn chính xác giống như trc khi nó đc nén; ko có bất cứ dữ liệu nào bị mất. Nén ko làm mất dữ liệu sẽ đạt hiệu quả nén 1 file ko cao như kỹ thuật nén làm mất dữ liệu, và có thể sẽ đòi hỏi nhiều hiệu suất hoạt động hơn để thực hiện đc quá trình nén; vì vậy, chúng ta cần phải lựa chọn kỹ thuật nén cho phù hợp.
Mã hóa từđiển:
Kỹ thuật chung để thực hiện việc nén ko mất dữ liệu là dùng 1 từ điển. Phương pháp này, thường đc gọi là bộ mã hóa thay thế, sẽ tìm kiếm để so sánh giữa thông tin dc gửi và những thông tin trong từ điển. Ví dụ, bạn có thể dùng 1 cuốn từ điển tiếng anh như 1 cuốn từ điển và khi bạn muốn bạn có thể nén nội dung của quyển sách của bạn 1 cách đơn giản bằng cách thay mỗi từ bằng 1 vị trị của từ ở trong cuốn từ điển. Giải nén thông tin đã đc nén là công việc ngược lại, những vị trị sẽ đc thay thế bởi các từ ở đúng vị trí đó.
Ví dụ, thuật toán LZ77 và LZ78 làm việc với 1 bộ từ điển có hình thức như 1 cửa sổ trượt. 1 từ điển có dạng cửa sổ trượt là 1 bộ từ điển có thể thay đổi trong suốt quá trình nén. Về cơ bản, 1 từ điển cửa sổ trượt bao gồm 1 chuỗi thay thế gồm N byte cuối cùng của dữ liệu đc nén. Khi sử dụng từ điển cửa sổ trượt, dữ liệu đc nén sẽ yêu cầu 2 giá trị để xác định chuỗi thay thế. 2 giá trị này là ký tự đầu tiên của chuỗi thay thế, và chiều dài của chuỗi thay thế.
Mã hóa Run-Length:
1 ví dụ cơ bản khác của nén ko mất dữ liệu là mã hóa Run-length. Thuật toán mã hóa Run-length sẽ thay thế 1 tập con dữ liệu đc lặp đi lặp lại nhiều lần, và số lần lặp của tập dữ liệu này sẽ đc thông báo. 1 ví dụ thực tế mà mã run-length đc sử dụng rất hiệu quả chính là máy fax. Hầu hết máy fax đều sử dụng văn bản nền trắng với ký tự màu đen. Vì vậy, lược đồ mã hóa run-length có thể sử dụng mỗi dòng và truyền mã của màu trắng với số pixel của nó, cũng tương tự như vậy là mã của màu đen với số pixel của nó. Vì hầu hết các máy fax có phần màu trắng là chủ yếu nên độ dài của gói tin đc truyền sẽ đc giảm xuống đáng kể.
Tuy nhiên, chúng ta cần phải sử dụng phương pháp nén này 1 cách hết sức cẩn thận. Nếu ko có nhiều lần dữ liệu đc lặp lại thì lược đồ ma hóa run-length có thể làm tăng kích thước của 1 file.
Nén mất dữ liệu:
Rõ ràng ko phải lúc nào chúng ta cũng có thể mong muốn và thực hiện đc mong muốn nén ko mất dữ liệu. trong nhiều trường hợp, phương pháp nén ko mất dư liệu sẽ ko thể nén dữ liệu 1 cách tốt nhất, hữu dụng nhất. Trong những trường hợp khác, công nghệ nén ko mất dữ liệu sẽ chiếm quá nhiều hiệu năng cho việc nén và giải nén, và trong những trường hợp này cũng như trong nhiều trường hợp khác, phương pháp nén mất dữ liệu có thể cho những kết quả thực sự rất khó phân biệt so với phương pháp nén ko mất dữ liệu đối với ng sử dụng. Hình 1 là biểu đồ cho thấy tốc độ nén dữ liệu:
Hình 1: Biểu đồ tốc độ nén dữ liệu.
Nén ảnh số:
Kỹ thuật nén ảnh số là 1 trường hợp cần phải hết sức cẩn thận trong quá trình lựa chọn giữa việc sử dụng phương pháp nén có mất dữ liệu và nén ko mất dữ liệu. Thường thì lựa chọn phương pháp nén phụ thuộc vào ảnh đc nén. Những ảnh như ảnh y học đòi hỏi cần phải có các chi tiết cần phải hiện 1 cách thật rõ ràng và sắc
nét là điều hết sức quan trọng nên yêu cầu phương pháp nén ko mất dữ liệu. Tuy nhiên, những bức ảnh của gia đình bạn trong những chuyến picnic có thể giảm kích thước ảnh xuống bằng việc nén mất dữ liệu.
Trong trường hợp với những bức ảnh của gia đình bạn, thức tế là phương pháp nén mất dữ liệu ko làm giảm đi chất lượng của hình ảnh, làm nó trở nên xấu đi. Trong thực tế, có nhiều phương pháp nén mất dữ liệu cho những bức ảnh số có thể lợi dụng đặc điểm mắt ng thường nhậy với ánh sáng hơn là sự thay đổi màu sắc. Điều này nghĩa là phương pháp nén lưu những màu sắc giống nhau ở cùng 1 màu trong khi lưu dữ liệu độ sáng bằng phương pháp mất dữ liệu. Phương pháp này đc gọi là lấy mẫu sắc độ.
Nén âm thanh số:
1 ví dụ khác mà những phương nén mất dữ liệu dc ứng dụng rất tốt là nén âm thanh số. Kỹ thuật nén âm thanh số làm mất dữ liệu sử dụng 1 phương pháp đã từng đc nghiên cứu là psychoacoustics. Về cơ bản, psychoacoustics là khoa học nghiên cứu cách con người làm thế nào để nghe và nhận biết đc âm thanh.
1 khía cạnh khác của psychoacoustics cho thấy nó thích hợp với việc nén âm thanh số là thực tế, còn ng chỉ có thể nghe đc các âm thanh ở tần số từ 20 Hz đến 20kHz. Nhiều phương pháp nén âm thanh số sử dụng đặc điểm này và loại bỏ những tín hiệu nằm ở trong những dài tần số ngoài dải nghe của con người.
Cũng là 1 vấn đề liên quan đến dải tần số mà con người có thể nghe, trong thực tê,s những âm thanh phải đc bật to hơn thì con người mới có thể nghe đc những âm thanh ở tần số cao hơn. Điều này có nghĩa là kỹ thuật nén mất dữ liệu có thể loại bỏ những mẫu âm thanh có cường độ thấp ở trong dải tần số này với điều kiện lựa chọn 1 cách khắt khe để ko loại bỏ những mẫu âm thanh cần thiết. Điều này có nghĩa là người sáng chế ra những kỹ thuật nén âm thanh này có thể giấu đi những tạp âm (như là kết quả của việc nén) trong những tần số cao vì chúng ko thể đc cảm nhận bởi con người.
1 khía cạnh khác của psychoacoustics đc sử dụng rộng rãi trong nén âm thanh số có mất dữ liệu là 1 hiệu ứng đc gọi là masking. Đây là hiện tượng 1 âm thanh lớp phát ra cùng 1 thời điểm cùng với 1 âm thanh tĩnh dẫn đến tình trạng ko nghe thấy đc âm thanh. Tất nhiên, điều này phụ thuộc vào tần số nhưng tuy nhiên, hiệu ứng này đc khai thác khá rộng rãi bởi những chuyên gia thiết kế trường nén âm thanh. Về cơ bản, 1 âm thanh lớn ở trong 1 bản nhạc đc nén sẽ ko lưu giữ các tín hiệu của những âm thanh khác ở trong cùng 1 thời điểm. Kết quả là, nến chúng ta làm 1 cách cẩn thận, tai người sẽ nhận biết tất cả các âm thanh như trong 1 bản nhạc chưa nén.
1 lĩnh vực mà nén âm thanh ko mất dữ liệu đc sử dụng rộng rãi là lưu trữ số. những kỹ sư âm thanh và những khách hàng muốn giữ 1 cách thật chính xác bản copy những file âm thanh của họ nên làm tăng số lượng người sử dụng phương pháp nén
âm thanh ko mất dữ liệu. 1 lý do cho việc này là vì giá thành lưu trữ số ngày càng giảm đi và mọi người có để khả năng để chi trả cho việc sử dụng những ko gian lưu trữ cho sở thích của họ.
Mặc dù giá thành cho việc lưu trữ số ngày càng giảm, nhưng phương pháp nén mất dữ liệu vẫn đc ưu tiên hàng đầu khi chúng ta sử dụng các máy nghe nhạc bỏ túi. Chẳng hạn, chiếc iPod của bạn sẽ sử dụng phương pháp nén có mất dữ liệu vì khi bạn muốn mang bộ nhớ lưu trữ theo bên mình, bạn sẽ muốn mang lượng dữ liệu nhiều nhất mà bạn có thể; dùng phương pháp nén mất dữ liệu sẽ cho phép bạn mang theo nhiều bài hát hơn. 1 lĩnh vực khác mà phương pháp nén gây ra mất dữ liệu vẫn chiếm vị trí hàng đầu là audio streaming. Mặc dù giá thành của băng thông đã giảm đáng kể trong những năm qua, thế nhưng vẫn cần phải giảm băng thông để sử dụng cho nhiều ứng dụng khác nữa. Vì thế, tất cả mọi thứ, từ radio online đến những ứng dụng như VoIP đều sử dụng công nghệ nén mất dữ liệu.