Giáo trình Mạng máy tính (Phần 2) - Ngô Bá Hùng

pdf 110 trang ngocly 2200
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Mạng máy tính (Phần 2) - Ngô Bá Hùng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_mang_may_tinh_phan_2_ngo_ba_hung.pdf

Nội dung text: Giáo trình Mạng máy tính (Phần 2) - Ngô Bá Hùng

  1. Các vấn đề liên quan đến việc thiết kế tầng mạng Các vấn đề liên quan đến việc thiết kế tầng mạng Kỹ thuật hoán chuyển lưu và chuyển tiếp (Store-and-Forward Switching) Xét một liên mạng như hình dưới đây Kỹ thuật lưu và chuyển tiếp trên tầng mạng (H6.1) Trong đó các router nằm trong hình oval được nối lại với nhau bằng các đường truyền theo kiểu điểm nối điểm được gọi là các thiết bị của nhà cung cấp đường truyền (Carrier’s equipment). Các thiết bị nằm bên ngoài hình oval được gọi là các thiết bị của khách hàng (Customer’s Equipment). Máy tính H1 được nối trực tiếp vào router A của nhà cung cấp đường truyền bằng một đường nối kết thường trực (lease line). Máy H2 nối kết vào một mạng LAN cục bộ. Trong mạng LAN có router F thuộc sở hữu của khách hàng. F được nối với router E của nhà cung cấp cũng bằng một đường nối kết thường trực. Cho dù cách thức nối kết vào mạng của các máy tính có thể khác nhau như trường hợp máy H1 và H2, nhưng cách thức các gói tin của chúng được truyền đi đều giống nhau. Một máy tính có một gói tin cần truyền đi sẽ gởi gói tin đến router gần nó nhất, có thể là router trên LAN của nó hoặc router của nhà cung cấp đường truyền. Gói tin được lưu lại ở đó và được kiểm tra lỗi. Kế đến gói tin sẽ được chuyển đến một router kế tiếp trên đường đi đến đích của gói tin. Và cứ tiếp tục như thế cho đến khi đến được máy nhận gói tin. Đây chính là kỹ thuật lưu và chuyển tiếp. Các dịch vụ cung cấp cho tầng vận chuyển Các dịch vụ tầng mạng cung cấp cho tầng vận chuyển cần được thiết kế hướng đến các mục tiêu sau: Các dịch vụ này cần nên độc lập với kỹ thuật của các router. 135/244
  2. 1. Tầng vận chuyển cần được độc lập với số lượng, kiểu và hình trạng của các router hiện hành. 2. Địa chỉ mạng cung cấp cho tầng vận chuyển phải có sơ đồ đánh số nhất quán cho dù chúng là LAN hay WAN. Tầng mạng cung cấp hai dịch vụ chính là Dịch vụ không nối kết (Connectionless Service) và Dịch vụ định hướng nối kết (Connection – Oriented Service). Trong dịch vụ không nối kết, các gói tin được đưa vào subnet một cách riêng lẽ và được vạch đường một cách độc lập nhau. Không cần thiết phải thiết lập nối kết trước khi truyền tin. Các gói tin trong trường hợp này được gọi là thư tín (Datagram) và subnet được gọi là Datagram Subnet. Ngược lại trong dịch vụ định hướng nối kết, một đường nối kết giữa bên gởi và bên nhận phải được thiết lập trước khi các gói tin có thể được gởi đi. Nối kết này được gọi là mạch ảo (Virtual Circuit) tương tự như mạch vật lý được nối kết trong hệ thống điện thoại và subnet trong trường hợp này được gọi là virtual circuit subnet. Cài đặt dịch vụ không nối kết ( Implementation of Connectionless Service) Xét hệ thống mạng như hình H6.2. Giả sử rằng quá trình P1 có nhiều thông điệp cần gởi cho quá trình P2. Khi đó P1 sẽ gởi các thông điệp này cho tầng vận chuyển và yêu cầu tầng vận chuyển truyền sang quá trình P2 trên máy tính H2. Tầng vận chuyển sẽ gắn thêm tiêu đề (header) của nó vào thông điệp và chuyển các thông điệp xuống tầng mạng. Hoạt động của Datagram subnet (H6.2) 136/244
  3. Giả sử rằng thông điệp gởi đi thì lớn gấp 4 lần kích thước tối đa của một gói tin, vì thế tầng mạng phải chia thông điệp ra thành 4 gói tin 1,2,3 và 4, và lần lượt gởi từng gói một đến router A bằng một giao thức điểm nối điểm như PPP chẳng hạn. Mỗi router có một bảng thông tin cục bộ chỉ ra nơi nào có thể gởi các gói tin để có thể đến được những đích đến khác nhau trên mạng. Mỗi mục từ của bảng chứa 2 thông quan trọng nhất đó là Đích đến (Destination) và ngỏ ra kế tiếp (Next Hop) cần phải chuyển gói tin đến để có thể đến được đích đến này. Ta gọi là bảng chọn đường (Routing Table). Ví dụ • Lúc khởi đầu, router A có bảng chọn đường như hình H6.2 (lúc đầu). Khi gói tin 1,2 và 3 đến router A, nó được lưu tạm thời để kiểm tra lỗi. Sau đó chúng được chuyển tiếp sang router C vì theo thông tin trong bảng chọn đường của A. Gói tin 1 sau đó tiếp tục được chuyển đến E và kế đến là F. Sau đó nó được gói lại trong một khung của tầng liên kết dữ liệu và được chuyển đến máy H2 bởi mạng LAN. Các gói tin 2 và 3 cũng có cùng đường đi tương tự. • Sau đó, do một số sự cố về đường truyền, router A cập nhật lại bảng chọn đường của mình như hình H6.2(lúc sau). Khi đó gói tin số 4 đến router A, nó sẽ chuyển gói tin này sang B để có thể đi được đến H2. Giải thuật chịu trách nhiệm quản lý thông tin trong bảng chọn đường cũng như thực hiện các quyết định về chọn đường được gọi là Giải thuật chọn đường (Routing algorithm). Cài đặt dịch vụ định hướng nối kết (Connection – Oriented Service) Đối với dịch vụ nối kết định hướng chúng ta cần một mạch ảo trên subnet. Mục đích của việc sử dụng mạch ảo là để tránh phải thực hiện việc chọn lại đường đi mới cho mỗi gói tin gởi đến cùng một đích. Khi một nối kết được thực hiện, một đường đi từ máy tính gởi đến máy tính nhận được chọn như là một phần của giai đoạn thiết lập nối kết (Connection setup) và được lưu trong bảng chọn đường của các router nằm trên đường đi. Khi nối kết kết thúc, mạch ảo bị xóa. Với dịch vụ định hướng nối kết, mỗi gói tin có mang một số định dạng để xác định mạch ảo mà nó thuộc về. 137/244
  4. Hoạt động của Datagram subnet (H6.3) Như hình H6.3, máy tính H1 thực hiện một nối kết với máy tính H2 qua nối kết số 1. Nối kết này được ghi nhận trong mục từ đầu tiên trong bảng chọn đường của các router. Dòng đầu tiên trong bảng chọn đường của router A nói rằng: những gói tin mang số nhận dạng nối kết số 1 đến từ máy H1 phải được gởi sang router C với số nhận dạng nối kết là 1. Tương tự, cho các mục từ đầu tiên của router C và E. Điều gì xảy ra nếu máy tính H3 muốn nối kết với máy tính H2. Nó chọn số nhận dạng nối kết là 1, vì đây là nối kết đầu tiên đối với H3, và yêu cầu subnet thiết lập mạch ảo. Điều này đã làm cho các router phải thêm vào mục từ số 2 trong bảng chọn đường. Đối với router A, số nhận dạng nối kết với H3 là 1, trùng với nối kết với H1, không làm router A lẫn lộn vì A có thêm thông tin máy gởi là H1 hay H3. Tuy nhiên, đối với các router C, E và F thì không thể phân biệt được đâu là nối kết của H1 và đâu là nối kết của H3 nếu sử dụng số nhận dạng nối kết là 1 cho cả 2 nối kết. Chính vì thế A đã gán một số nhận dạng khác, là số 2, cho các gói tin gởi đến C có nguồn gốc từ H3. So sánh giữa Datagram subnet và Virtual-Circuit subnet Bảng sau so sánh điểm mạnh và điểm yếu của 2 loại dịch vụ không nối kết và định hướng nối kết: Vấn đề Datagram Subnet Circuit Subnet Thiết lập Không cần Cần thiết nối kết 138/244
  5. Đánh địa Mỗi gói tin chứa đầy đủ địa Mỗi gói tin chỉ chứa số nhận dạng nối chỉ chỉ gởi và nhận kết có kích thước nhỏ. Router không cần phải lưu Thông tin Mỗi nối kết phải được lưu lại trong bảng giữ thông tin trạng thái của trạng thái chọn đường của router. các nối kết Đường đi được chọn khi mạch ảo được Chọn Mỗi gói tin có đường đi khác thiết lập, sau đó tất cả các gói tin đều đi đường nhau trên đường này. Ảnh hưởng Không bị ảnh hưởng, ngoại Tất cả các mạch ảo đi qua router bị hỏng khi router trừ gói tin đang trên đường đều bị kết thúc bị hỏng truyền bị hỏng Chất lượng Có thể thực hiện dễ dàng nếu có đủ tài Khó đảm bảo dịch vụ nguyên gán trước cho từng nối kết Điều khiển Có thể thực hiện dễ dàng nếu có đủ tài Khó điều khiển tắc nghẽn nguyên gán trước cho từng nối kết 139/244
  6. Giải thuật chọn đường Giải thuật chọn đường Giới thiệu Vạch đường về bản chất là một bài toán trong lý thuyết đồ thị. Hình 6.4 thể hiện một đồ thị biểu diễn cho một mạng. Mạng được biểu diễn như một đồ thị (H6.4) Các nút trong đồ thị (được đánh dấu từ A đến F) có thể là các host, switch, router hoặc là các mạng con. Ở đây chúng ta tập trung vào một trường hợp các nút là các router. Các cạnh của đồ thị tương ứng với các đường nối kết mạng. Mỗi cạnh có một chi phí đính kèm, là thông số chỉ ra cái giá phải trả khi lưu thông trên nối kết mạng đó. Vấn đề cơ bản của việc vạch đường là tìm ra đường đi có chi phí thấp nhất giữa hai nút mạng bất kỳ, trong đó chi phí của đường đi được tính bằng tổng chi phí khi đi qua tất cả các cạnh làm thành đường đi đó. Nếu không có một đường đi giữa hai nút, thì độ dài đường đi giữa chúng được xem như bằng vô cùng. Mục tiêu của giải thuật chọn đường • Xác định đướng đi nhanh chóng, chính xác. • Khả năng thích nghi được với những thay đổi về hình trạng mạng. • Khả năng thích nghi được với những thay đổi về tải đường truyền. • Khả năng tránh được các nối kết bị tắt nghẽn tạm thời • Chi phí tính toán để tìm ra được đường đi phải thấp Phân loại giải thuật chọn đường Giải thuật chọn đường có thể được phân thành những loại sau: 140/244
  7. • Chọn đường tập trung (Centralized routing): Trong mạng có một Trung tâm điều khiển mạng (Network Control Center) chịu trách nhiệm tính toán và cập nhật thông tin về đường đi đến tất cả các điểm khác nhau trên toàn mạng cho tất cả các router. • Chọn đường phân tán (Distributed routing): Trong hệ thống này, mỗi router phải tự tính toán tìm kiếm thông tin về các đường đi đến những điểm khác nhau trên mạng. Để làm được điều này, các router cần phải trao đổi thông tin quan lại với nhau. • Chọn đường tĩnh (Static routing): Trong giải thuật này, các router không thể tự cập nhật thông tin về đường đi khi hình trạng mạng thay đổi. Thông thường nhà quản mạng sẽ là người cập nhật thông tin về đường đi cho router. • Chọn đường động (Dynamic routing): Trong giải thuật này, các router sẽ tự động cập nhật lại thông tin về đường đi khi hình trạng mạng bị thay đổi. Các giải thuật tìm đường đi tối ưu Đường đi tối ưu từ A đến B là đường đi “ngắn” nhất trong số các đường đi có thể. Tuy nhiên khái niệm “ngắn” nhất có thể được hiểu theo nhiều ý nghĩa khác nhau tùy thuộc vào đơn vị dùng để đo chiều dài đường đi. Đối với các router, các đại lượng sau có thể được sử dụng để đo độ dài đường đi: Mô hình hóa mạng thành đồ thị (H6.5) • Số lượng các router trung gian phải đi qua (HOP) • Độ trì quản trung bình của các gói tín • Cước phí truyền tin Mỗi giải thuật chọn đường trước tiên phải chọn cho mình đơn vị đo chiều dài đường đi. Để xác định được đường đi tối ưu, các giải thuật chọn đường sử dụng phương pháp đồ thị để tính toán. Trước tiên, nó mô hình hóa hình trạng mạng thành một đồ thị có các đặc điểm như sau: • Nút là các router. • Cạnh nối liền 2 nút là đường truyền nối hai router. 141/244
  8. • Trên mỗi cạnh có giá đó là chiều dài đường đi giữa 2 router thông qua đường truyền nối hai router . • Chiều dài đường đi từ nút A đến nút B là tổng tất cả các giá của các cạnh nằm trên đường đi. Nếu không có đường đi giữa 2 router thì xem như giá là vô cùng. Trên đồ thị này sẽ thực hiện việc tính toán tìm đường đi ngắn nhất. Giải thuật tìm đường đi ngắn nhất Dijkstra Mục đích là để tìm đường đi ngắn nhất từ một nút cho trước trên đồ thị đến các nút còn lại trên mạng. Giải thuật được mô tả như sau: • Gọi: ◦ S là nút nguồn cho trước ◦ N: là tập hợp tất cả các nút đã xác định được đường đi ngắn nhất từ S. ◦ Di: là độ dài đường đi ngắn nhất từ nút nguồn S đến nút i. ◦ lij: là giá của cạnh nối trực tiếp nút i với nút j, sẽ là ∞nếu không có cạnh nối trực tiếp giữa i và j. ◦ Pj là nút cha của của nút j. • Bước 1: Khởi tạo ◦ N={S}; Ds=0; • ◦ Với ∀i≠S: Di=lsi , Pi=S • Bước 2: Tìm nút gần nhất kế tiếp ◦ Tìm nút i ∉ N thoả Di= min (Dj) với j ∉ N ◦ Thêm nút i vào N. ◦ Nếu N chứa tất cả các nút của đồ thị thì dừng. Ngược lại sang Bước 3 ◦ Bước 3: Tính lại giá đường đi nhỏ nhất ▪ Với mỗi nút j ∉ N: Tính lại Dj= min{ Dj, Di+ lij} ; Pj=i; ▪ Trở lại Bước 2 Ví dụ: Cho mạng có hình trạng như đồ thị hình H6.6: Tìm đường đi ngắn nhất từ nút 1 đến các nút còn lại. Áp dụng giải thuật ta có: 142/244
  9. Hình trạng mạn (H6.6) • S=1 • Các bước thực hiện được mô tả như sau: Lần lặp N D2 D3 D4 D5 D6 P2 P3 P4 P5 P6 Khởi tạo {1} 3 2 5 ∞ ∞ 1 1 1 1 1 1 {1,3} 3 2 4 ∞ 3 1 1 3 1 3 2 {1,3,2} 3 4 7 3 1 3 2 3 3 {1,3,2,6} 4 5 3 3 6 3 4 {1,3,2,6,4} 4 5 3 6 5 {1,3,2,6,4,5} 5 6 Cây đường đi ngắn nhất từ nút 1 (H6.7) Từ kết quả trên ta vẽ được cây có đường đi ngắn nhất từ nút số 1 đến các nút còn lại như hình H6.7. Từ cây đường đi ngắn nhất này, ta xác định được rằng: để đi đến các router router 4, 5, 6 , bước kế tiếp router 1 cần gởi gói tin đến là router số 3 (next hop). Chú ý, đường ngắn nhất này chỉ đúng theo hướng từ nút số 1 về các nút còn lại và chỉ đúng cho nút số 1 mà thôi. 143/244
  10. Thông thường giải thuật Dijkstra được sử dụng theo mô hình chọn đường tập trung. Trong đó, Trung tâm điều khiển mạng sẽ tìm cây đường đi ngắn nhất cho từng router trên mạng và từ đó xây dựng bảng chọn đường tối ưu cho tất cả các router. Giải thuật chọn đường tối ưu Ford-Fulkerson Mục đích của giải thuật này là để tìm đường đi ngắn nhất từ tất cả các nút đến một nút đích cho trước trên mạng. Giải thuật được mô tả như sau: • Gọi ◦ d là nút đích cho trước ◦ Di là chiều dài đường đi ngăn nhất từ nút i đến nút d. ◦ Ci là nút con của nút i • Bước 1: Khởi tạo: ◦ Gán Dd = 0; ◦ Với ∀i≠d: gán Di= ∞; Ci= -1; • Bước 2: Cập nhật giá đường đi ngắn nhất từ nút i đến nút d ◦ Di= min{ lij+ Dj} với ∀j≠i => Ci = j; ◦ Lặp lại cho đến khi không còn Di nào bị thay đổi giá trị Ví dụ, cho sơ đồ mạng có hình trạng như đồ thị hình H6.8. Hãy tìm đường đi ngắn nhất từ nút khác trên đồ thị đến nút 6. Áp dụng giải thuật ta có: • d=6 • Các bước thực hiện được mô tả như sau: Hình trạng mạng (H6.8) 144/244
  11. Từ kết quả trên ta vẽ lại được cây đường đi ngắn nhất từ các nút khác nhau về nút đích số 6 như H6.9. Cây này cho phép xác định đường đi tối ưu từ những nút khác nhau về nút số 6. Chẳng hạn tại nút 1, để đi về nút số 6 thì bước kế tiếp phải đi là nút số 3. Tương tự, tại nút 2, để đi về nút số 6 thì bước kế tiếp phải đi là nút số 4. Giải thuật này được sử dụng theo mô hình phân tán. Ở đó mỗi router sẽ tự tính toán, tìm cây có đường đi ngắn nhất từ các nút khác về nó. Từ đó suy ra đường đi tối ưu cho các nút khác đến nó và gởi các đường đi này đến từng nút trên mạng. Cây đường đi ngắn nhất về nút 6 (H6.9) Giải pháp vạch đường Vector Khoảng cách (Distance Vector) Ý tưởng của Distance-Vector như sau: Mỗi nút thiết lập một mảng một chiều (vector) chứa khoảng cách (chi phí) từ nó đến tất cả các nút còn lại và sau đó phát vector này đến tất cả các nút láng giềng của nó. Giả thiết đầu tiên trong Distance-Vector là: mỗi nút phải biết được chi phí của các đường nối từ nó đến tất cả các nút láng giềng có đường nối kết trực tiếp với nó. Một nối kết bị đứt (down) sẽ được gán cho chi phí có giá trị vô cùng. Để xem xét giải thuật vạch đường Distance-Vector hoạt động như thế nào, cách dễ nhất là xem xét đồ thị được cho như trong hình H6.10 145/244
  12. Một mạng làm ví dụ trong giải thuật Distance-Vector (H6.10) Trong ví dụ này, chi phí trên mỗi đường nối đều được đặt là 1. Chúng ta có thể biểu diễn sự hiểu biết của các nút về khoảng cách từ chúng đến các nút khác như trong bảng H6.11 Các khoảng cách ban đầu được lưu tại mỗi nút (H6.11) Chúng ta có thể xem mỗi một hàng trong bảng 6.11 như là một danh sách các khoảng cách từ một nút đến tất cả các nút khác. Khởi đầu, mỗi nút đặt giá trị 1 cho đường nối kết đến các nút láng giềng kề nó, ∞ cho các đường nối đến tất cả các nút còn lại. Do đó, lúc đầu A tin rằng nó có thể tìm đến B qua một bước nhảy (hop) và rằng nó không thể đi đến D được. Bảng vạch đường lưu tại A thể hiện những niềm tin mà A có được, ngoài ra còn lưu thêm nút kế tiếp mà A cần phải đi ra để đến một nút nào đó. Khởi đầu, bảng vạch đường của nút A trông giống như trong bảng 6.12 146/244
  13. Bảng vạch đường khởi đầu tại nút A (H6.12) Bước kế tiếp trong giải thuật vạch đường Distance-Vector là: mỗi nút sẽ gởi một thông điệp đến các láng giềng liền kề nó, trong thông điệp đó chứa danh sách các khoảng cách mà cá nhân nút tính được. Ví dụ, nút F bảo nút A rằng F có thể đi đến nút G với chi phí là 1; A cũng biết được rằng nó có thể đến F với chi phí là 1, vì thế A cộng các chi phí lại thành chi phí đi đến G là 2 thông qua F. Tổng chi phí là 2 này nhỏ hơn chi phí vô cùng lúc đầu, do đó A ghi lại nó có thể đi đến G thông qua F với chi phí là 2. Tương tự, A học được từ C rằng, nó có thể đi đến D thông qua C với chi phí là 2, và chi phí này nhỏ hơn chi phí cũ là vô cùng. Cùng lúc A cũng học từ C rằng, nó có thể đi đến B thông qua C với chi phí là 2, nhưng chi phí này lại lớn hơn chi phí cũ là 1, vì thế thông tin mới này bị bỏ qua. Tại thời điểm này, A có thể cập nhật lại bảng chọn đường của nó với chi phí và nút ra kế tiếp để có thể đi đến tất cả các nút khác trong mạng. Kết quả được cho trong bảng H6.13 Bảng vạch đường cuối cùng tại nút A (H.6.13) Nếu không có sự thay đổi về hình trạng mạng nào, chỉ cần vài cuộc trao đổi thông tin vạch đường giữa các nút trong mạng thì mọi nút đều có được thông tin vạch đường hoàn hảo. Quá trình đem thông tin vạch đường nhất quán đến mọi nút trong mạng được gọi là sự hội tụ (convergence). Hình 6.14 chỉ ra thông tin về chi phí cuối cùng từ một nút đến các nút khác trong mạng khi quá trình vạch đường đã hội tụ. 147/244
  14. Các khoảng cách cuối cùng được lưu tại mỗi nút (H6.14) Nét đẹp của loại giải thuật phân tán như trên nằm ở chỗ nó cho phép tất cả các nút đạt được thông tin vạch đường mà không cần phải có sự hiện diện của bộ điều khiển trung tâm nào. Còn có vài chi tiết làm cho giải thuật Distance-Vector hoàn hảo hơn. Thứ nhất, chú ý rằng có hai tình huống khác nhau mà tại đó một nút quyết định gởi thông tin vạch đường của mình cho các nút láng giềng kề bên. Tình huống đầu tiên là sự cập nhật theo chu kỳ (periodic update). Trong tình huống này, mỗi nút tự động gởi bản cập nhật thường xuyên, ngay cả khi không có thay đổi gì trong đó cả. Điều này giúp cho các nút khác biết được nút hiện tại đang còn sống. Vả lại việc cập nhật thường xuyên còn giúp cho các nút láng giềng có thể có được thông tin vạch đường nhanh chóng trong trường hợp thông tin của chúng bị mất. Tần số phát thông tin vạch đường đi có thể khác nhau tùy vào giải thuật, chúng thường có giá trị từ vài giây đến vài phút. Tình huống thứ hai gọi là sự cập nhật do bị kích hoạt (triggered update). Tình huống này xảy ra mỗi khi có sự thay đổi thông tin trong bảng vạch đường của nút. Nghĩa là mỗi khi bảng vạch đường có sự thay đổi, nút sẽ gởi bản cập nhật này cho các láng giềng của mình. Bây giờ ta xem xét điều gì xảy ra khi một đường nối kết hay một nút bị hỏng. Những nút đầu tiên phát hiện ra điều này sẽ gởi thông tin vạch đường mới cho láng giềng của chúng ngay, và thông thường hệ thống sẽ ổn định với tình trạng mới một cách nhanh chóng. Còn đối với câu hỏi làm sao nút phát hiện ra sự cố, có nhiều câu trả lời khác nhau. Cách tiếp cận thứ nhất là: một nút liên tục kiểm tra đường nối tới các nút láng giềng khác bằng cách gởi các gói tin điều khiển tới chúng và kiểm tra xem nó có nhận được các gói tin trả lời hay không. Cách tiếp cận khác là: một nút phát hiện ra một đường nối kết (hay nút ở đầu kia của đường nối) gặp sự cố khi nó không nhận được thông tin vạch đường một cách định kỳ từ láng giềng của nó. Ví dụ, xem xét điều gì sẽ xảy ra khi F phát hiện ra đường nối từ nó đến G bị hỏng. Đầu tiên, F đặt chi phí của đường nối từ nó đến A thành vô cùng và gởi thông tin này đến A. Do A đã biết là cần 2 bước để đi từ nó đến G thông qua F, A sẽ đặt lại chi phí từ nó đến G là vô cùng. Tuy nhiên, với bản cập nhật kế tiếp từ C, A phát hiện ra rằng có một 148/244
  15. đường đi dài 2 hops từ C đến G, do đó nó sẽ cập nhật lại đường đi từ nó đến G dài 3 hops thông qua C. Và khi A quảng cáo thông tin này cho F, F lại cập nhật lại đường đi dài 4 hops đến G thông qua A. Không may là: một số tình huống phát sinh lỗi khác lại làm cho mạng mất ổn định nghiêm trọng. Giả sử nối kết từ A đến E bị đứt. Trong những chu kỳ cập nhật sau, A thông báo đường đi từ nó đến E dài vô cùng, nhưng B và C lại quảng cáo đường đi từ chúng đến E dài 2 hops. Nếu các bản cập nhật được định thời để phát cùng lúc, B sẽ sửa lại độ dài đường đi từ nó đến E là 3 thông qua C, C sửa lại độ dài đường đi từ nó đến E là 3 thông qua B. Sau đó A lại nghe B và C quảng cáo độ dài đường đi từ chúng đến E là 3 và giả sử A chọn B là nút kế tiếp để đi đến E, nó sẽ cập nhật lại độ dài đoạn đường là 4. Đến chu kỳ kế tiếp, B nghe C nói độ dài từ C đến E là 3 nên cập nhật lại độ dài đường đi từ B đến E là 4 thông qua C, C thì làm ngược lại: sửa lại con đường từ nó đến E là 4 thông qua B. Rồi lại đến lượt A nghe B sửa lại độ dài từ A đến E là 5 thông qua B. Sự thể sẽ tiếp diễn cho đến khi các độ dài tăng đến một số có thể coi là vô cùng. Nhưng tại thời điểm này, không nút nào biết là E không thể đến được, và các bảng vạch đường trong mạng luôn không ổn định. Tình huống này được gọi là vấn đề “đếm tới vô cùng” (count-to-infinity problem). Có vài giải pháp giải quyết một phần vấn đề “đếm tới vô cùng”. Giải pháp thứ nhất là dùng một số khá nhỏ để coi như gần bằng vô cùng. Ví dụ như chúng ra có thể quyết định số lượng bước nhảy (hop) tối đa để đi qua một mạng là không quá 16, và do đó ta chọn 16 là số gần bằng vô cùng. Con số này ít ra cũng giới hạn được thời gian mà các nút có thể phải bỏ ra để đếm tới vô cùng. Tuy nhiên giải pháp này có thể gặp vấn đề nếu một số nút mạng được chia tách và mạng có thể cần nhiều hơn 16 bước nhảy để duyệt hết nó. Một kỹ thuật khác dùng để cải thiện thời gian dùng để ổn định hóa mạng được gọi là kỹ thật “chia tầm nhìn” (split horizon). Ý tưởng là: khi một nút gởi một bảng cập nhật vạch đường cho các láng giềng của nó, nó sẽ không gởi những thông tin vạch đường mà nó đã nhận từ một nút láng giềng ngược lại chính nút láng giềng đó. Ví dụ như nếu B có một đường đi (E, 2, A) trong bảng vạch đương của nó, B chắc hẳn phải biết rằng nó học con đường này từ A, vì thế mỗi khi B gởi thông tin cập nhật cho A nó sẽ không gởi con đường (E, 2) trong đó. Tuy nhiên giải pháp này chỉ tốt khi nó xoay quanh 2 nút mà thôi. Giải pháp chọn đường “Trạng thái nối kết” (Link State) Vạch đường kiểu Link-state là một ví dụ thứ hai trong họ giao thức vạch đường bên trong một miền. Giả thiết đầu tiên trong Link-state cũng khá giống trong Distance- vector: Mỗi nút được giả định có khả năng tìm ra trạng thái của đường nối nó đến các nút láng giềng và chi phí trên mỗi đường nối đó. Nhắc lại lần nữa: chúng ta muốn cung cấp cho mỗi nút đủ thông tin để cho phép nó tìm ra đường đi có chi phí thấp nhất đến bất kỳ đích nào. Ý tưởng nền tảng đằng sau các giao thức kiểu Link-state là rất đơn giản: 149/244
  16. Mọi nút đều biết đường đi đến các nút láng giềng kề bên chúng và nếu chúng ta đảm bảo rằng tổng các kiến thức này được phân phối cho mọi nút thì mỗi nút sẽ có đủ hiểu biết về mạng để dựng lên một bản đồ hoàn chỉnh của mạng. Giải thuật Link-state dựa trên hai kỹ thuật: sự phân phối một cách tin cậy thông tin về trạng thái các đường nối kết; và sự tính toán các đường đi từ kiến thức tổng hợp về trạng thái các đường nối kết. Làm ngập một cách tin cậy (Reliable Flooding) “Làm ngập” là quá trình thực hiện cam kết: “tất cả các nút tham gia vào giao thức vạch đường đều nhận được thông tin về trạng thái nối kết từ tất cả các nút khác”. Như khái niệm “làm ngập” ám chỉ, ý tưởng cơ sở của Link-state là cho một nút phát thông tin về trạng thái nối kết của nó với mọi nút láng giềng liền kề, đến lượt mỗi nút nhận được thông tin trên lại chuyển phát thông tin đó ra các nút láng giềng của nó. Tiến trình này cứ tiếp diễn cho đến khi thông tin đến được mọi nút trong mạng. Cụ thể hơn, mỗi nút tạo ra gói tin cập nhật, còn được gọi là gói tin trạng thái nối kết (link-state packet – LSP), chứa những thông tin sau: • ID của nút đã tạo ra LSP • Một danh sách các nút láng giềng có đường nối trực tiếp tới nút đó, cùng với chi phí của đường nối đến mỗi nút. • Một số thứ tự • Thời gian sống (time to live) của gói tin này Hai mục đầu là cần thiết cho việc tính toán chọn đường; hai mục sau cùng được sử dụng để giúp cho quá trình làm ngập thật chắc. Tính tin cậy ở đây đòi hỏi việc đảm bảo các nút trong mạng có được thông tin có phiên bản mới nhất, do có nhiều LSP trái ngược nhau từ một nút được phát lên mạng. Đảm bảo việc làm ngập có thể tin cậy được là một việc khó (Ví dụ, một phiên bản cũ của giao thức vạch đường link-state trong ARPANET đã làm cho mạng này bị tê liệt vào năm 1981). Việc làm ngập được thực hiện như sau: Đầu tiên, việc truyền các LSP giữa các nút kề nhau được bảo đảm tính tin cậy bằng cách sử dụng cơ chế báo nhận (acknowledgement) và làm lại khi bị lỗi (retransmission) giống như ở tầng liên kết dữ liệu. Tuy nhiên, cần thực hiện thêm một số bước để đảm bảo việc phát một LSP từ một nút đến tất cả các nút khác trong mạng là đáng tin cậy. Giả sử nút X nhận được một phiên bản LSP có nguồn gốc từ nút Y nào đó. Chú ý rằng nút Y có thể là bất kỳ router nào ở trong cùng một miền với X. X kiểm tra xem nó đã có bất kỳ phiên bản LSP nào từ Y không. Nếu không, nó sẽ lưu LSP này. Nếu có, X sẽ so sánh hai số thứ tự trong hai LSP. Nếu LSP mới đến có số thứ tự lớn hơn số thứ tự của LSP có sẵn, X cho rằng LSP mới đến là mới hơn, và do đó X sẽ thay LSP cũ bằng phiên bản mới này. Ngược lại, với một số thứ tự nhỏ hơn (hoặc bằng), LSP mới đến sẽ bị coi 150/244
  17. là cũ hơn cái đang có sẵn (hoặc ít ra là không mới hơn), và vì thế nó sẽ bị bỏ qua, không cần phải làm gì thêm. Nếu LSP mới đến là cái mới hơn, nút X sẽ gởi một phiên bản của LSP này ra tất cả các nút láng giềng liền kề nó ngoại trừ nút láng giềng vừa gởi cho nó phiên bản LSP mới vừa đề cập. Đến phiên các nút láng giềng của X lại xoay qua phát tán LSP mới này sang các nút láng giềng khác. Việc “LSP không được gởi ngược lại nút vừa phát ra nó” sẽ giúp dẫn đến điểm dừng của quá trình phát tán LSP này. Sự phát tán dây chuyền có điểm dừng này sẽ đảm bảo cho việc đem phiên bản LSP mới nhất đến tất cả các nút trong mạng. Hình H6.15 thể hiện một LSP được dùng làm ngập một mạng nhỏ. Hình (a) thể hiện X nhận được một LSP mới; (b) X đẩy LSP mới ra A và C; (c) A và C đẩy LSP qua B; (d) B đẩy LSP qua D và quá trình làm ngập kết thúc. Việc làm ngập mạng với các gói tin LSP (H6.15) Cũng giống như trong giải thuật Distance-Vector, sẽ có hai tình huống mà một nút quyết định gởi LSP đến các nút láng giềng: gởi một cách định kỳ hoặc gởi do bị kích hoạt. Một trong những ưu tiên hàng đầu của cơ chế làm ngập (flooding) là phải đảm bảo đem thông tin mới nhất đến mọi nút trong mạng càng nhanh càng tốt và các thông tin cũ phải được rút ra không cho lưu thông trên mạng nữa. Thêm nữa, rất là lý tưởng nếu ta có thể giảm thiểu lượng thông tin vạch đường lưu chuyển trên mạng – một kiểu phí tổn theo cách nhìn của nhiều người. Một phương pháp cần thiết để giảm thiểu phí tổn dành cho việc vạch đường là tránh gởi các LSP trừ trường hợp hết sức cần thiết. Điều này có thể thực hiện được bằng cách sử 151/244
  18. dụng các bộ định thời (timer) có giá trị rất lớn – thường là kéo dài hàng giờ - dùng để định kỳ phát các LSP. Còn để đảm bảo rằng thông tin cũ phải được thay thế bởi thông tin mới, các LSP sẽ mang số thứ tự. Mỗi khi một nút phát LSP mới, nó sẽ tăng số thứ tự lên 1. Không giống như hầu hết các giao thức khác, số thứ tự trong LSP sẽ không được đếm xoay vòng (modulo), vì thế trường chứa số này phải đủ lớn (ví dụ như 64 bit). Nếu một nút bị chết (down) và sau đó được khởi động lại, nó sẽ khởi động trường số thứ tự lại bằng 0. Nếu một nút bị chết quá lâu, tất cả các LSP của nút đó sẽ bị mãn kỳ (timed out); ngoài ra, nếu cuối cùng nút này lại nhận được LSP của chính nó với số thứ tự lớn hơn bản gốc, nút có thể lấy số lớn hơn làm số thứ tự mới. Các LSP cũng mang theo thời gian sống của nó (Time to live - TTL). Điều này dùng để đảm bảo các LSP cũ rút cuộc cũng bị xóa khỏi mạng. Một nút luôn luôn giảm trường TTL của một LSP mới đến nó đi 1 trước khi chuyển LSP này ra các nút láng giềng. Khi trường TTL còn 0, nút phát lại LSP với TTL = 0, điều đó sẽ được thông dịch bởi tất cả các nút trong mạng như là tín hiệu cho phép xóa LSP đó. Tính toán chọn đường trong Link State Khi một nút có một phiên bản LSP từ tất cả các nút khác trong mạng, nó đã có thể tính toán ra bản đồ hoàn chỉnh cho hình thái của mạng, và từ bản đồ này nút có thể quyết định con đường tốt nhất đến tất cả các nút còn lại trong mạng. Giải pháp chọn đường chính là giải thuật tìm đường đi ngắn nhất Dijkstra. Vạch đường phân cấp (Hierarchical Routing) Khi mạng tăng kích thước, kích thước bảng vạch đường của các router tăng theo. Không chỉ bộ nhớ của router bị tiêu hao quá nhiều cho việc trữ các bảng vạch đường, mà CPU còn phải tốn nhiều thời gian để quét bộ nhớ và cũng cần nhiều băng thông hơn để truyền những thông tin chọn đường này. Rồi cũng sẽ đến lúc mạng máy tính phát triển đến mức không một router nào có đủ khả năng trữ một đầu mục thông tin về một router khác, vì thế việc vạch đường phải phát triển theo đường hướng khác: vạch đường phân cấp. Khi việc vạch đường phân cấp được áp dụng, các router được chia thành những vùng (domain). Trong mỗi vùng, mỗi router biết cách vạch đường cho các gói tin đi đến được mọi đích trong nội vùng của nó, nhưng không biết gì về cấu trúc bên trong của các vùng khác. Khi nhiều vùng được nối kết với nhau, đương nhiên mỗi vùng được công nhận tính độc lập để giải phóng các router trong các vùng đó khỏi việc phải tìm hiểu hình trạng của các vùng khác. Với những mạng thật lớn, kiến trúc phân cấp hai mức có thể sẽ không đủ; có thể cần phải nhóm các vùng lại thành liên vùng, nhóm các liên vùng thành khu vực 152/244
  19. Hình H6.16 thể hiện một mạng được vạch đường phân cấp gồm hai mức có năm vùng. Bảng vạch đường đầy đủ của router A gồm có 17 mục từ như trong hình H6.16(b). Khi vạch đường được thực hiện theo kiểu phân cấp, bảng vạch đường của A giống như bảng H6.16(c), có mọi mục từ chỉ đến các router cục bộ giống như trước, tuy nhiên các mục từ chỉ đến các vùng khác lại được cô đặc lại thành một router. Do tỉ lệ các router trong các vùng tăng, vì thế cách làm này giúp rút ngắn bảng vạch đường. Vạch đường phân cấp (H6.16) Vạch đường trong mạng di động Ngày nay, hàng triệu người đang sở hữu máy tính xách tay, và thông thường họ muốn đọc email cũng như truy xuất các hệ thống tập tin cho dù họ đang ở bất kỳ nơi nào trên thế giới. Việc sử dụng các host di động này dẫn đến một vấn đề phức tạp mới: để vạch đường cho gói tin đến host di động, trước tiên phải tìm ra nó đã. Chủ đề về tích hợp các host di động lại thành một mạng là tương đối mới, tuy vậy trong phần này chúng ta sẽ phác thảo ra một số vấn đề phát sinh và chỉ ra các giải pháp khả thi. 153/244
  20. Mô hình mạng có hệ thống không dây (H6.17) Mô hình mạng mà các nhà thiết kế thường sử dụng được chỉ ra trong hình H6.17. Ở đây chúng ta có một mạng WAN bao gồm vài router và host. Mạng WAN được dùng để nối kết các mạng LAN, MAN, các tế bào mạng không dây (Wireless cell). Các host không bao giờ di chuyển được gọi là cố định, chúng được nối vào mạng bởi các đường cáp đồng hoặc quang. Ngược lại, chúng ta sẽ phân biệt hai loại host khác: loại di cư (migratory host) và loại lang thang (roaming host). Loại host di cư về bản chất là host cố định, nhưng chúng thỉnh thoảng lại chuyển từ địa bàn (site) này đến địa bàn mạng kia, và chúng chỉ có thể sử dụng mạng mới khi được nối kết vật lý vào đấy. Loại host lang thang thực chất vừa chạy vừa tính toán, nó muốn duy trì các nối kết mạng ngay cả khi đang di chuyển. Chúng ta sẽ sử dụng thuật ngữ “host di động” để ám chỉ hai loại di động vừa nói đến, tức là chúng đã đi khỏi nhưng lại muốn duy trì liên lạc về nhà. Tất cả các host được giả sử đều có vị trí mạng nhà (home location) và vị trí này không bao giờ thay đổi. Các host cũng có địa chỉ lâu dài tại nhà (home address) và địa chỉ này có thể được dùng để xác định vị trí mạng nhà của nó, cũng giống như số điện thoại 84-071-831301 chỉ ra số đó ở Việt Nam (mã 084), thành phố Cần Thơ (mã 071). Mục tiêu của việc vạch đường trong hệ thống có các host di động là phải đảm bảo có thể gởi được gói tin đến host di động sử dụng địa chỉ tại nhà của nó và làm cho các gói tin đến được host di động một cách hiệu quả cho dù host này có ở đâu đi nữa. Trong mô hình ở hình H6.17, WAN được chia thành các đơn vị nhỏ, ở đây chúng ta gọi là khu vực (area), thường là LAN hoặc tế bào mạng không dây. Mỗi khu vực có một hoặc nhiều trợ lý đối ngoại (foreign agent - FA) – đó là những tiến trình làm nhiệm vụ theo dõi các host khách đang viếng thăm khu vực của mình. Thêm vào đó, mỗi khu vực còn có một trợ lý đối nội (home agent - HA), làm nhiệm vụ theo dõi những host có nhà nằm trong khu vực nhưng hiện đang viếng thăm khu vực khác. 154/244
  21. Khi một host đi vào một khu vực mới (có thể là host này muốn thường trú trong mạng LAN mới hoặc chỉ đi ngang cell này thôi), nó phải đăng ký với trợ lý đối ngoại ở đó. Thủ tục đăng ký diễn ra như sau: 1. Theo chu kỳ, mỗi trợ lý đối ngoại sẽ phát ra những thông điệp thông báo sự hiện diện của nó cùng với địa chỉ. Một host mới tới sẽ chờ lắng nghe thông báo này. Nếu host cảm thấy nó đã chờ lâu nhưng không nhận được thông báo, host có thể tự phát câu hỏi: Có bất kỳ trợ lý đối ngoại nào ở đây không? 2. Host di động đăng ký với trợ lý đối ngoại, cung cấp thông tin về địa chỉ ở nhà, địa chỉ MAC và một số thông tin về an ninh khác. 3. Trợ lý đối ngoại liên hệ với trợ lý đối nội ở nhà của host đó và nói: Một host của ông đang ở đây. Thông điệp mà trợ lý đối ngoại gởi cho trợ lý đối nội bên kia chứa địa chỉ mạng của trợ lý đối ngoại đó. Thông điệp này còn chứa thông tin an ninh dùng để thuyết phục trợ lý đối nội bên kia rằng host di động của nó thực sự đang ở đó. 4. Trợ lý đối nội bên kia kiểm tra thông tin an ninh, trong đó có một tem thời gian, để chứng tỏ được rằng tem này vừa được tạo ra trong vòng vài giây. Và nếu kết quả kiểm tra là tốt đẹp, nó sẽ bảo trợ lý đối ngoại bên kia tiến hành làm việc. 5. Khi trợ lý đối ngoại nhận được sự chấp thuận của trợ lý đối nội bên kia, nó tạo ra một đầu mục trong các bảng quản lý và thông báo cho host di động rằng: Bạn đã đăng ký thành công. Lý tưởng nhất là khi một host di động rời khỏi một cell, nó phải thông báo với trợ lý đối ngoại ở đó để xóa đăng ký. Nhưng đa phần người sử dụng thường tắt máy ngay khi sử dụng xong. Khi một gói tin được gởi đến một host di động, đầu tiên gói tin đó được gởi đến mạng LAN nhà của host đó (bước 1 trong hình H6.18. 155/244
  22. Vạch đường trong mạng di động (H6.18) Bên gởi, ví dụ đang ở Tiền Giang, gởi gói tin đến mạng nhà của host di động ở Cần Thơ. Giả sử host di động đang ở Đồng Tháp. Trợ lý đối nội ở Cần Thơ tìm ra được địa chỉ tạm thời của host di động, đóng gói gói tin đó và chuyển cho trợ lý đối ngoại của mạng ở Đồng Tháp (bước 2). Đến phiên trợ lý đối ngoại ở Đồng Tháp mở gói gói tin đó và phát cho host di động thông tin dưới dạng khung thông tin ở mức liên kết dữ liệu. Sau đó trợ lý đối ngoại ở Đồng Tháp sẽ bảo bên gởi ở Tiền Giang hãy đóng gói và gởi gói tin trực tiếp đến Đồng Tháp (bước 3). Từ đó trở về sau, nhưng gói tin mà bên gởi muốn gởi cho host di động được gởi trực tiếp đến trợ lý đối ngoại tại Đồng Tháp, rồi được trợ lý đối ngoại phát trực tiếp đến host (bước 4). 156/244
  23. Các giải thuật chống tắc nghẽn Các giải thuật chống tắc nghẽn Khi có quá nhiều gói tin hiện diện trong một mạng con (hoặc một phần của nó), hiệu năng hoạt động của hệ thống bị giảm. Tình trạng này được gọi là “tắc nghẽn”. Mô tả tắc nghẽn (H6.19) Hình H6.19 mô tả lại hiện tượng tắc nghẽn. Khi số lượng gói tin chạy trong mạng con nằm dưới ngưỡng cho phép, chúng đều được phân phối đến đích (ngoại trừ những gói tin bị lỗi), và số lượng gói tin được phân phối tỉ lệ thuận với số lượng gói tin được phát ra lúc đầu. Tuy nhiên, khi mật độ giao thông tăng quá cao, các router không còn đáp ứng kịp nữa và chúng dần dần đánh mất một số gói tin. Điều này có xu hướng làm cho vấn đề tắc nghẽn nghiêm trọng thêm. Khi mà giao thông cực cao, hiệu năng hệ thống sụp đổ hoàn toàn và hầu như không gói tin nào được phân phát đến đích. Có vài yếu tố góp phần gây ra tắc nghẽn. Nếu đột nhiên nhiều luồng mang các gói tin đến một nút tại nhiều ngõ vào, và tất cả các gói tin này đều cần một ngõ ra, thì một hàng đợi sẽ xuất hiện. Nếu không đủ bộ nhớ để lưu các gói tin trên hàng đợi này, một số gói tin sẽ bị mất. Tăng thêm bộ nhớ chỉ giúp không mất gói tin trong hàng đợi, nhưng Nagle (1987) đã chỉ ra rằng: nếu một router có bộ nhớ vô hạn, sự tắc nghẽn lại càng tồi tệ hơn! Lý do là khi mà gói tin đến được đầu của hàng đợi thì nó đã bị mãn kỳ (timed out), và do đó sẽ có nhiều phiên bản trùng với gói tin đó được bên gởi gởi đến router, làm tăng thêm tải của mọi hướng đi đến đích của gói tin. 157/244
  24. Các bộ xử lý chậm cũng có thể gây ra tắc nghẽn. Nếu CPU của router xử lý các gói tin trung chuyển qua nó chậm, hàng đợi cũng sẽ phát sinh, cho dù dung lượng các đường nối vào và ra đều vượt yêu cầu. Tóm lại, đường truyền băng thông thấp có thể gây ra tắc nghẽn. Nâng cấp đường truyền nhưng năng lực xử lý của bộ xử lý tại router yếu cũng gây ra tắc nghẽn. Thành thử, nâng cấp một phần mà không phải là toàn bộ hệ thống chỉ đẩy sự tắc nghẽn từ nơi này đến nơi khác mà thôi. Vấn đề phát sinh từ sự bất cân đối giữa các bộ phận của hệ thống, và nó chỉ qua đi khi mà các bộ phận này được giữ cân bằng với nhau. Các nguyên tắc chung để điều khiển tắc nghẽn Nhiều bài toán trong các hệ thống phức tạp, ví dụ như trong mạng máy tính, có thể được xem xét theo quan điểm của lý thuyết điều khiển (control theory). Cách tiếp cận này dẫn đến việc chia các giải pháp thành hai loại: vòng đóng và vòng mở (closed loop and open loop). Các giải pháp dạng vòng đóng cố gắng giải quyết vấn đề tắc nghẽn bằng cách đưa ra thiết kế tốt cho mạng, thực chất là để đảm bảo tắt nghẽn sẽ không xảy ra. Một khi mạng được khởi động và chạy, sẽ không có việc sửa chữa giữa kỳ. Các công cụ thực hiện việc điều khiển kiểu vòng mở bao gồm việc quyết định khi nào nên chấp nhận luồng giao thông mới, quyết định khi nào thì bỏ qua các gói tin và bỏ qua gói nào. Tất cả các công cụ trên đều có đặc điểm chung là chúng đưa ra các quyết định mà không quan tâm đến trạng thái hiện hành của mạng. Ngược lại, các giải pháp kiểu vòng đóng dựa trên quan niệm về chu trình phản hồi thông tin. Cách tiếp cận này bao gồm 3 phần: 1. Giám sát hệ thống để phát hiện nơi nào và khi nào xảy ra tắc nghẽn. 2. Chuyển thông tin đến những nơi cần có những hành động ứng phó. 3. Điều chỉnh lại hoạt động của hệ thống để khắc phục sự cố. Nhiều kiểu đo lường có thể được sử dụng để giám sát một mạng con để phát hiện ra tắc nghẽn ở đó. Các kiểu đo lường thường dùng nhất là tỉ lệ các gói tin bị bỏ qua do thiếu không gian trữ đệm, chiều dài trung bình của các hàng đợi, số lượng các gói tin bị mãn kỳ và được tái truyền, thời gian trì hoãn gói tin trung bình. Trong mọi tình huống, các số đo tăng đồng nghĩa với việc tăng tắc nghẽn. Bước thứ hai trong chu trình phản hồi là chuyển thông tin về tắc nghẽn từ điểm được phát hiện bị tắc nghẽn đến điểm có trách nhiệm xử lý tình huống đó. Cách dễ nhất là để cho router phát hiện ra tắc nghẽn phát thông báo đến nút nguồn vừa gởi thông tin đến làm tắc hệ thống. Dĩ nhiên, thông báo này làm cho tắc nghẽn tăng thêm tạm thời. 158/244
  25. Một cách thông báo tắc nghẽn khác là: Người ta dành riêng một bit hoặc một trường trong gói tin để trong trường hợp có tắc nghẽn, router có thể bật bit hoặc trường này lên và gởi nó đến mọi ngõ ra nhằm thông báo cho các láng giềng của nó biết. Hoặc cũng có thể dùng cách phản hồi sau: Cho các host hoặc router thường xuyên gởi các gói tin thăm dò ra ngoài để hỏi thẳng về tình hình tắc nghẽn. Thông tin này có thể được sử dụng để chuyến hướng vạch đường vòng qua khu vực bị tắc nghẽn. Ví dụ thực tế: Một số đài phát thanh thường phái một số máy bay trực thăng bay vòng quanh thành phố để báo cáo lại những trục đường bị tắc, từ đó thông báo đến thính giả giúp họ chuyển hướng lái xe tránh những điểm nóng. Sự hiện diện của tắc nghẽn đồng nghĩa với việc: tài nguyên của hệ thống không đủ để tải gánh nặng thông tin truyền qua. Vì thế ta nghĩ ra hai giải pháp: tăng tài nguyên hoặc giảm tải. Ví dụ, một mạng con có thể bắt đầu sử dụng các đường điện thoại quay số để tạm thời tăng băng thông giữa một số điểm nào đó. Trong các hệ thống vệ tinh, việc tăng công suất truyền đồng nghĩa với việc cung cấp băng thông lớn hơn. Chia tách lưu lượng thông tin cho chúng chạy trên nhiều đường đi khác nhau cũng có thể giúp tăng băng thông. Cuối cùng, các router dự phòng (thường để dự phòng tình huống các router chính bị sự cố) có thể được mang ra chạy trực tuyến để tăng dung lượng truyền tải của hệ thống khi tắc nghẽn nghiêm trọng xảy ra. Tuy nhiên, đôi khi ta không thể tăng tài nguyên của hệ thống lên nữa, hoặc tài nguyên đã tăng tối đa. Cách thức duy nhất để chống lại tắc nghẽn là giảm tải. Có nhiều cách giảm tải, ví dụ: từ chối phục vụ một số người dùng, giảm cấp dịch vụ đối với vài hoặc tất cả người dùng, và buộc người dùng cung cấp lịch trình phát ra yêu cầu của họ. Các biện pháp phòng ngừa tắc nghẽn Tại tầng mạng, việc chọn sử dụng mạch ảo hay datagram sẽ tác động đến tắc nghẽn do nhiều giải thuật điều khiển tắc nghẽn chỉ chạy trên mạch ảo. Giải pháp “lập hàng đợi cho các gói tin và phục vụ chúng” liên quan đến việc một router có một hàng đợi cho mỗi ngõ vào, một hàng đợi cho mỗi ngõ ra hay cả hai. Nó cũng liên quan đến trình tự xử lý các gói tin trong hàng đợi ( round-robin hay dựa trên sự ưu tiên). Chính sách hủy bỏ gói tin sẽ chỉ ra gói tin nào cần bị hủy bỏ khi không còn không gian chứa. Một chính sách tốt có thể giúp làm giảm tắc nghẽn, ngược lại có thể làm tắc nghẽn trầm trọng thêm. Một giải thuật vạch đường tốt có thể giúp tránh được tắc nghẽn bằng cách trải đều giao thông trên tất cả đường nối, trong khi một giải thuật tồi chỉ đơn giản gởi quá nhiều thông tin lên một đường tải đã quá tải rồi. Cuối cùng, việc quản lý thời gian sống của gói tin sẽ phải đưa ra quyết định là một gói tin có thể sống bao lâu trong hàng đợi trước khi bị hủy bỏ. Thời gian sống quá dài sẽ làm trì trệ công việc rất lâu. Nhưng nếu thời gian sống quá ngắn, các gói tin thỉnh thoảng sẽ bị mãn kỳ (timed-out) trước khi chúng đến được đích, vì thế dẫn đến việc tái truyền. 159/244
  26. Điều khiển tắc nghẽn trong các mạng con dạng mạch ảo Một giải pháp đơn giản là điều khiển cấp phép (admission control). Ý tưởng như sau: một khi có cảnh báo về tắc nghẽn, hệ thống sẽ không thiết lập thêm mạch ảo nào nữa đến khi sự cố qua đi. Vì thế, trong lúc tắc nghẽn xảy ra, những cố gắng thiết lập mạch ảo đều thất bại. Lý do: cho phép nhiều người vào đấy sẽ làm cho vấn đề trở nên trầm trọng hơn. Cách tiếp cận khác là cho phép tạo ra các mạch ảo mới nhưng cẩn trọng vạch đường cho các mạch ảo mới này đi vòng qua khu vực bị vấn đề tắc nghẽn. Ví dụ, xem xét mạng con như trong hình H6.20, trong đó hai router bị tắc nghẽn. (a) Một mạng con bị tắc nghẽn. (b) Mạng con được vẽ lại sau khi loại trừ các điểm gây tắc nghẽn (H6.20) H6.20 (a) Một mạng con bị tắc nghẽn. (b) Mạng con được vẽ lại sau khi loại trừ các điểm gây tắc nghẽn. Giả sử một host được nối với router A muốn thiết lập nối kết tới một host của router B. Thường thì nối kết này sẽ chạy qua một trong hai nút bị tắc nghẽn. Để tránh chuyện này, chúng ta vẽ lại mạng con như trong hình (b), bỏ qua các router bị tắc nghẽn cùng với các đường nối của chúng. Đường chấm chỉ ra một đường đi có thể tránh được tắc nghẽn. Một chiến lược khác liên quan đến mạch ảo là: host và mạng con thỏa thuận với nhau về việc thiết lập mạch ảo. Thỏa thuận này thường bao gồm dung lượng và đường đi của thông tin, chất lượng dịch vụ được yêu cầu và các thông số khác. Để đảm bảo thực hiện được thỏa thuận, mạng con sẽ dành riêng tài nguyên trên suốt con đường mạch ảo đi qua. Các tài nguyên này bao gồm không gian bảng vạch đường và buffer trên các router, cùng với băng thông trên các đường nối. Trong tình huống này, tắc nghẽn hầu như không xảy ra trên một mạch ảo mới bởi vì tất cả tài nguyên cần thiết đã được đảm bảo sẵn dùng. 160/244
  27. Kiểu dành riêng tài nguyên này có thể được thực hiện toàn thời gian như là một phương thức hoạt động chuẩn, hoặc chỉ được thực hiện khi tắc nghẽn xảy ra. Nếu được thực hiện toàn thời gian sẽ có hạn chế là lãng phí tài nguyên. Nếu đường truyền 6 Mbps được tận hiến cho 6 mạch ảo, mỗi mạch ảo tiêu tốn 1 Mbps, thì đường truyền này luôn được đánh dấu là đầy, cho dù hiếm có khi nào 6 mạch ảo con của nó truyền hết công suất tại cùng thời điểm. Điều khiển tắc nghẽn trong mạng con dạng Datagram Trong mạng dạng Datagram, mỗi router có thể dễ dàng kiểm soát hiệu năng của các đường ra và các tài nguyên khác. Ví dụ, nó có thể gán cho mỗi đường nối một biến thực u, với giá trị từ 0.0 đến 1.0, dùng phản ánh hiệu năng gần đây của đường nối đó. Để duy trì độ chính xác tốt cho u, một mẫu hiệu năng tức thời f của đường nối sẽ được lấy thường xuyên, và u sẽ được cập nhật như sau trong đó hằng số a quyết định router quên đi lịch sử gần đây nhanh như thế nào. Khi u vượt qua ngưỡng, đường ra rơi vào trạng thái “cảnh báo”. Mỗi gói tin mới tới sẽ được giữ lại và chờ kiểm tra xem đường ra có ở trạng thái cảnh báo không. Nếu có, một số hành động sẽ được thực hiện, và chúng ta sẽ thảo luận ngay sau đây. Các gói tin chặn (Choke Packets) Khi một gói tin đến router và ngõ ra của nó đang ở trong trạng thái báo động, router sẽ gởi một gói tin chặn ngược về nút nguồn đã gởi gói tin đó. Gói tin gặp tắc nghẽn như đã nói sẽ được đánh dấu để nó không làm phát sinh các gói tin chặn khác nữa. Khi gói tin chặn đến được nút nguồn, nút nguồn sẽ giảm lưu lượng thông tin đến điểm bị nghẽn đi X phần trăm. Do có thể còn vài gói tin đang trên đường đi đến đích bị nghẽn, sau này nút nguồn nên bỏ qua các gói tin chặn phát ra tiếp từ đích đó. Sau giai đoạn trên, nút nguồn bỏ thêm một khoảng thời gian để lắng nghe thêm các gói tin chặn khác. Nếu chúng còn tới, đường nối vẫn bị nghẽn, nút nguồn tiếp tục giảm dung lượng truyền. Nếu không còn gói tin chặn nào chạy ngược về nút nguồn trong thời gian lắng nghe, nó có thể từng bước tăng lưu lượng truyền lên. Gởi các gói chặn từng bước một ( Hop-by-Hop Choke Packets) Ở tốc độ cao hoặc qua khoảng cách xa, việc gởi gói tin chặn ngược về nút nguồn là không hiệu quả, bởi vì phản ứng của nút nguồn sẽ chậm. 161/244
  28. Một cách tiếp cận khác là làm cho gói tin chặn có tác dụng tại mọi nút trung gian mà nó đi qua. Hãy xem hình ví dụ 5.18(b). (a) Một gói tin chặn chỉ tác động lên nút nguồn. (b) Một gói tin chặn tác động lên mọi nút mà nó đi qua (H6.21 ) 162/244
  29. Ở trong hình 5.18(b), ngay khi gói tin chặn vừa đến F, F liền giảm lưu lượng truyền đến D. Tương tự, khi gói tin chặn đến E, E sẽ giảm lưu lượng truyền đến F. Cuối cùng gói tin chặn đến A và lưu lượng được giảm suốt tuyến đường từ A đến D. Hiệu quả của sơ đồ chặn từng bước một là có thể giải phóng điểm bị nghẽn nhanh chóng. Tuy nhiên cái giá phải trả là nó tiêu tốn băng thông hướng lên cho gói tin chặn. Nhưng cái lợi cuối cùng là ở chỗ, giải pháp này bóp chết tắc nghẽn ngay trong trứng nước. 163/244
  30. Liên mạng Liên mạng Đến thời điểm này, chúng ta đều ngầm định rằng chúng ta đang làm việc trên một mạng đơn đồng nhất với mọi máy tính chạy cùng một giao thức trong cùng một tầng. Không may là sự ngầm hiểu này hơi quá lạc quan. Đã và đang tồn tại nhiều loại mạng khác nhau bao gồm LAN, WAN, MAN. Nhiều giao thức khác nhau đang được sử dụng rộng rãi trên nhiều tầng mạng khác nhau. Trong phần này, chúng ta sẽ có cái nhìn cẩn trọng hơn về các vấn đề phát sinh khi hai hoặc nhiều mạng được nối kết với nhau thành một liên mạng (internet). Các mạng máy tính đã đa dạng và sẽ vẫn đa dạng, và có nhiều lý do lý giải cho nhận định này. Trước tiên, cơ sở để cài đặt các mạng là khác nhau. Gần như tất cả các máy PC đều cài đặt TCP/IP. Nhiều công ty lớn sử dụng máy mainframe của IBM sử dụng mạng SNA. Một số lượng lớn các công ty điện thoại đang điều hành các mạng ATM. Một số mạng LAN dùng cho các máy tính PC vẫn còn sử dụng Novell IPX hoặc AppleTalk. Cuối cùng, mạng không dây là một lĩnh vực đang phát triển rộng với nhiều giao thức hoạt động trong đó. Chiều hướng sử dụng mạng phức tạp này sẽ còn tiếp diễn nhiều năm nữa với nhiều lý do về tính kế thừa, kỹ thuật mới, và thực tế là không phải nhà sản xuất nào cũng thích thú với việc giúp cho khách hàng của họ dễ dàng chuyển đổi sang hệ thống của nhà sản xuất khác. Thứ hai, do máy tính và thiết bị mạng ngày càng rẻ, cho nên cấp có thẩm quyền quyết định mua sắm mạng máy tính ngày càng xuống thấp trong cơ cấu các công ty, tổ chức. Nhiều công ty đưa ra chính sách: dự trù mua sắm trên 1 triệu USD do cấp quản lý cao nhất quyết định, mua sắm trên 100.000 USD do cấp trung quyết định, dưới 100.000 USD thì cấp trưởng bộ phận có toàn quyền quyết định. Vì thế, ví dụ, bộ phận kỹ thuật thì có thể cài đặt các máy trạm Unix chạy TCP/IP, còn bộ phận tiếp thị có quyền cài các máy Mac với giao thức AppleTalk. Thứ ba, các mạng khác khau sử dụng các công nghệ hoàn toàn khác nhau. Vì thế sẽ không mấy ngạc nhiên nếu thấy một sản phẩm phần cứng mới thì cũng xuất hiện phần mềm mới đi kèm. Ví dụ, một gia đình trung bình hiện nay trang bị mạng giống như một văn phòng trung bình ngày xưa: đầy các máy tính không thể nói chuyện với nhau. Nhưng ở tương lai không xa, đấy sẽ là nơi có đầy đủ điện thoại, TV, máy tính và các dụng cụ khác, tất cả được nối kết với nhau và có thể được điều khiển từ xa. Kỹ thuật mới này chắc chắn sẽ sinh ra một kiểu mạng mới với các giao thức mới. 164/244
  31. Một liên mạng (H6.22) Để lấy ví dụ về cách thức các mạng khác nhau được nối kết với nhau như thế nào, hãy xem xét hình H6.22. Ở đây, ta có một mạng tổ hợp với nhiều địa bàn khác nhau, được kết dính với nhau bởi một mạng WAN/ATM. Tại một địa bàn, một back-bone FDDI được dùng để nối kết một mạng Ethernet, một mạng không dây 802.11 và một trung tâm dữ liệu dùng mạng SNA. Mục tiêu của nối kết liên mạng là cho phép người dùng trên một mạng con có thể liên lạc được với người dùng trên các mạng con khác. Để làm được việc này, ta phải đảm bảo gởi cho được gói tin từ mạng con này đến bất kỳ mạng con khác. Do các mạng con khác nhau về nhiều lĩnh vực, cho nên không dễ để truyền một gói tin từ nơi này đến nơi kia. Các mạng con được nối kết với nhau ra sao? Các mạng có thể được nối liên thông bằng nhiều kiểu thiết bị khác nhau: • Ở tầng vật lý: Các mạng có thể được nối kết bằng các repeater hoặc hub, những thiết bị chỉ đơn thuần làm nhiệm vụ di chuyển các bit từ mạng này sang mạng kia. • Ở tầng LKDL: Người ta dùng các cầu nối (bridges) hoặc switches. Chúng có thể nhận các khung, phân tích địa chỉ MAC và cuối cùng chuyển khung sang mạng khác trong khi song song đó, chúng vừa làm nhiệm vụ giám sát quá trình chuyển đổi giao thức, ví dụ như từ Ethernet sang FDDI hoặc 802.11. • Ở tầng mạng: Người ta dùng các router để nối kết các mạng với nhau. Nếu hai mạng có tầng mạng khác nhau, router có thể chuyển đổi khuôn dạng gói tin, quản lý nhiều giao thức khác nhau trên các mạng khác nhau. 165/244
  32. • Ở tầng vận chuyển: Người ta dùng các gateway vận chuyển, thiết bị có thể làm giao diện giữa hai đầu nối kết mức vận chuyển. Ví dụ gateway có thể làm giao diện trao đổi giữa hai nối kết TCP và NSA. • Ở tầng ứng dụng: Các gateway ứng dụng sẽ làm nhiệm vụ chuyển đổi ngữ cảnh của các thông điệp. Ví dụ như gateway giữa hệ thống email Internet và X.400 sẽ làm nhiệm vụ chuyển đổi nhiều trường trong header của email. Trong chương này, chúng ta chỉ quan tâm đến việc nối kết liên mạng ở tầng mạng dùng các router. Phương thức hoạt động của router được chỉ ra trong hình H5.23. Hai mạng Ethernet được nối kết bằng các routers (H6.23) Ở đây, hai router được nối với nhau bằng đường nối điểm-điểm, có thể là đường leased- line dài hàng trăm km. Máy S muốn gởi cho máy D một gói tin, do đó nó đóng gói gói tin này thành một khung và gởi lên đường truyền. Khung đến được router của LAN1, router này liền bóc vỏ khung, lấy gói tin ra. Gói tin này sẽ được phân tích để tìm ra địa chỉ mạng (IP) của máy đích, địa chỉ này sẽ được tham khảo trong bảng vạch đường của router LAN1. Dựa trên địa chỉ này, router LAN1 quyết định chuyển gói sang router LAN2 bằng cách đóng thành khung gởi cho router LAN2. Nối kết các mạng con dạng mạch ảo Có hai kiểu liên mạng: dạng mạch ảo và datagram. Trong quá khứ, hầu hết các mạng công cộng là hướng nối kết (các mạng Frame Relay, SNA, ATM cũng vậy). Rồi với sự chấp nhận rộng rãi của công chúng đối với mạng Internet, mạng dạng datagram lên ngôi. Tuy nhiên sẽ là không chính xác khi nói mạng datagram là mãi mãi. Với sự phát triển quan trọng của các mạng đa phương tiện, có vẻ như liên lạc hướng nối kết đang trở lại ở dạng này hay dạng khác, do dễ đảm bảo chất lượng dịch vụ hơn. Vì thế cũng nên dành một chút thời gian để nói về mạng dạng mạch ảo. Trong liên mạng dạng mạch ảo như trong hình H6.24, một nối kết tới một host ở mạng xa được thực hiện giống như truyền thống. Mạng con thấy rằng đích đến ở xa và nó sẽ phác thảo một mạch ảo đến router gần mạng đích nhất. Rồi nó tạo một mạch ảo từ router đấy đến một gateway của nó (thực chất là router đa giao thức). Gateway này ghi lại thông tin về mạch ảo này trong bảng vạch đường và tiếp tục xây dựng một mạch ảo khác từ nó đến mạng con kế tiếp. Quá trình này cứ tiếp diễn cho đến khi mạch ảo đến được host đích. 166/244
  33. Liên mạng dạng mạch ảo (H6.24) Mỗi khi có một gói tin trung chuyển qua, một gateway lưu gói tin này lại, chuyển đổi khuôn dạng gói tin này và số hiệu mạch ảo khi cần thiết, rồi chuyển nó qua gateway tiếp theo trên con đường mà mạch ảo chỉ ra. Đặc điểm quan trọng của cách làm này là: một dãy các mạch ảo được thiết lập từ host nguồn, qua một hoặc nhiều gateway rồi mới đến đích. Mỗi gateway duy trì các bảng lưu lại những mạch ảo nào đi qua nó, chúng sẽ được vạch đường ra đâu và số mạch ảo mới là gì. Nối kết các mạng con dạng datagram Mô hình liên mạng dạng datagram được chỉ ra trong hình H6.25. Liên mạng dạng datagram (H6.25) Trong mô hình này, dịch vụ duy nhất mà tầng mạng cung cấp cho tầng vận chuyển là khả năng đẩy gói tin vào mạng con và hy vọng nó đến đích. Mô hình này không đòi hỏi mọi gói tin phải đi đến đích trên cùng một con đường. Trong hình trên, các gói tin đi 167/244
  34. từ host 1 đến host 2 theo nhiều đường khác nhau. Quyết định vạch đường được đưa ra riêng lẻ cho từng gói tin, tùy thuộc vào lưu lượng thông tin tại thời điểm gói tin được gởi. Chiến lược này cho phép lựa chọn nhiều đường đi cho các gói tin và như vậy sẽ giúp đạt được nhiều băng thông hơn dạng mạch ảo. Mặt trái của nó là: không có sự đảm bảo gói tin có thể đến đích được. Mô hình như trong hình H6.25 thật ra không đơn giản như ta thấy. Thứ nhất, nếu mỗi mạng con có một tầng mạng riêng thì một gói tin từ một mạng không thể trung chuyển qua mạng khác được. Người ta có thể nghĩ là sẽ có các router đa giao thức làm nhiệm vụ chuyển đổi khuôn dạng gói tin từ dạng này sang dạng kia. Nhưng trừ khi dạng thức của hai gói tin có mối liên hệ gần với nhau và có cùng trường thông tin, không thì việc chuyển đổi khuôn dạng thường kết thúc thất bại. Với lý do này, giải pháp chuyển đổi khuôn dạng thường ít khi được chọn. Thứ hai, nghiêm trọng hơn, là vấn đề về cơ chế định địa chỉ. Thử tưởng tượng một trường hợp đơn giản: một host trên Internet đang cố gởi một gói tin IP đến một host trong một mạng SNA láng giềng. Địa chỉ IP và SNA là khác nhau. Người ta sẽ cần một cơ chế ánh xạ địa chỉ giữa IP và SNA theo hai chiều. Thêm nữa, quan niệm như thế nào là địa chỉ trong hai mạng trên là hoàn toàn khác nhau. Trong IP, một host (thực ra là một card mạng) có một địa chỉ. Trong SNA, các thực thể khác host (ví dụ thiết bị phần cứng) cũng có thể có địa chỉ. Trong trường hợp tốt nhất, người ta có thể duy trì một cơ sở dữ liệu để ánh xạ mọi thứ này sang mọi thứ kia và ngược lại, và cơ sở dữ liệu này có thể mở rộng được, nhưng nó lại thường là ngọn nguồn của lắm rắc rối. Một giải pháp khác là xây dựng gói tin internet có hiệu lực toàn cầu, và tất cả các router đều có thể hiểu được nó. Gói tin IP chính là sản phẩm của ý tưởng này. Tuy rằng việc kêu gọi mọi người chấp nhận một khuôn dạng duy nhất là khó do nhiều công ty có tham vọng xây dựng khuôn dạng độc quyền của mình, gói tin IP tự nó vẫn phát triển rộng rãi và được coi là chuẩn toàn cầu. Vạch đường trong liên mạng Vạch đường trong liên mạng cũng tương tự như trong mạng con đơn, nhưng thêm vào một chút phức tạp. Xét một liên mạng được cho trong hình 5.23 168/244
  35. (a) Một liên mạng. (b) Đồ thị biểu diễn liên mạng (H6.26) Có sáu mạng con được nối kết với nhau bởi sáu router. Tạo ra mô hình đồ thị trong tình huống này là phức tạp do mỗi router đều có thể truy cập trực tiếp (gởi gói tin) đến router khác. Ví dụ, B trong hình 6.2H6(a) có thể nối kết trực tiếp tới A qua mạng 2, C qua mạng 2, và D qua mạng 3. Điều đó dẫn đến đồ thị như trong hình H6.26(b). Một khi đồ thị đã được dựng lên, các giải thuật vạch đường đã biết, như Distance- Vector hoặc Link-State, có thể được áp dụng bởi các router đa giao thức. Như vậy sẽ dẫn đến giải thuật vạch đường hai mức: trong nội bộ một mạng con – vạch đường nội hạt (interior gateway protocol) và giữa các mạng con với nhau – vạch đường liên mạng (exterior gateway protocol). Thực tế, do các mạng con là độc lập với nhau, chúng có thể sử dụng các giải thuật khác nhau. Mỗi mạng con được gọi là một hệ thống tự trị (Autonomous System – AS). Một gói tin liên mạng khởi đầu bằng địa chỉ LAN cục bộ của nó, được phát tới router đa giao thức nội bộ, tại đó, mã lệnh ở lớp mạng sẽ quyết định chuyển gói tin đó qua router nào kế tiếp. Nếu router đó có thể đối thoại được bằng giao thức của mạng nội bộ, thì gói tin sẽ được chuyển trực tiếp. Ngược lại, gói tin sẽ được đóng khung bằng giao thức của router đó trước khi chuyển tiếp. Tiến trình này cứ tiếp diễn cho đến khi gói tin đến được đích. Một trong những điểm khác nhau giữa vạch đường liên mạng và vạch đường nội hạt là vạch đường liên mạng đòi hỏi việc đi qua nhiều lãnh địa quốc tế. Nhiều luật khác nhau được đặt ra. Chẳng hạn luật của Canada nói rằng: dữ liệu từ Canada gởi đến một nơi của Canada thì không được quá cảnh ra bên ngoài. Nghĩa là lưu thông từ Windsor, Ontario đến Vancouver không được quá cảnh sang Detroit của Mỹ, trong khi con đường ngang qua Detroit là con đường ngắn nhất và rẻ nhất. Điểm khác nhau nữa giữa vạch đường nội hạt và liên mạng là chi phí. Trong cùng một mạng, một giải thuật tính cước phí duy nhất được áp dụng. Tuy nhiên, nhiều mạng khác nhau sẽ có cơ chế quản lý cước phí khác nhau. 169/244
  36. Phân mảnh và tái hợp Mỗi mạng sẽ qui định kích cỡ tối đa của các datagram chạy trong nó. Sự giới hạn này xuất phát từ nhiều lý do: • Phần cứng: ví dụ như kích cỡ giới hạn của khung Ethernet. • Hệ điều hành: ví dụ như tất cả các buffer đều có kích thước 512 bytes. • Giao thức: số lượng các bits trong trường chỉ chiều dài của gói tin. • Tương thích với một chuẩn quốc gia hay quốc tế nào đó. • Mong muốn giảm thiểu tác động của việc truyền lại do lỗi gây ra. • Mong muốn ngăn chặn một gói tin chiếm đường truyền quá lâu. Và kết quả là các nhân viên thiết kế mạng không được tự do chọn kích thước gói tin tối đa như ý thích của họ. Kích thước dữ liệu tối đa của gói tin thay đổi từ 45 bytes (ATM cell) đến 65515 (gói tin IP). Vấn đề xuất hiện rõ ràng khi môt gói tin lớn muốn đi ngang một mạng con có kích thước gói tin tối đa quá nhỏ. Một giải pháp là làm cho vấn đề này không xảy ra. Nói cách khác, liên mạng nên sử dụng một giải thuật vạch đường có thể tránh được việc gởi gói tin qua các mạng không có khả năng tiếp nhận. Tuy nhiên giải pháp này thực ra không giải quyết được vấn đề. Nếu mạng đích không đủ khả năng tiếp nhận gói tin thì sao? Giải pháp duy nhất là cho phép các gateway chia nhỏ gói tin thành nhiều mảnh (fragment), gởi các mảnh này đi như là một gói tin độc lập. Tuy nhiên việc tái hợp các mảnh con này lại là việc khó. (a) Sự phân mảnh trong suốt. (b) Sự phân mảnh không trong suốt (H6.27) Có hai chiến lược tái hợp các mảnh lại thành gói tin gốc: trong suốt và không trong suốt. 170/244
  37. Trong chiến lược phân mảnh trong suốt, khi một gói tin lớn đi qua một mạng con và mạng con này quyết định phải phân mảnh gói tin, một gateway của mạng con này sẽ làm nhiệm vụ phân mảnh gói tin lớn đó. Khi các mảnh đi hết qua mạng con, phải có một gateway khác đứng ra tập hợp lại chúng, tái tạo lại gói tin ban đầu và chuyển tiếp đến mạng con kế tiếp. Ví dụ trong hình H6.27, ở ngõ vào Mạng 1, gói tin lớn được phân mảnh bởi gateway G1, sau khi các mảnh đi qua hết Mạng 1, gateway G2 sẽ tập hợp chúng lại và tái tạo thành gói tin ban đầu. Chiến lược phân mảnh trong suốt rất trực quan, tuy nhiên có nhiều vấn đề phải bàn. Thứ nhất, gateway ở đầu ra phải biết khi nào nó đã thu lượm lại hết các phân mảnh. Thứ hai, làm sao để mọi phân mảnh phải đi ra cùng một gateway. Thứ ba, chi phí bỏ ra để phân mảnh và tái hợp gói tin lớn khi nó đi qua hàng loạt các mạng con. Với chiến lược phân mảnh không trong suốt, các mạng con trung gian có thể phân mảnh gói tin lớn, nhưng không có nhiệm vụ tái hợp lại nó. Việc tái hợp chỉ được thực hiện tại đích đến của gói tin này. Chiến lượt phân mảnh không trong suốt đòi hỏi mọi host trên mạng đều có khả năng tái hợp thông tin. Ngoài ra nó còn làm phát sinh chi phí cho các header của các mảnh con. Tuy nhiên cái lợi đạt được là: do chiến lược này có quyền chọn lựa nhiều gateway ở đầu ra của mạng con, cho nên hiệu suất vạch đường và truyền gói tin tăng lên nhiều lần. Từ đây, phát sinh nhu cầu về một cách thức đánh số các mảnh sao cho quá trình tái hợp được dễ dàng. Một cách đánh số thông dụng nhất là cách đánh số của internet. Ví dụ một gói tin có 10 bytes, số thứ tự của gói tin là 27 sẽ được biểu diễn như sau: (a) Hình dạng gói tin ban dầu (H6.28) Offset của mảnh là 0 vì đây chính là mảnh đầu tiên hay duy nhất trong gói tin. Bit kết thúc khung là 1 nghĩa là đã hết gói tin, là 0 nghĩa là còn mảnh nằm sau. Bây giờ gói tin này đi qua một mạng con có giới hạn kích thước gói tin tối đa là 8 bytes, nó sẽ bị phân làm hai mảnh: 171/244
  38. Gói bị chia thành hai mảnh 8 bytes và 2 bytes (H6.28(b)) Mảnh đầu tiên có offset trong gói tin là 0, bit kết thúc là 0 (còn mảnh thứ hai). Mảnh thứ hai có offset trong gói tin là 8 (nó bắt đầu ở vị trí thứ 8), và là mảnh cuối cùng. Nếu hai mảnh trên lại đi ngang qua gateway có giới hạn gói tin là 5 bytes, thì chúng sẽ bị phân mảnh như sau: Gói tin bị phân làm 3 mảnh (H6.28(c)) 172/244
  39. Bộ giao thức liên mạng (IPs - Internet Protocols) Bộ giao thức liên mạng (IPs - Internet Protocols) Giới thiệu Các giao thức liên mạng là bộ giao thức cho các hệ thống mở nổi tiếng nhất trên thế giới bởi vì chúng có thể được sử dụng để giao tiếp qua bất kỳ các liên mạng nào cũng như thích hợp cho các giao tiếp trong mạng LAN và mạng WAN. Các giao thức liên mạng bao gồm một bộ các giao thức truyền thông, trong đó nổi tiếng nhất là Giao thức điều khiển truyền tải (TCP - Transmission Control Protocol) và Giao thức liên mạng (IP – Internet Protocol) hoạt động ở tầng 4 và tầng 3 trên mô hình OSI. Ngoài hai giao thức này, bộ giao thức IP còn đặc tả nhiều giao thức cho tầng ứng dụng, ví dụ như giao thức cho dịch vụ thư điện tử, giao thức mô phỏng thiết bị đầu cuối và giao thức truyền tải tập tin. Bộ giao thức liên mạng lần đầu tiên được phát triển vào giữa những năm của thập niên 70 khi Văn phòng các dự án nghiên cứu chuyên sâu của bộ quốc phòng Mỹ (DARPA- Defense Advanced Research Projects Agency ) quan tâm đến việc xây dựng một mạng chuyển mạch gói (packet-switched network) cho phép việc trao đổi thông tin giữa các hệ thống máy tính khác nhau của các viện nghiên cứu trở nên dễ dàng hơn. Với ý tưởng nối các hệ thống máy tính không đồng nhất lại với nhau, DARPA đã cấp kinh phí nghiên cứu cho đại học Stanford, Bolt, Beranek, and Newman (BBN) về vấn đề này. Kết quả của những nổ lực phát triển của dự án này là bộ giao thức Liên mạng đã được hoàn thành vào những năm cuối của thập niên bảy mươi. Sau đó TCP/IP được tích hợp vào hệ điều hành UNIX phiên bản BSD (Berkeley Software Distribution) trở thành nền tảng cho mạng Internet và dịch vụ WWW (World Wide Web). 173/244
  40. Kiến trúc của mạng TCP/IP so với mô hình OSI (H6.29) Giao thức liên mạng IP (Internet Protocol) Giao thức liên mạng, thường gọi là giao thức IP (Internet Protocol) là một giao thức mạng hoạt động ở tầng 3 của mô hình OSI, nó qui định cách thức định địa chỉ các máy tính và cách thức chuyển tải các gói tin qua một liên mạng. IP được đặc tả trong bảng báo cáo kỹ thuật có tên RFC (Request For Comments) mã số 791 và là giao thức chủ yếu trong Bộ giao thức liên mạng. Cùng với giao thức TCP, IP trở thành trái tim của bộ giao thức Internet. IP có hai chức năng chính : cung cấp dịch vụ truyền tải dạng không nối kết để chuyển tải các gói tin qua một liên mạng ; và phân mãnh cũng như tập hợp lại các gói tin để hỗ trợ cho tầng liên kết dữ liệu với kích thước đơn vị truyền dữ liệu là khác nhau. Định dạng gói tin IP (IP Packet Format) Hình sau mô tả cấu trúc của một gói tin IP 174/244
  41. Cấu trúc gói tin IP (H6.30) Ý nghĩa của các trường được mô tả như sau: • Version (Phiên bản): Xác định phiên bản của giao thức đang được sử dụng. • IP Header Length (Chiều dài của phần tiêu đề : Xác định chiều dài của phần tiêu đề của gói tin, tính bằng đơn vị là từ - 32 bits (32-bit word). • Type-of-Service (Kiểu của dịch vụ : Đặc tả mức độ quan trọng mà giao thức phía trên muốn xử lý gói tin. • Total Length (Tổng chiều dài gói tin): Đặc tả chiều dài, tính bằng byte, của cả gói tin IP, bao gồm cả phần dữ liệu và tiêu đề. • Identification ( Số nhận dạng ): Số nguyên nhận dạng gói tin dữ liệu hiện hành. Trường này được sử dụng để ráp lại các phân đoạn của gói tin. • Flags (Cờ hiệu): Gồm 3 bít, bit có trọng số nhỏ để xác định gói tin có bị phân đọan hay không. Bit thứ 2 xác định có phải đây là phân đoạn cuối cùng của gói tin hay không. Bit có trọng số lớn nhất chưa sử dụng. • Fragment Offset (Vị trí của phân đọan): Biểu thị vị trí của phân đoạn dữ liệu so với vị trí bắt đầu của gói dữ liệu gốc, nó cho phép máy nhận xây dựng lại gói tin ban đầu. • Time-to-Live (Thời gian sống của gói tin): Lưu giữ bộ đếm thời gian, giá trị sẽ được giảm dần đến khi nó có giá trị là 0 thì gói tin sẽ bị xóa. Điều này giúp ngăn ngừa tình trạng gói tin được truyền đi lòng vòng không bao giờ đến được đích. • Protocol(Giao thức): Biểu hiện giao thức ở tầng trên sẽ nhận gói tin khi nó đã được giao thức IP xử lý. • Header Checksum (Tổng kiểm tra lỗi tiêu đề): kiểm tra tính toàn vẹn của phần tiêu đề. • Source Addres : Địa của máy gởi gói tin. • Destination Address: Địa chỉ của máy nhận gói tin. 175/244
  42. • Options: Tùy chọn cho phép để hỗ trợ một số vấn đề, chẳng hạn vấn đề bảo mật. • Data: Chứa dữ liệu của tầng trên gởi xuống cần truyền đi. Cấu trúc địa chỉ IP Mỗi máy tính trên mạng TCP/IP phải được gán một địa chỉ luận lý có chiều dài 32 bits, gọi là địa chỉ IP. Cấu trúc địa chỉ IP (H6.31) 32 bits của địa chỉ IP được chia thành 2 phần : Phần nhận dạng mạng (network id) và phần nhận dạng máy tính (Host id). Phần nhận dạng mạng được dùng để nhận dạng một mạng và phải được gán bởi Trung tâm thông tin mạng Internet (InterNIC - Internet Network Information Center) nếu muốn nối kết vào mạng Internet. Phần nhận dạng máy tính dùng để nhận dạng một máy tính trong một mạng. Phân lớp địa chỉ IP (H6.32) Để dễ dàng cho việc đọc và hiểu bởi con người, 32 bits của địa chỉ IP được nhóm lại thành 4 bytes và được phân cách nhau bởi 3 dấu chấm (.). Giá trị của mỗi bytes được viết lại dưới dạng thập phân, với giá trị hợp lệ nằm trong khoản từ 0 đến 255. 176/244
  43. Câu hỏi được đặt ra là bao nhiêu bits dành cho phần nhận dạng mạng và bao nhiêu bits dành cho phần nhận dạng máy tính. Người ta phân các địa chỉ ra thành 5 lớp : A, B, C, D và E. Trong đó, chỉ có lớp A, B và C được dùng cho các mục đích thương mại. Các bits có trọng số cao nhất chỉ định lớp mạng của địa chỉ. Hình sau mô tả cách phân chia lớp cho các địa chỉ IP. Thông tin chi tiết về các lớp được mô tả như bảng sau : Một số địa chỉ IP đặc biệt • Địa chỉ mạng (Network Address): là địa chỉ IP mà giá trị của tất cả các bits ở phần nhận dạng máy tính đều là 0, được sử dụng để xác định một mạng. 177/244
  44. • ◦ Ví dụ : 10.0.0.0; 172.18.0.0 ; 192.1.1.0 • Địa chỉ quảng bá (Broadcast Address) : Là địa chỉ IP mà giá trị của tất cả các bits ở phần nhận dạng máy tính đều là 1, được sử dụng để chỉ tất cả các máy tính trong mạng. ◦ Ví dụ : 10.255.255.255, 172.18.255.255, 192.1.1.255 • Mặt nạ mạng chuẩn (Netmask) : Là địa chỉ IP mà giá trị của các bits ở phần nhận dạng mạng đều là 1, các bits ở phần nhận dạng máy tính đều là 0. Như vậy ta có 3 mặt nạ mạng tương ứng cho 3 lớp mạng A, B và C là : ◦ Mặt nạ mạng lớp A : 255.0.0.0 ◦ Mặt nạ mạng lớp B : 255.255.0.0 ◦ Mặt nạ mạng lớp C : 255.255.255.0 Ta gọi chúng là các mặt nạ mạng mặc định (Default Netmask) Lưu ý : Địa chỉ mạng, địa chỉ quảng bá, mặt nạ mạng không được dùng để đặt địa chỉ cho các máy tính • Địa chỉ mạng 127.0.0.0 là địa chỉ được dành riêng để đặt trong phạm vi một máy tính. Nó chỉ có giá trị cục bộ ( trong phạm vi một máy tính). Thông thường khi cài đặt giao thức IP thì máy tính sẽ được gián địa chỉ 127.0.0.1. Địa chỉ này thông thường để kiểm tra xem giao thức IP trên máy hiện tại có hoạt động không. • Địa chỉ dành riêng cho mạng cục bộ không nối kết trực tiếp Internet : Các mạng cục bộ không nối kết trực tiếp vào mạng Internet có thể sử dụng các địa chỉ mạng sau để đánh địa chỉ cho các máy tính trong mạng của mình : • Lớp A : 10.0.0.0 • Lớp B : 172.16.0.0 đến 172.32.0.0 • Lớp C : 192.168.0.0 Ý nghĩa của Netmask Với một địa chỉ IP và một Netmask cho trước, ta có thể dùng phép toán AND BIT để tính ra được địa chỉ mạng mà địa chỉ IP này thuộc về. Công thức như sau : Network Address = IP Address & Netmask Ví dụ : Cho địa chỉ IP = 198.53.147.45 và Netmask = 255.255.255.0. Ta thực hiện phép toán AND BIT (&) hai địa chỉ trên: Biểu diễn thập phân Biểu diễn nhị phân IP Address 198.53.147.45 11000110 00110101 10010011 00101101 Netmask 255.255.255.0 11111111 11111111 11111111 00000000 178/244
  45. Network Address 198.53.147.0 11000110 00110101 10010011 00000000 Phân mạng con (Subnetting) Giới thiệu Phân mạng con là một kỹ thuật cho phép nhà quản trị mạng chia một mạng thành những mạng con nhỏ, nhờ đó có được các tiện lợi sau : • Đơn giản hóa việc quản trị : Với sự trợ giúp của các router, các mạng có thể được chia ra thành nhiều mạng con (subnet) mà chúng có thể được quản lý như những mạng độc lập và hiệu quả hơn. • Có thể thay đổi cấu trúc bên trong của mạng mà không làm ảnh hướng đến các mạng bên ngoài. Một tổ chức có thể tiếp tục sử dụng các địa chỉ IP đã được cấp mà không cần phải lấy thêm khối địa chỉ mới. • Tăng cường tính bảo mật của hệ thống : Phân mạng con sẽ cho phép một tổ chức phân tách mạng bên trong của họ thành một liên mạng nhưng các mạng bên ngoài vẫn thấy đó là một mạng duy nhất. • Cô lập các luồng giao thông trên mạng : Với sự trợ giúp của các router, giao thông trên mạng có thể được giữ ở mức thấp nhất có thể. Địa chỉ mạng con đối với thế giới bên ngoài (H6.33) Hình trên mô tả một địa chỉ IP đã được phân mạng con xuất hiện với thế giới Internet bên ngoài và với mạng Intranet bên trong. Internet chỉ đọc phần nhận dạng mạng và các router trên Internet chỉ quan tâm tới việc vạch đường cho các gói tin đến được router giao tiếp giữa mạng Intranet bên trong và mạng Internet bên ngoài. Thông thường ta gọi router này là cửa khẩu của mạng (Gateway). Khi một gói tin IP từ mạng bên ngoài đến router cửa khẩu, nó sẽ đọc phần nhận dạng máy tính để xác định xem gói tin này thuộc 179/244
  46. về mạng con nào và sẽ chuyển gói tin đến mạng con đó, nơi mà gói tin sẽ được phân phát đến máy tính nhận. Phương pháp phân mạng con Nguyên tắc chung để thực hiện phân mạng con là : • Phần nhận dạng mạng (Network Id) của địa chỉ mạng ban đầu được giữ nguyên. • Phần nhận dạng máy tính của địa chỉ mạng ban đầu được chia thành 2 phần : Phần nhận dạng mạng con (Subnet Id) và Phần nhận dạng máy tính trong mạng con (Host Id). Cấu trúc địa chỉ IP khi phân mạng con (H6.33) Để phân mạng con, người ta phải xác định mặt nạ mạng con (subnetmask). Mặt nạ mạng con là một địa chỉ IP mà giá trị các bit ở phần nhận dạng mạng (Network Id) và Phần nhận dạng mạng con (Subnet Id) đều là 1 trong khi giá trị của các bits ở Phần nhận dạng máy tính (Host Id) đều là 0. Hình H6.34 mô tả mặt nạ phân mạng con cho một mạng ở lớp C. Mặt nạ mạng con khi phân mạng con (H6.34) Khi có được mặt nạ mạng con, ta có thể xác định địa chỉ mạng con (Subnetwork Address) mà một địa chỉ IP được tính bằng công thức sau : Subnetwork Address = IP & Subnetmask Có hai chuẩn để thực hiện phân mạng con là : Chuẩn phân lớp hoàn toàn (Classfull standard) và chuẩn Vạch đường liên miền không phân lớp CIDR (Classless Inter- Domain Routing ). Thực tế, CIDR chỉ mới được đa số các nhà sản xuất thiết bị và hệ điều hành mạng hỗ trợ nhưng vẫn chưa hoàn toàn chuẩn hóa. Phương pháp phân lớp hoàn toàn (Classfull Standard) 180/244
  47. Chuẩn này qui định địa chỉ IP khi phân mạng con sẽ gồm 3 phần : • Phần nhận dạng mạng của địa chỉ ban đầu (Network Id): • Phần nhận dạng mạng con (Subnet Id) : Được hình thành từ một số bits có trọng số cao trong phần nhận dạng máy tính (Host Id) của địa chỉ ban đầu • Và cuối cùng là phần nhận dạng máy tính trong mạng con (Host Id) bao gồm các bit còn lại. Ví dụ : Hình sau mô tả cấu trúc địa chỉ IP lớp C khi thực hiện phân mạng con Địa chỉ IP phân mạng con theo chuẩn Phân lớp hoàn toàn (H6.35) Số lượng bits thuộc phần nhận dạng mạng con xác định số lượng mạng con. Giả sử phần nhận dạng mạng con chiếm 4 bits. Như vậy, về mặt lý thuyết ta có thể phân ra thành 24=16 mạng con. Tuy nhiên phần nhận dạng mạng con gồm toàn bit 0 hoặc bit 1 không được dùng để đánh địa chỉ cho mạng con vì nó trùng với địa chỉ mạng và địa chỉ quảng bá của mạng ban đầu. Ví dụ : Cho địa chỉ mạng lớp C : 192.168.1.0 với mặt nạ mạng mặc định là 255.255.255.0. Xét trường hợp phân mạng con cho mạng trên sử dụng 2 bits để làm phần nhận dạng mạng con. Mặt nạ mạng trong trường hợp này là 255.255.255.192. Khi đó ta có các địa chỉ mạng con như sau : Biểu diễn dạng thập Biểu diễn dạng nhị Địa chỉ IP phân phân Mạng ban 1010 0000 0000 192.168.1.0 1100 0000 đầu 1000 0001 0000 Mạng con 1010 0000 0000 192.168.1.0 1100 0000 1 1000 0001 0000 181/244
  48. Mạng con 1010 0010 0100 192.168.1.64 1100 0000 2 1000 0001 0000 Mạng con 1010 0000 1000 192.168.1.128 1100 0000 3 1000 0001 0000 Mạng con 1010 0000 1100 192.168.1.192 1100 0000 4 1000 0001 0000 Ta nhận thấy rằng: • Địa chỉ mạng con thứ nhất 192.168.1.0 trùng với địa chỉ mạng ban đầu. • Địa chỉ mạng con thứ tư 192.168.1.192 có địa chỉ quảng bá trùng với địa chỉ quảng bá của mạng ban đầu . Chính vì thế mà hai địa chỉ này ( có phần nhận dạng mạng con toàn bit 0 hoặc toàn bit 1) không được dùng để đánh địa chỉ cho mạng con. Nói tóm lại, với n bits làm phần nhận dạng mạng con ta chỉ có thể phân ra được 2n-2 mạng con mà thôi. Mỗi mạng con cũng có địa chỉ quảng bá. Đó là địa chỉ mà các bits ở phần nhận dạng máy tính đều có giá trị là 1. Ví dụ : Biểu diễn dạng thập Biểu diễn dạng nhị Địa chỉ IP phân phân 1010 0010 0100 Mạng con 1 192.168.1.64 1100 0000 1000 0001 0000 Địa chỉ 1010 0010 01 11 192.168.1.127 1100 0000 quảng bá 1000 0001 1111 1010 0000 1000 Mạng con 2 192.168.1.128 1100 0000 1000 0001 0000 Địa chỉ 1010 0000 10 11 192.168.1.191 1100 0000 quảng bá 1000 0001 1111 Như vậy qui trình phân mạng con có thể được tóm tắt như sau : • Xác định số lượng mạng con cần phân, giả sử là N. • Biểu diễn (N+1) thành số nhị phân. số lượng bit cần thiết để biểu diễn (N+1) chính là số lượng bits cần dành cho phần nhận dạng mạng con. Ví dụ N=6, khi 182/244
  49. đó biểu diễn của (6+1) dưới dạng nhị phân là 111. Như vậy cần dùng 3 bits để làm phần nhận dạng mạng con • Tạo mặt nạ mạng con • Liệt kê tất cả các địa chỉ mạng con có thể, trừ hai địa chỉ mà ở đó phần nhận dạng mạng con toàn các bits 0 và các bit 1. • Chọn ra N địa chỉ mạng con từ danh sách các mạng con đã liệt kê. Phương pháp Vạch đường liên miền không phân lớp CIDR (Classless Inter-Domain Routing ) CIDR là một sơ đồ đánh địa chỉ mới cho mạng Internet hiệu quả hơn nhiều so với sơ đồ đánh địa chỉ cũ theo kiểu phân lớp A, B và C. CIDR ra đời để giải quyết hai vấn đề bức xúc đối với mạng Internet là : • Thiếu địa chỉ IP • Vượt quá khả năng chứa đựng của các bảng chọn đường. Vấn đề thiếu địa chỉ IP Với sơ đồ đánh địa chỉ truyền thống, các địa chỉ được phân ra thành các lớp A, B và C. Mỗi địa chỉ có 2 phần, phần nhận dạng mạng và phần nhận dạng máy tính. Khi đó số lượng mạng và số máy tính tối đa cho từng mạng được thống kê như bảng sau : Lớp mạng Số lượng mạng Số máy tính tối đa trong mạng A 126 16.777.214 B 65.000 65.534 C Hơn 2 triệu 254 Bởi vì các địa chỉ của mạng Internet thường được gán theo kích thước này dẫn đến tình trạng lãng phí. Trường hợp bạn cần 100 địa chỉ, Bạn sẽ được cấp một địa chỉ lớp C. Như vậy còn 154 địa chỉ không được sử dụng. Chính điều này dẫn đến trình trạng thiếu địa chỉ IP cho mạng Internet. Theo thống kê, chỉ có khoảng 3% số địa chỉ đã được cấp phát được sử dụng đến. Chính vì thế sơ đồ đánh địa chỉ mới CIDR ra đời để khắc phục tình trạng trên. Vấn đề vượt quá khả năng chứa đựng của các bảng chọn đường Khi số lượng mạng trên mạng Internet tăng cũng đồng nghĩa với việc tăng số lượng router trên mạng. Trong những năm gần đây, người ta dự đoán rằng các router đường 183/244
  50. trục của mạng Internet đang nhanh chóng tiến đến mức ngưỡng tối đa số lượng router mà nó có thể chấp nhận được. Thậm chí với những công nghệ hiện đại dùng để sản xuất các router thì về mặt lý thuyết kích thước tối đa của một bảng chọn đường cũng chỉ đến 60.000 mục từ (đường đi). Nếu không có những cải tiến thì các router đường trục sẽ đạt đến con số này và như thế không thể mở rộng mạng Internet hơn nữa. Để giải quyết hai vấn đề trên, cộng đồng Internet đã đưa ra các giải pháp sau : • Sửa đổi lại cấu trúc cấp phát địa chỉ IP để tăng hiệu quả • Kết hợp việc chọn đường có cấu trúc để giảm tối đa số lượng các mục từ trong bảng chọn đường. Sửa đổi lại cấu trúc cấp phát địa chỉ IP CIDR được sử dụng để thay thế cho sơ đồ cấp phát cũ với việc qui định các lớp A, B, C. Thay vì phần nhận dạng mạng được giới hạn với 8, 16 hoặc 24 bits, CIDR sử dụng phần nhận dạng mạng có tính tổng quát từ 13 đến 27 bits. Chính vì thế các khối địa chỉ có thể được gán cho mạng nhỏ nhất với 32 máy tính đến mạng lớn nhất hơn 500.000 máy tính. Điều này đáp ứng gần đúng yêu cầu đánh địa chỉ của các tổ chức khác nhau. Địa chỉ CIDR Một địa chỉ theo cấu trúc CIDR, gọi tắt tắt địa chỉ CIDR, bao gồm 32 bits của địa chỉ IP chuẩn cùng với một thông tin bổ sung về số lượng các bit được sử dụng cho phần nhận dạng mạng. Ví dụ : Với địa chỉ CIDR 206.13.01.48/25 thì chuỗi số "/25" chỉ ra rằng 25 bits đầu tiên trong địa chỉ IP được dùng để nhận dạng duy nhất một mạng, số bits còn lại dùng để nhận dạng một máy tính trong mạng. Bảng sau so sánh giữa sơ đồ đánh địa chỉ theo kiểu CIDR và sơ đồ đánh địa chỉ theo chuẩn phân lớp hoàn toàn. 184/244
  51. Kết hợp việc chọn đường có cấu trúc để giảm tối đa số lượng các mục từ trong bảng chọn đường. Sơ đồ đánh địa chỉ theo theo CIDR cũng cho phép kết hợp các đường đi, ở đó mục từ trong bảng chọn đường ở mức cao có thể đại diện cho nhiều router ở mức thấp hơn trong các bảng chọn đường tổng thể. 185/244
  52. Sơ đồ này giống như hệ thống mạng điện thoại ở đó mạng được thiết lập theo kiến trúc phân cấp. Một router ở mức cao (quốc gia), chỉ quan tâm đến mã quốc gia trong số điện thoại, sau đó nó sẽ vạch đường cho cuộc gọi đến router đường trục phụ trách mạng quốc gia tương ứng với mã quốc gia đó. Router nhận được cuộc gọi nhìn vào phần đầu của số điện thoại, mã tỉnh, để vạch đường cho cuộc gọi đến một mạng con tương ứng với mã tỉnh đó, và cứ như thế. Trong sơ đồ này, các router đường trục chỉ lưu giữ thông tin về mã quốc gia cho mỗi mục từ trong bảng chọn đường của mình, mỗi mục từ như thế đại diện cho một số khổng lồ các số điện thoại riêng lẽ chứ không phải là một số điện thoại cụ thể. Thông thường, các khối địa chỉ lớn được cấp cho các nhà cung cấp dịch vụ Internet (IP- Internet Service Providers) lớn, sau đó họ lại cấp lại các phần trong khối địa chỉ của họ cho các khách hàng của mình. Hiện tại, mạng Internet sử dụng cả hai sơ đồ cấp phát địa chỉ Classfull standard và CIDR. Hầu hết các router mới đều hỗ trợ CIDR và những nhà quản lý Internet thì khuyến khích người dùng cài đặt sơ đồ đánh địa chỉ CIDR. Tham khảo thêm về CIDR ở địa chỉ với các RFC liên quan sau: • RFC 1517: Applicability Statement for the Implementation of CIDR • RFC 1518: An Architecture for IP Address Allocation with CIDR • RFC 1519: CIDR: An Address Assignment and Aggregation Strategy • RFC 1520: Exchanging Routing Information Across Provider Boundaries in the CIDR Environment Vạch đường trong giao thức IP Cho ba mạng Net1, Net2 và Net3 nối lại với nhau nhờ 3 router R1, R2 và R3. Mạng Net4 nối các router lại với nhau. Công việc đầu tiên trong thiết kế mạng liên mạng IP là chọn địa chỉ mạng cho các nhánh mạng. Trong trường hợp này ta chọn mạng lớp C cho 4 mạng như bảng sau: Mạng Địa chỉ mạng Mặt nạ mạng Net1 192.168.1.0 255.255.255.0 Net2 192.168.2.0 255.255.255.0 Net3 192.168.3.0 255.255.255.0 Net4 192.168.4.0 255.255.255.0 186/244
  53. Kế tiếp, gán địa chỉ cho từng máy tính trong mạng. Ví dụ trong mạng Net1, các máy tính được gán địa chỉ là 192.168.1.2 (Ký hiệu .2 là cách viết tắt của địa chỉ IP để mô tả Phần nhận dạng máy tính) và 192.168.1.3. Mỗi router có hai giao diện tham gia vào hai mạng khác nhau. Ví dụ, giao diện tham gia vào mạng NET1 của router R1 có địa chỉ là 192.168.1.1 và giao diện tham gia vào mạng NET4 có địa chỉ là 192.168.4.1. Ví dụ về liên mạng một liên mạng sử dụng giao thức IP (H6.36) Để máy tính của các mạng có thể giao tiếp được với nhau, cần phải có thông tin về đường đi. Bảng chọn đường của router có thể tạo ra thủ công hoặc tự động. Đối với mạng nhỏ, nhà quản trị mạng sẽ nạp đường đi cho các router thông qua các lệnh được cung cấp bởi hệ điều hành của router. Bảng chọn đường trong giao thức IP có 4 thông tin quan trọng là : • Địa chỉ mạng đích • Mặt nạ mạng đích • Router kế tiếp sẽ nhận gói tin (Next Hop) • Giao diện chuyển gói tin đi Trong ví dụ trên, các router sẽ có bảng chọn đường như sau : 187/244
  54. Các máy tính cũng có bảng chọn đường. Dưới đây là bảng chọn đường của máy tính có địa chỉ 192.168.3.3 : Mạng đích default ý nói rằng ngoài những đường đi đến các mạng đã liệt kê phía trên, các đường đi còn lại thì gởi cho NextHop của mạng default này. Như vậy, để gởi gói tin cho bất kỳ một máy tính nào nằm bên ngoài mạng 192.168.3.0 thì máy tính 192.168.3.3 sẽ chuyển gói tin cho router 3 ở địa chỉ 192.168.3.1. Đường đi của gói tin Để hiểu rõ có chế hoạt động của giao thức IP, ta hãy xét hai trường hợp gởi gói tin : Trường hợp máy tính gởi và nhận nằm trong cùng một mạng và trường hợp máy tính gởi và máy tính nhận nằm trên hai mạng khác nhau. Giả sử máy tính có địa chỉ 192.168.3.3 gởi một gói tin cho máy tính 192.168.3.2. Tầng hai của máy gởi sẽ đặt gói tin vào một khung với địa chỉ nhận là địa chỉ vật lý của máy nhận và gởi khung lên đường truyền NET3, trên đó máy tính nhận sẽ nhận được gói tin. 188/244
  55. Bây giờ ta xét trường hợp máy tính có địa chỉ 192.168.3.3 trên mạng NET3 gởi gói tin cho máy tính có địa chỉ 192.168.1.2 trên mạng Net1. Theo như bảng chọn đường của máy gởi, các gói tin có địa chỉ nằm ngoài mạng 192.168.3.0 sẽ được chuyển đến router R3 (địa chỉ 192.168.3.1). Chính vì thế, máy tính gởi sẽ đặt gói tin vào một khung với địa chỉ nhận là địa chỉ vật lý của giao diện 192.168.3.1 và đưa lên đường truyền NET3. Nhận được gói tin, R3 phân tích địa chỉ IP của máy nhận để xác định đích đến của gói tin . Bảng chọn đường cho thấy, với đích đến là mạng 192.168.1.0 thì cần phải chuyển gói tin cho router R1 ở địa chỉ 192.168.4.1 thông qua giao diện 192.168.4.3. Vì thế R3 đặt gói tin vào một khung với địa chỉ nhận là địa chỉ vật lý của giao diện 192.168.4.1 của router R1 và đưa lên đường truyền NET4. Tương tự, R1 sẽ chuyển gói tin cho máy nhận 192.168.1.2 bằng một khung trên đường truyền NET1. Ta nhận thấy rằng, để đi đến được máy nhận, gói tin được chuyển đi bởi nhiều khung khác nhau. Mỗi khung sẽ có địa chỉ nhận khác nhau, tuy nhiên địa chỉ của gói tin thì luôn luôn không đổi. Giao thức phân giải địa chỉ (Address Resolution Protocol) Nếu một máy tính muốn truyền một gói tin IP nó cần đặt gói tin này vào trong một khung trên đường truyền vật lý mà nó đang nối kết vào. Để có thể truyền thành công khung, máy tính gởi cần thiết phải biết được địa chỉ vật lý (MAC) của máy tính nhận. Điều này có thể thực hiện được bằng cách sử dụng một bảng để ánh xạ các địa chỉ IP về địa chỉ vật lý. Giao thức IP sử dụng giao thức ARP (Address Resolution Protocol) để thực hiện ánh xạ từ một địa chỉ IP về một địa chỉ MAC. Giao thức ARP (H6.37) 189/244
  56. Một máy tính xác định địa chỉ vật lý của nó vào lúc khởi động bằng cách đọc thiết bị phần cứng và xác định địa chỉ IP của nó bằng cách đọc tập tin cấu hình, sau đó lưu thông tin về mối tương ứng giữa địa chị IP và MAC của nó vào trong vùng nhớ tạm (ARP cache). Khi nhận được một địa chỉ IP mà ARP không thể tìm ra được địa chỉ vật lý tương ứng dựa vào vùng nhớ tạm hiện tại, nó sẽ thực hiện một khung quảng bá có định dạng như sau : 190/244
  57. Nhờ vào việc gởi các yêu cầu này, một máy tính có thể bổ sung thông tin cho vùng cache của giao thức ARP, nhờ đó cập nhật kịp thời mọi sự thay đổi của sơ đồ mạng. Thông thường thời gian quá hạn (Time-out) cho một thông tin trong vùng cache là 20 phút. Một yêu cầu ARP cho một máy tính không tồn tại trên nhánh mạng được lặp lại một vài lần xác định nào đó. Nếu một máy tính được nối kết vào nhiều hơn một mạng bằng giao diện mạng, khi đó sẽ tồn tại những vùng cache ARP riêng cho từng giao diện mạng. Lưu ý, ARP trên một máy tính chỉ thực hiện việc xác địa chỉ vật lý cho các địa chỉ cùng địa chỉ mạng / mạng con với nó mà thôi. Đối với các gói tin gởi cho các máy tính có địa chỉ IP không cùng một mạng / mạng con với máy gởi sẽ được chuyển hướng cho một router nằm cùng mạng với máy gởi để chuyển đi tiếp. Vì các yêu cầu ARP được quảng bá rộng rãi, cho nên bất kỳ một máy tính nào đang duy trì một vùng cache đều có thể theo dõi tất cả các yều cầu được quảng bá này để lấy thông tin về địa chỉ vật lý và địa chỉ IP của máy gởi yêu cầu và bổ sung vào vùng cache của nó khi cần thiết. Khi một máy tính khởi động, nó gởi một yêu cầu ARP ( có thể cho chính nó) như để thông báo với các máy tính khác về sự xuất hiện của nó trong mạng cục bộ. Có thể gán nhiều hơn một địa chỉ IP cho một địa chỉ vật lý. Chú ý rằng, định dạng của yêu cầu ARP thì được thiết kế để có thể hỗ trợ được cho các giao thức khác ngoài IP và Ethernet. Giao thức phân giải địa chỉ ngược RARP (Reverse Address Resolution Protocol) Ngày nay, các trạm làm việc không đĩa cứng (Diskless workstation) được sử dụng rộng rãi. Mỗi máy tính chỉ cần bộ xử lý và bộ nhớ, tất cả không gian lưu trữ được cung cấp từ một máy chủ (Server) sử dụng một hệ thống tập tin mạng theo một chuẩn nào đó. Do không có các tập tin cấu hình, tiến trình khởi động của các máy tính này thường sử dụng một giao thức truyền tải tập tin rất đơn giản như TFTP. Tuy nhiên, trước khi có thể nối kết đến được server, các trạm làm việc cần phải biết được địa chỉ IP của nó. Giao thức RARP được dùng trong trường hợp này. RARP sử dụng cùng định dạng yêu cầu của ARP nhưng trường Operation có giá trị là 3 cho yêu cầu và 4 cho trả lời. Trên server duy trì một bảng mô tả mối tương quan giữa địa chỉ vật lý và địa chỉ IP của các máy trạm. Khi nhận được yêu cầu RARP, server tìm trong bảng địa chỉ và trả về địa chỉ IP tương ứng cho máy trạm đã gởi yêu cầu. Giao thức thông điệp điều khiển Internet ICMP (Internet Control Message Protocol) Giao thức ICMP được cài đặt trong hầu hết tất cả các máy tính TCP/IP. Các thông điệp của giao thức được gởi đi trong các gói tin IP và được dùng để gởi đi các báo lỗi hay các thông tin điều khiển. 191/244
  58. ICMP tạo ra nhiều loại thông điệp hữu ích như : • Đích đến không tới được (Destination Unreachable), • Thăm hỏi và trả lời (Echo Request and Reply), • Chuyển hướng (Redirect), • Vượt quá thời gian (Time Exceeded), • Quảng bá bộ chọn đường (Router Advertisement) • Cô lập bộ chọn đường (Router Solicitation) • Nếu một thông điệp không thể phân phát được thì nó sẽ không được gởi lại. Điều này để tránh tình trạng di chuyển không bao giờ dừng của các thông điệp ICMP. Nếu một thông điệp « Đích đến không tới được » được gởi đi bởi một router, điều đó có nghĩa rằng router không thể gởi gói tin đến đích được. Khi đó router sẽ xóa gói tin ra khỏi hàng đợi của nó. Có hai nguyên nhân làm cho một gói tin không thể đi đến nơi được. Phần lớn là máy gởi mô tả một địa chỉ nhận mà nó không tồn tại trên thực tế. Trường hợp ít hơn là router không biết đường đi đến nơi nhận gói tin. Thông điệp Đích đến không tới được được chia thành bốn loại cơ bản là : • Mạng không đến được (Network unreachable) : Có nghĩa là có sự cố trong vấn đề vạch đường hoặc địa chỉ nhận của gói tin. • Máy tính không đến được (Host unreachable) : Thông thường dùng để chỉ trục trặc trong vấn đề phân phát, như là sai mặt nạ mạng con chẳng hạn. • Giao thức không đến được (Protocol unreachable) : Máy nhận không hỗ trợ giao thức ở tầng cao hơn như gói tin đã mô tả. • Cổng không đến được (Port unreachable) : Socket của giao thức TCP hay cổng không tồn tại. Một thông điệp « Thăm hỏi và trả lời » được tạo ra bởi lệnh ping từ một máy tính để kiểm tra tính liên thông trên liên mạng. Nếu có một thông điệp trả lời, điều đó biểu hiện rằng giữa máy gởi và máy nhận có thể giao tiếp được với nhau. Một thông điệp « Chuyển hướng » được gởi bởi một router đến máy đã gởi gói tin để khuyến cáo về một đường đi tốt hơn. Router hiện tại vẫn chuyển tiếp gói tin mà nó nhận được. Thông điệp chuyển hướng giữ cho bảng chọn đường của các máy tính được nhỏ bởi vì chúng chỉ cần chứa địa chỉ của một router mà thôi, thậm chí router đó cung cấp đường đi không phải là tốt nhất. Đôi khi sau khi nhận được thông điệp chuyển hướng, thiết bị gởi vẫn sử dụng đường đi cũ. Một thông điệp « Vượt quá thời hạn » được gởi bởi một router nếu thời gian sống (Time–to-live) của gói tin, tính bằng số router hay giây, có giá trị là 0. Thời gian sống 192/244
  59. của gói tin giúp phòng ngừa trường hợp gói tin được gởi đi lòng vòng trên mạng và không bao giờ đến nơi nhận. Router sẽ bỏ đi các gói tin đã hết thời gian sống. 193/244
  60. Chương 7: Tầng vận chuyển Dịch vụ của tầng vận chuyển Dịch vụ của tầng vận chuyển Trong khi tầng mạng đảm bảo việc chuyển gói tin từ một host đến một host khác, tầng vận chuyển lại làm trung gian giữa tầng mạng và các ứng dụng mạng – nó chuyển thông tin giữa các tiến trình chạy trên các host khác nhau. Phần sau sẽ thảo luận về các dịch vụ và kiểu dịch vụ mà tầng vận chuyển cung cấp cho tầng ứng dụng. Các dịch vụ cung cấp cho tầng ứng dụng Mục tiêu quan trọng của tầng vận chuyển là cung cấp dịch vụ vận chuyển gói tin hiệu quả, tin cậy và tiết kiệm chi phi cho người dùng của nó, ở đây là các tiến trình chạy ở tầng ứng dụng. Phần cứng/mềm nằm trong lớp vận chuyển và hoạt động ở đó được gọi là thực thể vận chuyển. Thực thể vận chuyển có thể nằm ở nhân của hệ điều hành, trong một tiến trình người dùng riêng biệt, trong một gói thư viện liên quan đến các ứng dụng mạng, hoặc thậm chí được gói gọn trong card mạng. Mối quan hệ logic giữa tầng mạng, tầng vận chuyển và tầng ứng dụng được thể hiện trong hình sau H7.1. Các tầng mạng, vận chuyển và ứng dụng (H7.1) 194/244
  61. Có hai kiểu dịch vụ vận chuyển: có nối kết và không nối kết. Và tầng vận chuyển cũng phải cung cấp các tham số để người dùng chỉ định loại dịch vụ họ mong muốn. Loại dịch vụ vận chuyển có nối kết hoạt động giống như dịch vụ có nối kết của tầng mạng. Nghĩa là nó có 3 kỳ: thiết lập nối kết, truyền dữ liệu và hủy nối kết. Loại dịch vụ không nối kết cũng giống như ở tầng mạng, chỉ đơn giản đẩy gói tin ra mạng và hy vọng nó đến đích. Từ đây phát sinh câu hỏi: Hai tầng vận chuyển và mạng hoạt động giống nhau, sao không nhập lại làm một? Câu trả lời rất dễ gây tranh cãi: Mã lệnh vận chuyển nằm hoàn toàn trong máy tính của người dùng, nhưng lớp mạng hầu hết chạy trên các router. Nếu nhập cả hai vào một lớp mạng, giả sử lớp mạng cung cấp dịch vụ không thỏa đáng thì sao? Nếu lớp mạng thường xuyên làm mất gói tin thì sao? Nếu các router bị chết thường xuyên thì sao? Vấn đề phát sinh ở chỗ, người dùng không có quyền điều khiển thực sự lên lớp mạng, do đó họ không thể giải quyết vấn đề dịch vụ không tốt bằng cách chọn các đường đi khác, hay áp đặt thêm nhiều giải pháp điều khiển lỗi lên lớp liên kết dữ liệu. Khả năng duy nhất có thể được là đặt trên lớp mạng một lớp khác làm nhiệm vụ cải thiện chất lượng dịch vụ. Nếu, trong một mạng con dạng hướng nối kết, một thực thể vận chuyển được thông báo giữa lúc truyền dữ liệu rằng kết nối mạng đã bị gãy, nó có thể thiết lập một kết nối mạng khác đến bên đối thoại bên kia, rồi gởi đi câu hỏi rằng dữ liệu nào đã đến, cái nào chưa và cuối cùng khởi động lại từ điểm bị bỏ dở dang. Dữ liệu bị mất hoặc bị hư hỏng sẽ được phục hồi bởi lớp vận chuyển, do đó việc chuyển dữ liệu an toàn hơn. Như thường lệ, tại lớp vận chuyển, người ta thiết kế các hàm dịch vụ cơ sở để triệu gọi các dịch vụ vận chuyển và các hàm này là đơn giản, duy nhất và độc lập với các hàm cơ sở ở tầng mạng. Nhờ vào sự độc lập này, sự phức tạp ở mức mạng bị che đi, các nhà lập trình ứng dụng có thể viết mã lệnh dựa vào một tập hợp chuẩn các hàm cơ sở mức vận chuyển và cho chương trình của họ chạy trên nhiều loại mạng mà không bị đau đầu bởi các vấn đề về giao diện các mạng con khác nhau và việc truyền tải không tin cậy. Các hàm dịch vụ cơ sở Các hàm dịch vụ cơ sở ở lớp vận chuyển được chia thành hai nhóm theo phương thức hoạt động: có nối kết và không nối kết. Các hàm dịch vụ hướng nối kết Hàm Gói tin gởi đi Ý nghĩa Nghẽn cho đến khi tiến trình nào đó LISTEN Không có nối kết tới 195/244
  62. Yêu cầu kết nối(Connection Chủ động yêu cầu thiết lập nối kết CONNECT Request) đến tiến trình khác SEND Dữ liệu (Data) Gởi thông tin đi Nghẽn cho đến khi một gói tin đến RECEIVE Không có và nhận nó Yêu cầu hủy kết DISCONNECT Muốn hủy kết nối với bên đối tác nối(Disconnection Request) Các hàm dịch vụ dạng không nối kết Hàm Gói tin gởi đi Ý nghĩa SEND Dữ liệu (Data) Gởi thông tin đi RECEIVE Không có Nghẽn cho đến khi một gói tin đến và nhận nó 196/244
  63. Các yếu tố cấu thành giao thức vận chuyển Các yếu tố cấu thành giao thức vận chuyển Cũng giống như giao thức ở tầng liên kết dữ liệu, giao thức vận chuyển phải đối phó với các vấn đề về điều khiển lỗi, đánh số thứ tự gói tin và điều khiển luồng dữ liệu. Tuy nhiên, giao thức trên hai tầng có nhiều điểm khác biệt quan trọng. Những khác biệt này xuất phát từ sự khác biệt của môi trường hoạt động của chúng (như được chỉ ra trong hình H7.2). (a) Môi trường của lớp liên kết dữ liệu.(b) Môi trường của lớp vận chuyển (H7.2) Tại lớp liên kết dữ liệu, hai router giao tiếp với nhau qua một kênh truyền vật lý, trong khi tại lớp vận chuyển, kênh truyền này được thay bằng cả một mạng con. Sự khác nhau này sẽ dẫn đến nhiều hệ lụy mà những người thiết kế giao thức vận chuyển phải đau đầu giải quyết: định địa chỉ các tiến trình trên các host khác nhau như thế nào, xử lý như thế nào đối với những trường hợp mất gói tin trong quá trình trao đổi hoặc gói tin đi chậm dẫn đến mãn kỳ và gởi thêm một gói tin bị trùng lắp, đồng bộ hóa hai tiến trình đang trao đổi dữ liệu như thế nào khi mà chúng đang ở rất xa nhau. Định địa chỉ Khi một tiến trình mong muốn thiết lập nối kết với một tiến trình khác từ xa, nó phải chỉ ra rằng nó muốn kết nối với tiến trình nào. (Vận chuyển hướng không nối kết cũng gặp vấn đề tương tự: thông điệp sẽ gởi đến ai?). Một phương pháp định địa chỉ ở tầng vận chuyển của Internet là dùng số hiệu cổng (port), còn ở trong mạng ATM là AAL-SAP. Chúng ta sẽ dùng từ chung nhất để định địa chỉ tiến trình là TSAP (Transport Service Access Point). Tương tự, địa chỉ trong tầng mạng được gọi là NSAP. Hình H7.3 mô phỏng mối quan hệ giữa NSAP, TSAP và kết nối vận chuyển. Các tiến trình ứng dụng, cả client và server đều phải gắn vào một TSAP và thiết lập nối kết đến TSAP khác. Và kết nối này chạy qua cả hai TSAP. Mục tiêu của việc sử dụng các TSAP 197/244
  64. là vì trong một số mạng, mỗi máy tính chỉ có một NSAP, do đó cần phải có cách phân biệt nhiều điểm cuối mức vận chuyển khi chúng đang chia sẻ một NSAP. Ví dụ, dàn cảnh một cuộc kết nối mức vận chuyển có thể diễn ra như sau: 1. Một server phục vụ thông tin về thời gian trên host 2 gắn nó vào TSAP 1522 để chờ một cuộc gọi đến. 2. Một tiến trình ứng dụng chạy trên host 1 muốn biết giờ hiện tại, vì thế nó đưa ra một yêu cầu nối kết chỉ ra TSAP 1208 là cổng nguồn và TSAP 1522 là cổng đích. Hành động này dẫn đến một kết nối vận chuyển được thiết lập giữa hai tiến trình client và server trên hai host 1 và 2. TSAP, NSAP và kết nối vận chuyển (H 6.3.) 1. Tiến trình client gởi một yêu cầu đến server để hỏi về thời gian. 2. Server trả lời thời gian hiện tại cho client. 3. Kết nối vận chuyển cuối cùng được giải phóng. Thiết lập nối kết Việc thiết lập nối kết nghe có vẻ dễ dàng, nhưng khi thực hiện có thể sẽ gặp nhiều rắc rối. Thoạt nhìn, một phiên thiết lập nối kết sẽ diễn ra như sau: một bên sẽ gởi TPDU yêu cầu nối kết (Connection Request – CR) đến bên kia, bên kia sẽ gởi một TPDU trả lời chấp nhận nối kết (Connection Accepted – CA). Vấn đề phát sinh khi mạng làm mất, tồn trữ quá lâu hay làm trùng lắp các gói tin do hai thực thể vận chuyển trao đổi qua lại với nhau. Ví dụ một tình huống như sau: tiến trình 1 gởi yêu cầu kết nối đến tiến trình 2, yêu cầu này bị các mạng con trung gian trì hoãn 198/244
  65. do tắc nghẽn. Mãn kỳ, tiến trình 1 gởi lại yêu cầu nối kết, vừa lúc đó yêu cầu nối kết bị trì hoãn cũng đến tiến trình 2. Giải thuật thiết lập nối kết phổ biến nhất là giải thuật bắt tay 3 chiều (three-way hand- shake). Xin xem các tình huống được mô phỏng trong Hình H7.4. Giả sử yêu cầu nối kết phát sinh ở host 1. Host 1 chọn một số thứ tự là x và đính kèm số đó trong TPDU CR ( CR (seq=x) ) gởi đến host 2. Host 2 báo nhận ACK ( ACK (seq = y, ACK = x) ) và thông báo số thứ tự khởi đầu của nó là y. Cuối cùng host 1 báo nhận cho host 2 nó đã biết số thứ tự khởi đầu của host 2 là y bằng TPDU dữ liệu đầu tiên gởi đến host 2 ( DATA (seq=x, ACK=y)). Bây giờ xét đến tình huống TPDU CR bị trùng lắp. Khi TPDU CR thứ hai đến host 2, host 2 liền trả lời ACK vì tưởng rằng host 1 muốn thiết lập nối kết khác. Khi host 1 từ chối cố gắng thiết lập nối kết của host 2, host 2 hiểu rằng nó đã bị lừa bởi CR bị trùng lắp và sẽ từ bỏ nối kết đó. Trường hợp xấu nhất là cả hai TPDU CR và ACK của host 1 đều bị trùng lắp. Như trong ví dụ (b), host 2 nhận được một CR trễ và trả lời cho yêu cầu đó với số thứ tự khởi đầu y. Giả sử, không may trong trả lời cho yêu cầu CR trước đó, host 2 thông báo số thứ tự khởi đầu của nó là z. Báo nhận ở chiều thứ ba của host 1 lại bị trễ. Khi host 1 nhận được báo nhận ACK (seq=y, ACK=x), nó nhận ra rằng thông báo DATA (seq=x, ACK=z)bị trễ, do đó nó từ bỏ nối kết này. 199/244
  66. Giải phóng nối kết Việc giải phóng nối kết đơn giản hơn thiết lập nối kết. Tuy nhiên, người ta sẽ còn gặp nhiều khó khăn không ngờ tới. Bây giờ chúng ta sẽ đề nghị hai kiểu giải phóng nối kết: dị bộ và đồng bộ. Kiểu dị bộ hoạt động như sau: khi một bên cắt nối kết, kết nối sẽ bị hủy bỏ (giống như trong hệ thống điện thoại). Kiểu đồng bộ làm việc theo phương thức ngược lại: khi cả hai đồng ý hủy bỏ nối kết, nối kết mới thực sự được hủy. Giải phóng nối kết kiểu dị bộ là thô lỗ và có thể dẫn đến mất dữ liệu. Ví dụ tình huống trong Hình H7.5. Sau khi nối kết thành công, host 1 gởi một gói dữ liệu đến đúng host 2. Sau đó host 1 gởi tiếp một gói dữ liệu khác. Không may, host 2 gởi đi một yêu cầu cắt nối kết (DISCONNECT) trước khi gói dữ liệu thứ hai đến. Kết quả là kết nối được giải phóng và dữ liệu bị mất. 200/244