Ở bài trước chúng ta đã đi qua các khái niệm về độ trễ gói tin, mất gói tin và thông lượng trong mạng chuyển mạch gói. Để tiếp tục Series Nhập môn mạng máy tính, chúng ta sẽ tìm hiểu về sự phân tầng giao thức và các ứng dụng của chúng.
Từ những phần trước, rõ ràng là Internet là một hệ thống cực kỳ phức tạp. Chúng ta đã thấy rằng Internet có nhiều thành phần: nhiều ứng dụng và các giao thức, nhiều loại hệ cuối, các bộ chuyển gói tin và nhiều loại đường truyền. Với thực trạng phức tạp như vậy, liệu có thể tổ chức các thành phần mạng thành một kiến trúc mạng được không. Câu trả lời là có thể.
Kiến trúc phân tầng
Trước khi nói về kiến trúc của Internet, hãy xem một ví dụ tương tự trong cuộc sống. Thật ra thì chúng ta vẫn thường gặp nhiều hệ thống phức tạp hàng ngày. Hãy tưởng tượng rằng có ai đó yêu cầu bạn mô tả lại hệ thống vận chuyển hàng không. Làm thế nào để tìm ra cấu trúc mô tả cho hệ thống phức tạp này, trong đó có đại lý bán vé, bộ phận kiểm tra hành lý, gác cổng, phi công, máy bay, kiểm soát không lưu, và hệ thống dẫn đường máy bay trên toàn cầu.
Một cách để mô tả hệ thống này là mô tả một chuỗi những hành động mà bạn gặp (hoặc những người khác gặp kể lại cho bạn) khi bạn bay trên một chuyến bay. Bạn mua vé, kiểm tra hành lý, đến cổng ra máy bay, và thậm chí là được chở ra máy bay. Máy bay cất cánh và được hướng dẫn bay đến nơi. Sau khi máy bay hạ cánh, bạn rời khỏi máy bay và yêu cầu hành lý. Nếu chuyến bay phục vụ không tốt, bạn có thể phản ánh với đại lý vé.
Giờ đây bạn có thể xem sự tương tự trong mạng máy tính. Bạn được chuyển đi từ nơi khởi hành đến đích đến; thì một gói tin cũng được chuyển di từ thiết bị đầu cuối nguồn đến thiết bị đầu cuối đích trên Internet.
Nhưng điều cũng không hoàn toàn tương tự như chúng ta thấy sau đây. Chúng ta đang tìm kiếm một cấu trúc trong hình trên. Chúng ta chú ý rằng có một chức năng liên quan đến vé ở mỗi phía; cũng có những chức năng liên quan đến hành lý đối với những hành khách đã mua vé, và một chức năng liên quan đên cổng đối với những hành khách đã mua vé và đã kiểm tra hành lý.
Với các khách đã qua cổng kiểm tra (là những hành khách đã có vé, đã soát hành lý và đã qua cổng kiểm tra), có một chức năng liên quan đến cất cánh và hạ cánh, và trong khi đang bay, có một chức năng hướng dẫn bay. Điều này gợi ý rằng chúng ta có thể coi các chức năng trong hình trên theo lối cắt ngang, như được minh họa ở hình sau đây:
Hình trên chia các chức năng trong vận chuyển hàng không thành các tầng (layers), nhằm cung cấp một bộ khung mà dựa vào đó chúng ta có thể thảo luận về vận chuyển hàng không. Mỗi tầng cung cấp dịch vụ của nó bằng cách thực hiện các hành động nhất định tại tầng đó (ví dụ, ở tầng liên quan đến cổng, thực hiện đưa người lên và xuống máy bay) và sử dụng trực tiếp dịch vụ của tầng ngay dưới nó.
Ví dụ: Ở tầng liên quan đến cổng, sử dụng dịch vụ vận chuyển hành khách ra/vào đường băng của tầng cất cánh/hạ cánh.
Kiến trúc phân tầng cho phép chúng ta thảo luận về các thành phần cụ thể của một hệ thống lớn và phức tạp. Sự đơn giản hóa này do tính mô-đun mang lại, làm cho việc thay đổi cài đặt dịch vụ ở một tầng trở nên dễ dàng hơn. Miễn là một tầng còn cung cấp cùng một dịch vụ cho các tầng nằm trên nó, và sử dụng cùng các dịch vụ của tầng bên dưới nó, phần còn lại của hệ thống vẫn không bị ảnh hưởng khi cài đặt của tầng đó bị thay đổi
Lưu ý là việc thay đổi cài đặt của một dịch vụ thì hoàn toàn khác với việc thay đổi bản thân dịch vụ.
Với những hệ thông lớn và phức tạp vốn thường được chỉnh sửa thường xuyên, khả năng thay đổi cài đặt của một dịch vụ mà không làm ảnh hưởng đên các thành phần khác của hệ thống là một sự thuận lợi quan trọng khác của việc phân tầng.
Sự phân tầng giao thức
Bây giờ hãy xem xét các giao thức mạng. Nhằm cung cấp một cấu trúc để thiết kế các giao thức mạng, các nhà thiết kế mạng tố chức các giao thức – và các thành phần phần cứng, phần mềm cài đặt cho giao thức – thành các tầng (layers). Mỗi giao thức thuộc về một trong các tầng, cũng như mỗi chức năng trong kiến trúc hàng không ở hình trên thuộc về một tầng.
Một lần nữa chúng ta quan tâm đến các dịch vụ mà một tầng cung cấp cho các tầng phía trên nó – cái được gọi là mô hình dịch vụ. Cũng như trường hợp ví dụ về hệ thống hàng không, Mỗi tầng cung cấp dịch vụ của nó bằng cách thực hiện các hành động nhất định tại tầng đó và sử dụng trực tiếp dịch vụ của tầng ngay dưới nó.
Lấy ví dụ, các dịch vụ do tầng n cung cấp có thể có dịch vụ chuyển giao các thông điệp một cách đáng tin cậy từ một nút đến một nút khác. Dịch vụ này có thể được cài đặt bằng cách sử dụng dịch vụ chuyển giao thông điệp không tin cậy ở tầng n-1, và cộng thêm với chức năng bổ sung ở tầng n nhằm phát hiện và truyền lại các thông điệp bị mất.
Một tầng giao thức có thể được cài đặt chỉ phần mềm, phần cứng hoặc tổ hợp cả hai. Các giao thức tầng ứng dụng (application layer) – như HTTP và STMP – hầu như luôn luôn được cài đặt trong phần mềm trong các thiết bị đầu cuối; cũng như vậy với các giao thức tầng vận chuyển (transport layer)
Tầng vật lý (physical layer) và tầng liên kết dữ liệu (data link layer) chịu trách nhiệm xử lý việc truyền thông qua một đường truyền nhất định, chúng thường được cài đặt ở card mạng (network interface card – NIC) (chẳng hạn như card giao tiếp Ethernet hoặc WiFi) gắn với một đường truyền nhất định. Tầng mạng thường là sự trộn lẫn giữa phần cứng và phần mềm.
Việc phân tầng giao thức có những thuận lợi về khía cạnh cấu trúc và quan niêm. Khả năng mô-đun hóa làm cho việc cập nhật các thành phần của hệ thống trở nên dễ dàng hơn. Tuy nhiên, nhiều nhà nghiên cứu và kỹ sư mạng quan niệm rất khác nhau về việc phân tầng. Một trong những nhược điểm tiềm tàng của phân tầng là một tầng có thể có trùng lặp chức năng của một tầng thấp hơn.
Ví dụ, nhiều chồng giao thức (xem đoạn dưới) cung cấp dịch vụ sửa lỗi ở cả hai mức: mức đường truyền và mức truyền thông giữa hai đầu cuối. Một nhược điểm tiềm tàng thứ hai là chức năng ở một tầng có thể cần thông tin (chẳng hạn giá trị timestamp) vốn chỉ có ở tầng khác; điều này vi phạm mục đích phân tầng.
Khi ráp lại cùng nhau, các giao thức của các tầng được gọi là chồng giao thức (protocol stack). Chồng giao thức Internet hay còn gọi là Mô hình TCP/IP gồm có năm tầng: tầng Vật lý (physical), tầng Liên kết (link), tầng Mạng (network), tầng Vận chuyển (transport), và tầng ứng dụng (application), như được minh họa ở hình dưới đây (một số người khác cho rằng mô hình này gồm 4 tầng):
Tầng ứng dụng
Tầng ứng dụng của Internet có nhiều giao thức, chẳng hạn giao thức HTTP (giao thức cung cấp dịch vụ yêu cầu và đáp ứng các trang Web), SMTP (giao thức cung cấp dịch vụ vận chuyển các thông điệp thư điện tử), và FTP (giao thức cung cấp dịch vụ truyền tập tin giữa hai thiết bị đầu cuối).
Một giao thức ở tầng ứng dụng được phân bố trên nhiều thiết bị đầu cuối, trong đó ứng dụng trong một thiết bị đầu cuối sử dụng giao thức để trao đổi thông tin với các ứng dụng ở thiết bị đầu cuối khác. Gói thông tin ở tầng ứng dụng được gọi là thông điệp (message)
Tầng vận chuyển
Tầng Vận chuyển của Internet chỉ hoạt động ở tại nút gửi/nhận, không hoạt động ở các nút trung gian trên đường truyền. Trong Internet, hai giao thức vận chuyển chính yếu là TCP và UDP.
TCP cung cấp một dịch vụ hướng kết nối (connection-oriented). Dịch vụ này bao gồm khả năng truyền có bảo đảm các thông điệp, và kiểm soát lưu lượng (flow control) (giới hạn tốc độ truyền tối đa của bên gửi để bên nhận có thể nhận kịp thời, do bên nhận thông báo). Giao thức TCP cũng tách một thông điệp dài thành các thông điệp ngắn hơn, và cung cấp một cơ chế kiểm soát tắc nghẽn (congestion control), nhờ đó mà bên truyền có thể điều tiết tốc độ truyền mồi khi mạng có ùn tắt.
Giao thức UDP cung cấp các dịch vụ phi kết nối (connectionless). Đây là một giao thức giản lược, không cung cấp các khả năng truyền đảm bảo tin cậy, không điều khiển lưu lượng, không kiếm soát tắc nghẽn. Chúng ta gọi các gói tin ở tầng Vận chuyển là đoạn (segment).
Tầng mạng
Tầng Mạng của Internet chịu trách nhiệm định tuyến cho các gói tin, được gọi là gam dữ diệu (datagram), đi từ đầu gửi đến đầu nhận. Tại đầu gửi, giao thức tầng Vận chuyển (TCP hoặc UDP) gắn kèm địa chỉ đích đến rồi chuyển gói tin đến tầng Mạng. Cũng tương tự như khi bạn gửi thư giấy kèm với địa chỉ người nhận. Sau đó, tại đầu nhận, tầng Mạng sẽ chuyển gam dữ liệu đến tầng Vận chuyển bên trên nó.
Giao thức IP định nghĩa các trường trong gam dữ liệu, các thiết bị đầu cuối và bộ định tuyến hoạt động dựa trên thông tin của các trường này. Chỉ có duy nhất một giao thức IP, và tất cả các thành phần của Internet có tầng Mạng thì đều phải chạy giao thức IP. Tầng Mạng còn chứa các giao thức định tuyến, để dẫn đường các gói dữ liệu di chuyển từ nguồn đến đích. Internet có nhiều giao thức định tuyến.
Như đã trình bày ở phần trước, Internet là mạng của các mạng, và bên trong một mạng người quản trị mạng có thể cho chạy bất kì một giao thức nào phù hợp. Mặc dù tầng Mạng bao gồm cả giao thức IP và nhiều giao thức mạng, nhưng nó vẫn thường được nhắc đến với tên gọi đơn giản là tầng IP, điều này phản ánh IP là chất keo kết dính các thành phần Internet lại với nhau
Tầng liên kết
Tầng Liên kết có trách nhiệm chuyển các gam dữ liệu (nhận từ tầng Mang) đi qua nút kế tiếp trên tuyến đường đi đến đích cuối cùng. Cụ thể, tại mỗi nút, tầng Mạng đẩy gam dữ liệu xuống tầng Liên kết, tầng này sẽ chuyển giao gam dữ liệu đến nút kế tiếp trên đường đi. Ở tại nút kế tiếp này, tầng Liên kết đẩy gam dữ liệu ngược lên tầng Mạng.
Các dịch vụ được tầng Liên kết cung cấp phụ thuộc vào giao thức cụ thể. Một số giao thức tầng Liên kết cung cấp dịch vụ hỗ trợ truyền dữ liệu đáng tin cậy từ nút truyền, ví dụ như sửa lỗi tự động. Xin lưu ý rằng dịch vụ truyền dữ liệu tin cậy này là hoàn toàn khác với dịch vụ truyền dữ liệu đáng tin cậy của TCP, vốn là giao thức cung cấp dịch vụ chuyển giao dữ liệu đáng tin cậy từ một thiết bị đầu cuối đến một thiết bị đầu cuối khác.
Có thể kể ra vài ví dụ về giao thức ở tầng Liên kết, như Ethernet, WiFi, và Point-to-Point (PPP). Khi đi từ nguồn đến đích, một gam dữ liệu thường đi qua nhiều chặng đường truyền khác nhau, do đó gam dữ liệu có thể được các giao thức khác nhau ở tầng Liên kết xử lý. Chẳng hạn, một gam dữ liệu có thể được Ethernet xử lý ở một đoạn mạng, và được PPP xử lý ở một đoạn mạng khác. Tầng Mạng sẽ nhận một dịch vụ khác nhau từ các giao thức khác nhau ở tầng Liên kết.
Chúng ta gọi gói tin ở tầng Liên kết là khung dữ liệu (frame).
Tầng vật lý
Trong khi công việc ở tầng Liên kết là di chuyển toàn bộ khung dữ liệu từ một nút mạng đến một nút mạng kế tiêp, thì công việc của tầng Vật lý là di chuyển từng bit trong một khung từ một nút đến một nút kế tiếp. Một lần nữa, giao thức ở tầng này phụ thuộc vào đường truyền và còn phụ thuộc hơn nữa vào môi trường truyền dẫn thực sự của đường truyền (chẳng hạn, cáp đồng xoắn cặp, cáp quang).
Ví dụ như Ethernet có nhiều giao thức ở tầng Vật lý: một giao thức cho dây cáp đồng xoắn cặp, một giao thức khác cho cáp đồng trục, một giao thức khác cho cáp quang, … Trong mỗi trường hợp, bit di chuyển trong môi trường truyền dẫn theo cách khác nhau.
Thông điệp, phân đoạn, gam dữ liệu và khung dữ liệu
Hình bên dưới cho thấy con đường vật lý trong đó dữ liệu di chuyển theo hướng xuống tại chồng giao thức bên gửi, sau đó đi lên rồi lại đi xuống ở chồng giao thức của các bộ chuyển và bộ định tuyến trung gian, và cuối cùng là đi ngược lên ở chồng giao thức phía nhận. Như trong các chương sau sẽ đề cập, bộ chuyển và bộ định tuyến đều là các thiết bị chuỵển tiếp gói tin.
Tương tự như các thiết bị đầu cuối, bộ chuyển và bộ định tuyến cũng tổ chức các thành phần phần cứng và phần mềm vào thành các tầng. Tuy nhiên bộ định tuyến và bộ chuyển lại không cài đặt tất cả các tầng trong chồng giao thức; chúng chỉ cài đặt các tầng bên dưới. Như ở hình, bộ chuyển cài đặt tầng 1 và 2; còn bộ định tuyến thì lại cài từ tầng 1 đến 3.
Điều này có nghĩa là, bộ định tuyến Internet có khả năng hiểu được giao thức IP (là một giao thức tầng 3), trong khi bộ chuyển thì không. Chúng ta cũng sẽ thấy rằng trong khi các bộ chuyên không hiểu địa chỉ IP, nhưng chúng lại có khả năng hiểu địa chỉ tầng 2, như địa chỉ Ethernet. Chú ý là các thiết bị đầu cuối đều cài đặt hết năm tầng, và điều này là nhất quán với quan điểm cho kiến trúc Internet dồn toàn bộ xử lý phức tạp ra các thành phần biên mạng.
Tổng kết
Chúng ta vừa tìm hiểu xong thế nào là sự phân tầng các giao thức và làm quen với một dạng chồng giao thức Internet điển hình: Mô hình TCP/IP. Trong bài sau chúng ta sẽ tìm hiểu đến một dạng chồng giao thức thứ hai đó chính là Mô hình OSI.