Brien M. Posey
Trong phần trước của loạt bài về kiến thức mạng cơ bản này, chúng tôi đã giới thiệu về một quá trình được sử dụng trong Windows (và các hệ điều hành mạng khác), quá trình này cho phép các ứng dụng của các hãng được phát triển mà không cần phải lo lắng nhiều về vấn đề tạo driver cho thành phần phần cứng cụ thể. Mặc dù khái niệm này được sử dụng rộng rãi trong tất cả các hệ điều hành Windows, nhưng nó đặc biệt quan trọng khi nói đến vấn đề kết nối mạng. Để biết tại sao điều này lại quan trọng đến vậy chúng ta hãy xem xét đến những gì mà chúng tôi đã giới thiệu trong phần trước có liên quan đến phần cứng.
Mục đích để một ứng dụng có thể truyền thông trên mạng. Một chuyên gia phát triển ứng dụng không xây dựng các driver mạng bên trong ứng dụng, mà họ chỉ viết một cách đơn thuần ứng dụng theo cách của họ để có thể cho phép ứng dụng này thực hiện các cuộc gọi đến hệ điều hành Windows. Chính các nhà máy sản xuất adapter mạng của máy tính mới cung cấp các driver có thể liên kết làm việc với Windows, và cũng như vậy, Windows thực hiện những công việc cần thiết còn lại để làm sao ứng dụng có thể truyền thông với adapter mạng.
Rõ ràng đó mới chỉ là những gì chung chung. Công việc cụ thể bên trong đó phức tạp hơn những gì mà chúng ta vừa nói ở trên. Tuy nhiên cũng phải nói rằng adapter mạng cũng chỉ là một thiết bị được thiết kế để gửi và nhận các gói dữ liệu. Bản thân Card mạng không hề biết về Windows, ứng dụng hoặc thậm chí cả các giao thức đang được sử dụng. Ví dụ mà chúng tôi vừa cung cấp nhằm cho các bạn biết rằng có đến ba lớp khi thực hiện công việc này đó là: ứng dụng, hệ điều hành và phần cứng vật lý.
Trước khi giải thích các lớp này là gì và chúng thực hiện những công việc gì, chúng tôi muốn giới thiệu một số khái niệm làm vấn đề dễ hiểu hơn. Thực tế, nếu bạn mở trang thuộc tính của Local Area Connection (như trong hình A), thì có thể thấy một kết nối mạng được thiết lập bằng một số thành phần khác nhau, như network client – máy khách của mạng, driver của adapter mạng, và giao thức - protocol. Mỗi một thành phần này lại tương ứng với một hoặc nhiều lớp khác nhau.
Hình A: Trang thuộc tính của Local Area Connection cho chúng ta một cái nhìn
về các lớp mạng khác nhau được dùng trong Windows.
Mô hình mạng mà Windows và hầu hết các hệ điều hành mạng khác sử dụng được gọi là mô hình OSI. OSI (Open System Interconnection Basic Reference) là mô hình mạng có 7 lớp, được phát triển bởi International Standards Organization (ISO). Mỗi một lớp trong mô hình này được thiết kế để có thể thực hiện một nhiệm vụ cụ thể nào đó và làm cho việc truyền thông giữa lớp trên và lớp dưới nó thuận tiện hơn. Bạn có thể nhìn thấy những gì mà mô hình OSI thể hiện trong hình B bên dưới.
Lớp Physical, Data, Network và Transport được coi là lớp thấp hơn và liên quan chủ yếu đến việc di chuyển dữ liệu. Lớp Session, Presentation và Application chứa dữ liệu cấp ứng dụng. Các mạng hoạt động trên một nguyên tắc cơ bản: 'pass it on' (tam dịch: chuyển nó đi). Mỗi lớp đảm nhiệm một công việc rất cụ thể và sau đó chuyển dữ liệu cho lớp tiếp theo.
Trong mô hình OSI, control được truyền từ lớp này đến lớp khác, bắt đầu từ lớp 7, Application, trong một trạm và tiến tới lớp cuối cùng, qua kênh để đến trạm tiếp theo và lặp lại quá trình như ở trạm trước đó. Dưới đây là 7 lớp của mô hình OSI.
Mô hình OSI
Lớp Application
Lớp trên cùng trong mô hình OSI là lớp Application (lớp ứng dụng), lớp 7, hỗ trợ ứng dụng và các tiến trình liên quan đến người dùng cuối. Đối tác truyền thông, chất lượng dịch vụ, xác thực người dùng, quyền riêng tư và bất cứ ràng buộc nào về cú pháp dữ liệu sẽ được xem xét và xác định tại lớp này. Tất cả mọi thứ ở lớp 7 được cụ thể thành ứng dụng. Lớp này cung cấp các dịch vụ ứng dụng cho truyền file, email và các dịch vụ phần mềm mạng khác. Telnet, FTP là các ứng dụng nằm hoàn toàn trong trong cấp Application, còn kiến trúc ứng dụng phân tầng là một phần của lớp này.
Tuy nhiên, bạn cần nắm được rằng, lớp này không ám chỉ đến các ứng dụng mà người dùng đang chạy, thay vào đó nó chỉ cung cấp nền tảng làm việc (framework) mà ứng dụng đó chạy bên trên.
Để hiểu lớp ứng dụng này thực hiện những gì, chúng ta hãy giả dụ rằng một người dùng nào đó muốn sử dụng Internet Explorer để mở một FTP session và truyền tải một file. Trong trường hợp cụ thể này, lớp ứng dụng sẽ định nghĩa một giao thức truyền tải. Giao thức này không thể truy cập trực tiếp đến người dùng cuối mà người dùng cuối này vẫn phải sử dụng ứng dụng được thiết kế để tương tác với giao thức truyền tải file. Trong trường hợp này, Internet Explorer sẽ làm ứng dụng đó.
Ví dụ về lớp Application bao gồm: trình duyệt WWW, NFS, SNMP, Telnet, HTTP, FTP.
Lớp Presentation
Lớp Presentation thực hiện một số công việc phức tạp hơn, tuy nhiên mọi thứ mà lớp này thực hiện có thể được tóm gọn lại trong một câu. Lớp này lấy dữ liệu đã được cung cấp bởi lớp ứng dụng, biến đổi chúng thành một định dạng chuẩn để lớp khác có thể hiểu được định dạng này. Tương tự như vậy lớp này cũng biến đổi dữ liệu mà nó nhận được từ lớp session (lớp dưới) thành dữ liệu mà lớp Application có thể hiểu được. Lý do lớp này cần thiết đến vậy là vì các ứng dụng khác nhau có dữ liệu khác nhau. Để việc truyền thông mạng được thực hiện đúng cách thì dữ liệu cần phải được cấu trúc theo một chuẩn nào đó.
Ví dụ về lớp Presentation gồm mã hóa, ASCII, EBCDIC, TIFF, GIF, PICT, JPEG.
Lớp Session
Khi dữ liệu đã được biến đổi thành định dạng chuẩn, máy gửi đi sẽ thiết lập một phiên – session với máy nhận. Đây chính là lớp sẽ đồng bộ hoá quá trình liên lạc của hai máy và quản lý việc trao đổi dữ liệu. Lớp phiên này chịu trách nhiệm cho việc thiết lập, quản lý và chấm dứt session với máy từ xa.
Một điểm thú vị về lớp session là nó có liên quan gần với lớp Application hơn với lớp Physical. Có thể một số người nghĩ rằng việc kết nối session mạng như một chức năng phần cứng, nhưng trong thực tế session lại được thiết lập giữa các ứng dụng. Nếu người dùng đang chạy nhiều ứng dụng thì một số ứng dụng này có thể đã thiết lập session với các tài nguyên ở xa tại bất kỳ thời điểm nào.
Ví dụ về lớp Session như NFS, NetBios names, RPC, SQL.
Lớp Transport
Lớp Transport hay lớp giao vận chịu trách nhiệm chuyển dữ liệu giữa các hệ thống đầu cuối hoặc máy chủ (host). Hệ điều hành Windows cho phép người dùng có thể chạy nhiều ứng dụng một cách đồng thời, chính vì vậy mà nhiều ứng dụng, và bản thân hệ điều hành cần phải truyền thông trên mạng đồng thời. Lớp Transport lấy dữ liệu từ mỗi ứng dụng và tích hợp tất cả dữ liệu đó vào trong một luồng. Lớp này cũng chịu trách nhiệm cho việc cung cấp vấn đề kiểm tra lỗi và thực hiện khôi phục dữ liệu khi cần thiết. Bản chất mà nói, lớp Transport chịu trách nhiệm cho việc bảo đảm tất cả dữ liệu được truyền từ máy gửi đến máy nhận.
Ví dụ về lớp Transport là SPX, TCP, UDP.
Lớp Network
Lớp mạng Network là lớp có trách nhiệm quyết định xem dữ liệu sẽ đến máy nhận như thế nào. Lớp này nắm những thành phần như việc định địa chỉ, định tuyến, và các giao thức logic. Do loạt bài này dành cho những người mới bắt đầu làm quen với các kiến thức về mạng nên sẽ không đi chuyên sâu vào kỹ thuật, tuy nhiên chúng tôi nói qua rằng lớp mạng này tạo các đường logic được biết đến như các mạch ảo giữa máy nguồn và máy đích. Mạch ảo này cung cấp các gói dữ liệu riêng lẻ để chúng có thể đến được đích của chúng. Bên cạnh đó lớp mạng cũng chịu trách nhiệm cho việc quản lý lỗi của chính nó, cho việc điều khiển xếp chuỗi và điều khiển tắc nghẽn.
Việc sắp xếp các gói là rất cần thiết bởi mỗi một giao thức giới hạn kích thước tối đa của một gói. Số lượng dữ liệu phải được truyền đi thường vượt quá kích thước gói lớn nhất. Chính vì vậy mà dữ liệu được chia nhỏ thành nhiều gói nhỏ. Khi điều này xảy ra, lớp mạng sẽ gán vào mỗi gói nhỏ này một số thứ tự nhận dạng.
Khi dữ liệu này đến được máy tính người nhận thì lớp mạng lại kiểm tra số thứ nhận dạng của các gói và sử dụng chúng để sắp xếp dữ liệu đúng như những gì mà chúng được chia lúc trước từ phía người gửi, bên cạnh đó còn có nhiệm vụ chỉ ra gói nào bị thiếu trong quá trình gửi.
Nếu bạn chưa hiểu kỹ về khái niệm này, hãy hình dung rằng bạn cần gửi mail một tài liệu có dung lượng lớn đến một người bạn của mình, nhưng không có một phong bì đủ lớn. Để giải quyết vấn đề này thì bạn phải chia nhỏ một số trang vào các phong bì nhỏ, sau đó dán nhãn các phòng bì này lại để bạn của bạn có thể biết được thứ tự của các trang trong đó. Điều này cũng tương tự như những gì mà lớp mạng thực hiện.
Ví dụ về lớp Network là Apple Talk DDP, IP, IPX
Lớp Data Link
Tại lớp Data Link, các gói dữ liệu được mã hóa và giải mã thành các bit. Nó cho biết giao thức truyền tải, quản lý và xử lý lỗi trong lớp vật lý Physical, điều khiển luông và đồng bộ khung.
Lớp liên kết dữ liệu Data Link có thể được chia nhỏ thành hai lớp khác; Media Access Control (MAC) và Logical Link Control (LLC). MAC về cơ bản thiết lập sự nhận dạng của môi trường trên mạng thông qua địa chỉ MAC của nó. Địa chỉ MAC là địa chỉ được gán cho adapter mạng ở mức phần cứng. Đây là địa chỉ được sử dụng cuối cùng khi gửi và nhận các gói. Lớp LLC điều khiển sự đồng bộ khung, điều khiển luồng và cung cấp một mức kiểm tra lỗi.
Ví dụ về lớp Data Link như PPP, FDDI, ATM, IEEE 802.5/ 802.2, IEEE 802.3/802.2, HDLC, Frame Relay
Lớp Physical
Lớp vật lý Physical của mô hình OSI truyền tải luồng bit, xung điện, tín hiệu radio hoặc ánh sáng thong qua mạng ở mức điện hoặc máy móc. Nó ám chỉ đến các chi tiết kỹ thuật của phần cứng. Lớp vật lý định nghĩa các đặc điểm như định thời và điện áp. Lớp này cũng định nghĩa các chi tiết kỹ thuật phần cứng được sử dụng bởi các adapter mạng và bởi cáp mạng (thừa nhận rằng kết nối là kết nối dây). Để đơn giản hóa, lớp vật lý định nghĩa những gì để nó có thể truyền phát và nhận dữ liệu.
Ví dụ về lớp vật lý như Ethernet, FDDI, B8ZS, V.35, V.24, RJ45.
Làm việc hai chiều
Cho đến lúc này, chúng ta đã thảo luận về mô hình OSI dưới dạng một ứng dụng cần truyền tải dữ liệu trên mạng. Mô hình này cũng được sử dụng khi một máy tính nào đó nhận dữ liệu. Khi dữ liệu được nhận, dữ liệu đó đi ngược trở lên từ lớp vật lý. Các lớp còn lại làm việc để tách bỏ những gì đã được đóng gói bên phía gửi và biến đổi dữ liệu về định dạng mà lớp ứng dụng có thể sử dụng được.
Kết luận
Trong phần này, chúng tôi đã giới thiệu cho các bạn về cách Windows sử dụng mô hình OSI như thế nào để thực hiện việc kết nối mạng. Bạn cũng nên hiểu rằng mô hình OSI chỉ là một hướng dẫn với tư cách để vấn đề kết nối mạng được thực hiện như thế nào. Còn trong thế giới thực, các ngăn xếp giao thức đôi khi kết hợp nhiều lớp vào một thành phần nào đó. Về vấn đề đó, chúng tôi sẽ giới thiệu cho các bạn trong phần tiếp theo của loạt bài này.