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
- 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