Gửi file nhị phân qua mạng
Cách mã hoá Unix-to-Unix rất dễ hiểu và tiện lợi để gửi và nhận các chương trình, hình vẽ, và các file âm thanh?
Ðã từng có thời các chữ cái đơn thuần và các số đủ để truyền ý tưởng của bạn bằng đường thư điện tử. Nhưng việc xuất hiện World Wide Web và phần mềm thư điện tử tinh vi hơn đã thay đổi dự đoán của chúng ta. Không chỉ có ký tự bạn có thể đánh vào một bức thư, người ta còn muốn xem hình, nghe nhạc và sử dụng bảng tính điện tử mà bạn tạo ra.
Vấn đề này mang tính lịch sử. Ngay khi bắt đầu có truyền thông trực tuyến, người ta phải thể hiện các thông báo của mình theo bộ mã ASCII cũ và các ký tự ASCII mở rộng gồm chữ cái, chữ số, dấu ngắt câu, các ký tự đặc biệt, như tab, carriage return, và các dấu ngắt trang (nói cách khác, những gì bạn có thể đánh trên bàn phím). Mãi đến mới đây, các dạng non-text (còn gọi là nhị phân) của dữ liệu mới được dùng riêng để máy tính liên lạc nhau hoặc với các thiết bị mạng khác.
Chắc chắn, bạn có thể sao chép các file nhị phân từ máy tính của mình sang máy của một đồng nghiệp, tạm gọi là A. Nhưng nếu muốn gửi file cho A, trước tiên bạn phải nạp nó xuống máy tính trung tâm mà bạn và A đều có thể truy cập tới. Sau đó, A sẽ login vào máy này và nạp file của bạn xuống. Kỹ thuật này vẫn còn hữu ích trong nhiều trường hợp, đặc biệt khi bạn không biết người sử dụng kia là ai. Bạn có thể nạp, chẳng hạn hình ảnh hoặc một chương trình dùng chung, tới thư viện flie hoặc kho lưu trữ FTP (giao thức truyền file ) của hệ thống bulletin-broad-system (bản tin điện tử - BBS); từ đó bất kỳ ai được phép truy cập tới BBS hoặc kho lưu trữ đều có thể tìm thấy nó và nạp xuống.
Dù sao, đó vẫn là cách tiện để chuyển một cái gì đó tới một người cụ thể. Sẽ không tuyệt vời hay sao nếu bạn chỉ cần gửi trực tiếp qua đường thư điện tử một bản sao của file nhị phân tới người sử dụng đó? Lại còn tốt hơn, nếu gửi file với một thông báo text giải thích phải làm gì với file đính kèm (attachment) - cách cài đặt, chạy, xem hoặc hiểu nó - mà không cần người nhận phải login vào một nơi nào đó và tách file riêng ra khỏi các chỉ dẫn.
Ðiều đó không chỉ có thể thực hiện được, mà còn khá đơn giản. Bạn có thể gửi file non-text như bản đính kèm một thông báo thư điện tử thông thường, và người nhận có thể mở bản đính kèm từ trong bó thư điện tử của người đó.
Tuy nhiên, có một trở ngại. Như trước kia, các cuộc truyền trực tuyến vẫn phải ở dạng ASCII đơn thuần. Nếu chuỗi dữ liệu thể hiện một ký tự ASCII, nó sẽ đến nơi mà không thay đổi gì. Nhưng nếu dữ liệu là nhị phân, nó lệ thuộc vào việc xử lý của mạng.
Bạn có thể so sánh cách thức mạng xử lý dữ liệu với cách máy tính đọc các nhấn phím (keystroke); đó là sự tương tự thông minh. Nếu bạn đánh phím thông thường, kết quả sẽ thấy ngay được bằng ký tự đánh vào; nếu đánh một phím chức năng, tín hiệu không được gửi trực tiếp tới màn hình, mà tới bộ phần mềm đang sử dụng hoặc máy tính.
Vậy thì làm sao để tránh được sự hạn chế của dạng ASCII đơn thuần. Câu trả lời là chuyển đổi (ở phía người gửi) tất cả các dữ liệu nhị phân sang một dạng trông giống các chuỗi ngẫu nhiên gồm các ký tự ASCII, truyền dữ liệu đã đổi dạng này trên mạng và sử dụng phần mềm tương thích ở đầu người nhận để thiết kế cho mớ lộn xộn này trở lại nguyên bản nhị phân của nó. Tất cả các máy tính và thiết bị mạng khi gặp dữ liệu loại này sẽ coi nó là ASCII và sẽ cho phép nó đi tiếp theo dòng truyền.
Trong Thế giới máy tính, nhiều điều không thực sự đơn giản như mới thoạt nhìn. Và một trong những điều không đơn giản đó là tính tương hợp.
Không chỉ một mà có rất nhiều chuẩn chung cho việc chuyển đổi dữ liệu nhị phân sang dữ liệu ASCII. Chuẩn thông thường nhất là unencode (bộ mã Unix được ưa thích bởi những người sử dụng trực tuyến trước kia, đặc biệt là người dùng Unix; chữ UU là viết tắt của Unix-to-Unix chuyển từ Unix-sang-Unix); BinHex (trước kia là sự lựa chọn của người sử dụng Apple); và MIME (Multipurpose Internet Mail Extensions). Nhưng dù bạn có sử dụng chuẩn nào, thủ tục chung đều giống nhau.
1. Bắt đầu với thông báo thư điện tử thông thường nếu có.
2. Gán một đầu đề ngắn gọn để thông báo cho phần mềm thư điện tử của người nhận:" Ðây là bắt đầu của một bó dữ liệu nhị phân được đã mã hoá theo chuẩn X".
3. Chuyển đổi dữ liệu nhị phân - nội dung của file đính kèm - sang ký tự ASCII và gán chúng sau đầu đề.
4. Thêm một đoạn đuôi hoặc ghi chú dưới (footer) để báo cho đầu nhận:" Ðây là điểm cuối của dữ liệu nhị phân".
Nên nhớ rằng quá trình này cho phép đính kèm nhiều file nếu muốn. Khi người nhận nhận được thông báo, phần mềm của anh ta chỉ đi qua tất cả các tham số đầu đề/ nội dung /đuôi, lần lượt chuyển đổi và ráp chúng lại thành bản sao hoàn chỉnh.
Trong các tình huống bình thường, bạn không phải băn khoăn về bất cứ điều gì: phần mềm thư điện tử của bạn có thể dịch mọi thứ thông báo giao cho nó. Hơn nữa, nhiều bó thư điện tử được ưa thích cũng có thể gửi các bản đính kèm và sử dụng một trong những phương pháp mã hoá thông thường.
Mặc dù phương pháp mã hoá mặc nhiên dùng cho các bản đính kèm nhị phân là MIME (hầu như đã trở thành chuẩn hiển nhiên của thư điện tử Internet), trong các trường hợp đặc biệt bạn vẫn có thể lựa chọn phương pháp khác. Chẳng hạn, nếu người nhận thư dùng Macintosh, bạn nên chọn chuẩn BinHex.
Nhưng ở đầu nhận, nó vẫn có thể trở thành lạ lẫm, vì thế ta hãy xem điều gì sẽ xảy ra khi mọi thứ không như dự đoán.
Ðiều đầu tiên bạn nhận thấy trong một thông báo điện tử chứa bản đính kèm chưa chuyển đổi là một số ký tự "rác rưởi" - quá nhiều ký tự loại này làm các sự kiện thoáng quá như độ ồn trên đường truyền không thể chú ý đến. Tuy nhiên, các tính năng làm các bản đính kèm nổi bật chính là đầu đề và phần đuôi bao quanh nội dung thực sự của thông báo. Dưới dây là một ví dụ bắt đầu một bản đính kèm mã hoá UU:
Ðể dịch bản này, phần mềm ở đầu nhận (bộ giải mã UU) sẽ tìm một dòng bắt đầu bằng chữ begin, tiếp sau là một số ba chữ số thể hiện file Unix hoặc chế độ cho phép (giống các thụoc tính file trong DOS hoặc Windows ; trong trường hợp này, 644 chỉ rằng file là read/write đối với người sở hữu file, chỉ cho phép đọc đối với những ngưòi trong cùng một nhóm hoặc nhóm khác). Dòng này kết thúc bằng tên của file đã mã hoá. ở phía cuối của bản đính kèm mã hoá UU chỉ là một dòng trống và sau đó chữ end đứng trên một dòng. Bạn làm gì nếu nhận được một thông báo chứa những ký tự lộn xộn như vậy? Có hai bước.:
1. Sử dụng Clipboard, lưu phần thông báo chứa bản đính kèm, đầu đề và đuôi thành một file trên PC của bạn.
2. Chuyển đổi dữ liệu mã hoá sang dạng giải mã bằng cách sử dụng bất kỳ phần mềm nào có thể xử lý chuẩn cụ thể này.
Các công cụ giải mã/ mã hoá.
Mặc dù nhiều người coi WinZip 6.2 là một công cụ để nén và giải nén file có đuôi ZIP, người ta ít biết rằng nó cũng có thể giải mã các file. Ðể làm điều này, nó xử lý các file đuôi UUE (mã hoá UU),HQX (BinHex) và B64 (MIME).
Việc giải mã một file đã mã hoá với WinZip được thực hiện theo cách như giải nén nó: mở file và nhấn đúp chuột lên nội dung.
Ðể giải mã một file cho trước, hãy nhấn đúp lên danh sách của nó (hoặc nhấn lên phím Extract). Bạn cũng sẽ thấy trong màn hình này triệu chứng của một trong số ít các hạn chế; phím Add bị khoá. WinZip chỉ hoạt động một chiều: bạn có thể trích file từ dạng mã hoá của chúng, nhưng bạn không thể mã hoá các file.
Có thể bạn sẽ thắc mắc tại sao cần giải mã dữ liệu. Chương trình thư điện tử có thể làm điều đó, đúng không? Câu trả lời là "đúng" - nhưng không nhất thiết trong một dạng chuẩn (mã hoá UU, BinHex, hay dạng nào đó) mà bạn cần cho mục đích cụ thể nào đó.
Cũng vậy, nếu đang gửi thư trực tiếp trên đường dây trong môi trường ASCII không cho phép đính kèm file, bạn sẽ bị kẹt bất luận sử dụng chuẩn nào đi nữa. Hãy xét một ví dụ không hay là mặc dù CompuServer hoàn toàn đồng ý truyền file nhị phân của bạn tới một người sử dụng CompuServer khác, nó vẫn đánh dấu lỗi là bất kỳ cuộc truyền file non-ASCII nào từ CompuServer đến một địa chỉ Internet.
Ðể làm được điều này, bạn sẽ cần một chương trình không những có thể giải mã mà còn mã hoá được các file nhị phân . Ví dụ như XferPro 32 2.0 của Sabaoft (cho cả Windows 3.x lẫn Windows 95), phần mềm này có thể giải mã 20 và mã hoá 17 dạng dữ liệu (bao gồm cả UU, BinHex và MIME). không những thế, Xfer còn xử lý các checksum cho chúng (checksum là các bit thêm vào của dữ liệu để đảm bảo rằng file này (một khi nó đã được mã hoá và sau đó giải mã ở đầu kia) được nhận một cách đúng đắn. XferPro để xử lý một file, bạn phải sử dụng một menu kéo xuống hoặc kéo-và-thả file lên cửa sổ. Thậm chí bạn có thể kéo và thả nhiều file để mã hoá và giải mã chúng cùng một lúc. Trong trường hợp sau, XferPro quyết định xem sẽ mã hoá hay giải mã các file dựa trên tên đuôi của chúng: UUE cho mã hoá UU, MME hoặc B64 cho MIME.. đối với các file có tên đuôi không rõ, XferPro sẽ giả thiết bạn muốn mã hoá chúng.
Một vấn đề nhỏ về khả năng sử dụng với XferPro là hộp thoại mã hoá không hiện ra tự động để nhắc bạn về chuẩn mã hoá (MIME, Binhex hay chuẩn nào đó) mà bạn muốn sử dụng trong một tình huống cụ thể. Ðiều này có nghĩa là nếu đôi khi chuẩn bị các file cần phải được giải mã dưới các chuẩn khác nhau, bạn phải nhớ gọi hộp thoại một cách thủ công (từ menu Configure của XferPro). Nếu không, bạn sẽ thu được các file UUE vô dụng trên đĩa cứng khi thực sự theo các B64, hay một chuẩnn nào khác.