I. Giới thiệu framing
1. Khái niệm
Trong thế giới mạng máy tính, việc truyền dữ liệu chính xác và hiệu quả thông qua các thiết bị khác nhau đóng một vai trò cực kỳ quan trọng. Tại tầng liên kết dữ liệu (Data link layer), một kỹ thuật cốt lõi được sử dụng là Framing, hay còn gọi là đóng gói/khung (dữ liệu). Framing là quá trình đóng gói dữ liệu rời rạc/thô vào các đơn vị dữ liệu có cấu trúc - gọi là frames (khung).
Để dễ dàng hình dung quá trình này, bạn đọc có thể tưởng tượng các dữ liệu bit được truyền theo dòng bit và rời rạc, framing chính là khóa trình "đưa" các bit "không đầu không đuôi" đó vào từng khung, có đầu ra (output) là từng frame có ý nghĩa. Frame cũng được sử dụng như đơn vị truyền dẫn kỹ thuật số, mỗi frame không chỉ chứa dữ liệu cần truyền đi mà còn bao gồm các thông tin quan trọng khác nhằm đảm bảo việc truyền thông được thực hiện chính xác và hiệu quả.
2. Vai trò của framing trong tầng liên kết dữ liệu
Tầng liên kết dữ liệu có nhiệm vụ quan trọng là đảm bảo rằng thông tin từ tầng mạng (Network layer) được truyền đi tin cậy và an toàn. Framing chính là cơ chế sinh ra để thực hiện điều đó, nó giúp định dạng, chuẩn bị, kiểm tra dữ liệu trong quá trình truyền tải. Vai trò của framing trong tầng liên kết dữ liệu bao gồm:
- Định dạng, phân chia dữ liệu và đồng bộ hóa
- Định địa chỉ và điều khiển
- Phát hiện và sửa lỗi
II. Cấu trúc frame
Một frame bao gồm nhiều thành phần khác nhau, mỗi thành phần đều đóng vai trò quan trọng trong việc đảm bảo dữ liệu được truyền đi một cách chính xác và hiệu quả. Cấu trúc frame thường bao gồm Frame header, Payload field, Trailer, và Flag.
1. Frame header
Frame Header chứa các thông tin quan trọng cần thiết cho việc xử lý frame:
- Trường địa chỉ (Address field): Xác định nguồn và đích của frame, giúp hệ thống mạng định tuyến frame một cách chính xác.
- Trường kiểm soát (Control field): Chứa thông tin kiểm soát lưu lượng và các thông tin điều khiển khác, giúp quản lý việc truyền và nhận frame.
- Trường loại (Type field): Xác định loại dữ liệu hoặc giao thức được sử dụng, giúp thiết bị nhận biết cách xử lý payload.
2. Payload field
Payload field là phần chứa dữ liệu thực sự được truyền đi. Kích thước và nội dung của payload có thể thay đổi tùy thuộc vào loại thông tin cần truyền và giao thức được sử dụng. Có thể bao gồm:
- Dữ liệu người dùng: Chứa thông tin mà người dùng muốn truyền đi.
- Thông tin điều khiển: Đôi khi, payload cũng bao gồm thông tin kiểm soát cần thiết cho việc xử lý frame.
3. Trailer
Trailer chứa thông tin kiểm tra lỗi và thông tin kiểm soát khác để đảm bảo tính toàn vẹn của dữ liệu được truyền. Trailer thường bao gồm:
- Checksum hoặc CRC (Cyclic Redundancy Check): Các giá trị này được sử dụng để phát hiện lỗi có thể xảy ra trong quá trình truyền dữ liệu.
- Thông tin điều khiển: Đôi khi trailer cũng chứa thông tin điều khiển cần thiết cho việc xử lý frame.
4. Flag
Flag được sử dụng để đánh dấu bắt đầu và kết thúc của một frame, giúp thiết bị mạng phân biệt các frame khác nhau trong dòng dữ liệu liên tục.
- Flag bắt đầu: Đánh dấu bắt đầu của frame.
- Flag kết thúc: Đánh dấu kết thúc của frame.
III. Các kiểu framing
Có hai kiểu framing chính được sử dụng: fixed size framing và variable size framing.
1. Fixed size framing
Trong fixed size framing, mỗi frame được đóng gói có cùng kích thước cố định. Kích thước này được xác định trước và không thay đổi trong quá trình truyền dữ liệu. Phương pháp này đơn giản hóa việc xử lý frame bởi vì các thiết bị mạng có thể dễ dàng xác định điểm bắt đầu và kết thúc của mỗi frame mà không cần thông tin đặc biệt.
Ưu điểm:
- Dễ dàng trong việc xử lý do kích thước frame cố định.
- Không yêu cầu các cơ chế phức tạp để xác định ranh giới của frame.
- Xử lý nhanh chóng và hiệu quả trong các hệ thống mà thông tin được truyền ở tốc độ cao và ổn định.
Nhược điểm:
- Không linh hoạt trong việc đóng gói dữ liệu có kích thước biến đổi.
- Có thể gây lãng phí băng thông nếu lượng dữ liệu không đủ để điền đầy frame.
- Không hiệu quả trong việc truyền các loại dữ liệu khác nhau có yêu cầu kích thước đặc biệt.
2. Variable size framing
Ngược lại với fixed size framing, variable size framing cho phép kích thước của mỗi frame thay đổi tùy theo lượng dữ liệu cần truyền. Điều này đòi hỏi việc sử dụng các kỹ thuật đặc biệt để xác định ranh giới của frame, như việc sử dụng byte đặc biệt hoặc chuỗi bit để đánh dấu điểm bắt đầu và kết thúc frame.
Ưu điểm:
- Linh hoạt trong việc đóng gói các lượng dữ liệu với kích thước không cố định.
- Tiết kiệm băng thông bằng cách chỉ sử dụng đủ không gian cần thiết cho dữ liệu.
- Phù hợp với việc truyền dữ liệu đa dạng với các yêu cầu kích thước khác nhau.
Nhược điểm:
- Cần các cơ chế phức tạp hơn để xác định ranh giới của frame, có thể gây chậm trễ trong xử lý.
- Có nguy cơ cao hơn về lỗi trong việc xác định ranh giới nếu cơ chế đánh dấu không đáng tin cậy.
- Việc phân tích và xử lý frame có thể phức tạp hơn do sự thay đổi của kích thước frame.
IV. Phương pháp framing
Có hai phương pháp framing chính được sử dụng: Byte-oriented framing và Bit-oriented framing. Mỗi phương pháp có đặc điểm và ứng dụng riêng phù hợp với các yêu cầu và môi trường truyền thông khác nhau.
1. Byte-oriented framing
Byte-oriented framing, hay còn được gọi là character-oriented framing, là phương pháp thực hiện đóng gói dữ liệu theo các đơn vị byte. Mỗi byte trong frame có thể đại diện cho một ký tự hoặc một phần của dữ liệu.
Đặc điểm:
- Flag và Control characters: Byte-oriented framing sử dụng các ký tự đặc biệt như flag characters để đánh dấu bắt đầu và kết thúc của mỗi frame. Các ký tự điều khiển khác cũng được sử dụng để kiểm soát truyền thông.
- Transparency: Để đảm bảo tính minh bạch của dữ liệu, các ký tự giống với flag hoặc control characters trong dữ liệu thực tế được mã hóa bằng cách sử dụng kỹ thuật như byte stuffing.
Ưu điểm:
- Đơn giản và dễ triển khai.
- Tương thích tốt với các hệ thống xử lý dựa trên ký tự.
Nhược điểm:
- Cần thêm băng thông do sự cần thiết của byte stuffing và control characters.
- Có thể không hiệu quả với dữ liệu không dựa trên ký tự.
2. Bit-oriented framing
Bit-oriented framing là phương pháp thực hiện đóng gói dữ liệu theo từng bit. Phương pháp này không giới hạn dữ liệu theo cấu trúc ký tự cố định, cho phép sự linh hoạt cao hơn trong việc xử lý dữ liệu.
Đặc điểm:
- Flag sequence: Sử dụng các chuỗi bit đặc biệt để đánh dấu bắt đầu và kết thúc của frame.
- Bit stuffing: Để đảm bảo không có chuỗi bit nào trong dữ liệu giống với flag sequence, bit-oriented framing sử dụng kỹ thuật bit stuffing.
Ưu điểm:
- Hiệu quả và linh hoạt, không bị giới hạn bởi cấu trúc ký tự.
- Thích hợp cho việc truyền dữ liệu dạng nhị phân và các giao thức mạng hiện đại.
Nhược điểm:
- Cần các cơ chế phức tạp hơn để xử lý bit stuffing và phát hiện ranh giới frame.
- Có thể khó triển khai và kiểm soát hơn so với byte-oriented framing.
V. Kỹ thuật Byte stuffing và Bit stuffing
Kỹ thuật Byte stuffing và Bit stuffing là hai phương pháp được sử dụng để đảm bảo tính minh bạch của dữ liệu trong quá trình truyền thông. Chúng giúp phân biệt dữ liệu thực sự với các ký tự điều khiển hoặc cờ (flags) trong frame.
1. Byte stuffing
Byte stuffing (đôi khi được gọi là character stuffing) là kỹ thuật được sử dụng trong byte-oriented framing. Kỹ thuật đảm bảo rằng các ký tự điều khiển đặc biệt (như ký tự bắt đầu và kết thúc frame) không được xuất hiện trong dữ liệu truyền. Khi một ký tự trong dữ liệu trùng với ký tự điều khiển, một ký tự đặc biệt (thường là 'ESC' hoặc một giá trị tương tự) sẽ được thêm vào trước ký tự đó.
Giả sử ký tự kết thúc một frame là Flag, và sử dụng ký tự ESC để đánh dấu. Khi chuỗi dữ liệu truyền cũng xuất hiện Flag, ký tự ESC sẽ được thêm vào trước nó tạo thành ESC Flag. Ngoài ra, khi ký tự ESC xuất hiện trong nội dung truyền thì sẽ tạo thành ESC ESC (quan sát hình vẽ):
Vậy nếu trong dữ liệu truyền xuất hiện đồng thời ESC Flag thì sau khi sử dụng Byte stuffing sẽ thu được kết quả gì?
2. Bit stuffing
Bit stuffing là kỹ thuật được sử dụng trong bit-oriented framing. Kỹ thuật đảm bảo rằng chuỗi bit đặc biệt (như flag bắt đầu hoặc kết thúc frame) không xuất hiện trong dữ liệu truyền. Khi một chuỗi bit trong dữ liệu trùng với chuỗi cờ, một bit được thêm vào ngay sau chuỗi bit đó để phân biệt.
Xét cơ chế Bit stuffing là nếu dữ liệu có bit liên tiếp thì sẽ chèn thêm bit vào đằng sau. Nếu dữ liệu cần truyền là , trong đó dãy bit xuất hiện lần, sau khi thực hiện bit stuffing sẽ thu được . Bên nhận mỗi khi đọc dữ liệu thấy chuỗi sẽ tự động bỏ đi số theo sau. Quan sát chi tiết qua hình ảnh sau:
VI. Ưu, nhược điểm của framing trong mạng máy tính
1. Ưu điểm
Phát hiện và xử lý lỗi
Framing cho phép tích hợp các cơ chế kiểm tra lỗi như CRC và checksum. Điều này giúp phát hiện và sửa chữa lỗi (trong một số trường hợp) mà không cần truyền lại dữ liệu.
Đồng bộ hóa
Các frame cung cấp một chuẩn chung để đồng bộ hóa truyền thông giữa người gửi và người nhận, đảm bảo rằng mỗi đơn vị dữ liệu được xử lý một cách độc lập.
Quản lý dòng dữ liệu
Framing cung cấp cơ sở để thực hiện kiểm soát dòng dữ liệu, giúp tránh tình trạng quá tải ở người nhận.
Hỗ trợ đa dạng dữ liệu
Các frame có thể chứa nhiều loại dữ liệu khác nhau, từ dữ liệu người dùng đến thông tin điều khiển, giúp tạo nền tảng cho mạng đa dạng và linh hoạt.
2. Nhược điểm
Độ trễ và Overhead
Quá trình đóng gói dữ liệu vào các frame và sau đó giải mã chúng có thể gây ra độ trễ. Ngoài ra, header và trailer của frame tạo thêm overhead, giảm hiệu quả sử dụng băng thông.
Phức tạp trong xử lý
Các cơ chế như byte stuffing hoặc bit stuffing cần phải được thực hiện một cách cẩn thận, tăng độ phức tạp của phần mềm và phần cứng.
Khả năng phát hiện lỗi hạn chế
Mặc dù framing cung cấp cơ chế phát hiện lỗi, nhưng không phải tất cả các lỗi đều có thể được phát hiện và sửa chữa, đặc biệt với các lỗi phức tạp hoặc liên tục.
Cần sự đồng bộ
Cả người gửi và người nhận cần phải đồng bộ về cách thức xử lý frame, bất kỳ sự không nhất quán nào cũng có thể dẫn đến lỗi truyền dữ liệu.
Tài liệu tham khảo
- https://www.geeksforgeeks.org/framing-in-data-link-layer/
- https://www.geeksforgeeks.org/bit-stuffing-in-computer-network/
- https://www.geeksforgeeks.org/difference-between-byte-stuffing-and-bit-stuffing/
- https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Computer%20Networks.pdf
- https://www.ucg.ac.me/skladiste/blog_44233/objava_64433/fajlovi/Computer%20Networking%20_%20A%20Top%20Down%20Approach,%207th,%20converted.pdf