CN_1_6_Các giao thức và sự phân tầng



1.6 Các giao thức và sự phân tầng (protocols and layering)

Sử dụng các giao thức và thực hiện phân tầng là những yếu tố quan trọng trong việc tạo nên cấu trúc của hệ thống mạng.
Tính phức tạp của hệ thống mạng đòi hỏi cần phải có một số cách thức chia nhỏ để quản lý và vận hành, nói cách khác là cần thực hiện mô đun hóa. Dưới đây liệt kê một số trong rất nhiều các chức năng của hệ thống mạng:
  • Tạo và ngắt các kết nối.
  • Tìm kiếm đường đi.
  • Truyền tin cậy.
  • Truyền thông tin có kích thước tùy ý.
  • Tối ưu tốc độ truyền.
  • Chia sẻ băng thông.
  • Bảo mật thông tin truyền.
  • Cho phép gắn thêm thiết bị dễ dàng.
Thực hiện mô đun hóa sẽ giúp giảm đi tính phức tạp của hệ thống, đồng thời tăng khả năng sử dụng lại các thành phần của hệ thống mạng. Vậy hệ thống mạng đã được mô đun hóa như thế nào?
Hai giải pháp đã được áp dụng là sử dụng các giao thức và thực hiện phân tầng trong hệ thống mạng. Cụ thể là:
  • Trong giao tiếp giữa hai thiết bị, các tầng có cùng giao thức mới “nói chuyện” được với nhau (tất nhiên là “nói chuyện” gián tiếp), trừ tầng dưới cùng.
  • Trong cùng một thiết bị, các giao thức sẽ chỉ sử dụng các dịch vụ được cung cấp bởi tầng thấp hơn.
Quan sát hình vẽ sau:

Hình vẽ trên gồm hai nút mạng (Node1 và Node2), thể hiện của giao thức X trên Node1 muốn “nói chuyện” với thể hiện của giao thức X trên Node2, để thực hiện, nó cần phải tuân thủ các quy định của giao thức X trong quá trình giao tiếp. Nét đứt cho biết nó không thể giao tiếp trực tiếp được, mà cần phải sử dụng dịch vụ của tầng thấp hơn (thể hiện của giao thức Y). Đến lượt thể hiện của giao thức Y cũng phải tuân theo các quy định của giao thức Y khi thực hiện giao tiếp.
Qua hình vẽ, việc phân tầng được thực hiện theo chiều dọc (giao thức ở tầng cao chỉ trao đổi trực tiếp với giao thức tầng thấp trong cùng một nút). Các giao thức được thiết kế để làm việc theo chiều ngang (các giao thức sẽ làm việc với cùng giao thức trên máy phía bên kia).
Thực tế trên mỗi Host (Node) sẽ bao gồm rất nhiều giao thức, tập hợp của các giao thức này được gọi là chồng giao thức (protocol stack). Ví dụ trong hình dưới đây:

Chồng giao thức ở hình trên gồm 5 tầng (layer 5, 4, 3, 2, và 1), cuối cùng là đường truyền vật lý, nơi thực sự truyền tín hiệu từ Host 1 tới Host 2 và ngươc lại. Đường truyền có thể là cáp đồng, cáp quang, không khí…v.v.
Tại mỗi tầng có thể có rất nhiều giao thức được sử dụng. Ví dụ một số giao thức: TCP, IP, 802.11, Ethernet, HTTP, SSL…v.v.
Ví dụ về chồng giao thức
Xét một máy tính đang duyệt web qua kết nối WiFi (hình bên dưới):

Ở hình trên, web đang sử dụng giao thức HTTP, giao thức HTTP hoạt động dựa trên giao thức TCP, IP, 802.11.
Sự đóng gói (encapsulation)
Đóng gói là quy trình giúp hệ thống mạng vận hành theo cơ chế phân tầng và dựa trên các giao thức.
Đóng gói là quá trình tầng thấp hơn sẽ nhận toàn bộ gói tin của tầng trên, coi gói tin của tầng trên là phần nội dung, sau đó gắn thêm các thông tin của tầng thấp hơn vào, tạo thành một gói tin mới. Việc này cũng giống như khi bạn gửi thư qua đường bưu điện, nội dung của lá thư chính là nội dung của tầng cao hơn,  bì thư chính là giao thức của tầng thấp, việc cho thư vào bì thư và ghi địa chỉ người gửi và người nhận chính là quá trình đóng gói. Khi nhân viên bưu điện chuyển lá thư này tới đích, họ không được phép (và không cần) mở nội dung ở bên trong ra, mà chỉ cần dựa vào thông tin có trên phong bì (thông tin của tầng thấp hơn) để gửi lá thư đến đích. Khi tới người nhận, người nhận sẽ mở bì thư ra và đọc nội dung bên trong của lá thư (nội dung của tầng cao hơn).
Hình sau minh họa quá trình đóng gói:

Ở hình trên, giao thức HTTP sẽ thực hiện đóng gói thông điệp cần gửi đi. Tiếp theo, HTTP sẽ chuyển thông điệp xuống tầng TCP. Tại tầng TCP, gói tin từ tầng trên sẽ được giữ nguyên và được gắn thêm thông tin điều khiển của tầng TCP vào phần đầu của gói tin. Tiếp theo gói tin tại tầng TCP sẽ được chuyển xuống tầng IP. Tại tầng IP, gói tin từ tầng TCP sẽ được giữ nguyên, giao thức IP sẽ gắn thêm header vào đầu gói tin, sau đó gói tin được chuyển xuống tầng 802.11. Tại tầng 802.11, header của tầng này lại được gắn tiếp vào gói tin do tầng IP chuyển xuống.
Hình ảnh gói tin tại tầng 802.11 giống với một củ hành, gồm nhiều lớp vỏ bao bọc nhau. Trong đó tầng thấp nhất sẽ là lớp vỏ phía ngoài cùng.
Sau khi hoàn thành quá trình đóng gói, gói tin sẽ được gửi đi qua dây dẫn.
Tại máy nhận, gói tin sẽ trải qua quá trình ngược lại, đó là quá trình mở gói (de-encapsulation).
Quá trình mở gói là quá trình lược bỏ các phần thông tin đã được gắn thêm vào trong quá trình đóng gói. Tại mỗi tầng, giao thức tương ứng tại mỗi tầng sẽ thực hiện kiểm tra, và gỡ bỏ các thông tin header thuộc tầng đó, sau đó chuyển gói tin lên tầng cao hơn.
Hình sau minh họa cả hai quá trình: đóng gói tại máy gửi và mở gói tại máy nhận.

Trong thực tế, gói tin thường được minh họa như sau:

Quá trình đóng gói không chỉ gắn thêm thông tin vào đầu các gói được chuyển từ tầng trên xuống, mà trong thực tế, tại một số tầng, gói tin sẽ được gắn thêm thông tin vào cả phần đuôi (trailer). Ngoài ra, phần nội dung có thể được mã hóa, nén, chia nhỏ hoặc ghép nối.

Quá trình chuyển gói lên tầng trên khi mở gói

Quan sát hình vẽ sau:

Khi nhận được gói tin (ở dạng các bit) từ cáp mạng, máy tính sẽ chuyển gói tin này cho giao thức nào ở bên trên để tiếp tục mở gói và xử lý tiếp? Ở hình trên, quá trình gửi gói lên tầng trên sẽ được đi theo đường nét đứt. Làm sao để máy tính xác định được đường này?
Thực tế, thông tin điều khiển trong header tại mỗi tầng đã bao gồm thông tin giúp xác định gói tin sẽ được chuyển tiếp cho giao thức nào ở tầng bên trên.
Ở hình vẽ trên, máy tính nhận gói tin từ mạng Ethernet, nên gói tin là gói Ethernet. Trong header của Ethernet trường Ethertype cho biết gói tin sẽ được chuyển cho giao thức IP. Trong header của tầng IP trường IP protocol cho biết gói tin sẽ được chuyển cho giao thức TCP. Trong header của tầng TCP, trường TCP port number cho biết gói tin sẽ được chuyển cho giao thức HTTP.

Ưu điểm và nhược điểm của việc phân tầng

Ưu điểm
Việc phân tầng giúp che dấu thông tin và tái sử dụng.
Ví dụ, khi duyệt web, người sử dụng chỉ cần mở trình duyệt web (Mozilla Firefox, IE, Chrome…v.v), nhập đường dẫn trang web, và chờ nhận kết quả trả về từ server. Thực tế, người sử dụng không cần phải quan tâm tới việc hệ thống mạng đã làm cách nào để có được nội dung trang web? Hệ thống mạng đang sử dụng là có dây hay không dây? Phải sử dụng trình duyệt nào?
Hình vẽ sau minh họa việc che dấu thông tin và tái sử dụng.

Hình vẽ trên cho thấy, ta có thể sử dụng trình duyệt bất kì để duyệt web mà không phải quan tâm xem các tầng bên dưới đang chạy giao thức gì.  Nghĩa là, tầng dưới cùng có thể sử dụng giao thức 802.11 hoặc Ethernet để truyền dữ liệu giữa Browser và Server mà không làm ảnh hưởng đến hoạt động của các tầng bên trên.
Che dấu thông tin còn giúp cho việc kết nối dễ dàng các loại hệ thống khác nhau về công nghệ.

Ở hình trên, bên Browser đang sử dụng mạng không dây (802.11), bên Server đang sử dụng mạng có dây (Ethernet). Browser muốn lấy nội dung của website (phần tô màu tím). Để chuyển nội dung website từ Server về Browser, hệ thống mạng sẽ xây dựng thành phần giao tiếp trung gian, dữ liệu sẽ được truyền theo đường nét đứt màu hồng. Giao thức IP được xem như điểm đấu nối của nhiều loại công nghệ, nhiều loại giao thức (ở tầng thấp hơn cũng như ở tầng cao hơn).
Nhược điểm
Quá trình đóng gói làm tăng kích thước gói tin do phải thêm header tại mỗi tầng. Tuy nhiên, với kích thước của phần nội dung lớn thì kích thước của header thêm vào là không đáng kể.
Do che dấu thông tin, nên trong một số trường hợp ứng dụng các tầng phía trên muốn biết thông tin của các tầng phía dưới sẽ rất khó khăn. Ví dụ, ứng dụng web sẽ rất khó để biết được nó đang chay trên mạng có dây hay không dây? băng thông của hạ tầng mạng không dây hiện thời là bao nhiêu (do bạn có thể thay đổi vị trí thường xuyên)?

Câu hỏi tìm hiểu thêm

  1. Việc lựa chọn giao thức cho quá trình đóng gói và mở gói?

Tham khảo:

[1] Andrew S. Tanenbaum, David J. Wetherall, Computer Networks 5th edition, 2011
[2] David J. Wetherall, Introduction to Computer Networks, www.coursera.org, 2013
-----------------
2013/8/7