Tầng liên kết dữ liệu

**Tầng liên kết dữ liệu** là tầng hai của mô hình bảy tầng OSI. Nó đáp ứng các yêu cầu phục vụ của tầng mạng và phát sinh các yêu cầu phục vụ gửi tới tầng vật lý.

Tầng liên kết dữ liệu là tầng mạng có nhiệm vụ truyền dữ liệu giữa các nút mạng kề nhau trong một mạng diện rộng hoặc giữa các nút trong cùng một segment mạng cục bộ. Tầng liên kết dữ liệu cung cấp các phương tiện chức năng và thủ tục để truyền dữ liệu giữa các thực thể mạng và có thể cung cấp phương tiện để phát hiện và có thể sửa các lỗi có thể nảy sinh tại tầng vật lý. 
Ví dụ về các giao thức liên kết dữ liệu là giao thức Ethernet cho các mạng cục bộ và các giao thức PPP, HDLC và ADCCP cho các kết nối điểm tới điểm (*point-to-point*).

Nhiệm vụ của liên kết dữ liệu là gửi thông tin từ nơi này đến một số nơi khác. Tại tầng này, một nút mạng không cần phải có khả năng gửi tới mọi nút khác, mà chỉ cần gửi được tới một số nút khác. Trong các mối quan hệ xã hội cũng vậy, người ta cần quen biết ít nhất một người khác, nhưng không nhất thiết phải biết ông Tùng ở Waterloo, Canada.

Tầng liên kết dữ liệu cung cấp dịch vụ chuyển dữ liệu qua các liên kết vật lý. Việc chuyển đó có thể đáng tin cậy hoặc không đáng tin cậy; nhiều giao thức liên kết dữ liệu không có acknowledgement (các thông điệp báo rằng đã nhận được một frame và đã chấp nhận frame đó), một số giao thức liên kết dữ liệu thậm chí còn không có bất cứ dạng checksum nào để kiểm tra lỗi truyền. Trong các trường hợp đó, các giao thức ở các tầng cao hơn phải cung cấp các chức năng điều khiển lưu lượng (*flow control*), kiểm lỗi, và xác nhận và truyền lại (*acknowledgments and retransmission*).

Tầng này đôi khi được chia thành hai tầng con. Tầng con thứ nhất có tên Điều khiển Liên kết Lôgic (*Logical Link Control*, viết tắt là LLC). Tầng con này multiplex các giao thức hoạt động phía trên tầng liên kết dữ liệu, và theo tùy chọn có thể cung cấp chức năng điều khiển lưu lượng, acknowledgment, và khôi phục lỗi.

Tầng con thứ hai có tên Điều khiển Truy nhập Môi trường (*Media Access Control*, viết tắt là MAC). Tầng con này quyết định tại mỗi thời điểm ai sẽ được phép truy nhập môi trường truyền dẫn. Có hai dạng điều khiển truy nhập môi trường: điều khiển phân tán và điều khiển tập trung. Cả hai đều có thể so sánh với việc liên lạc của con người:

* Trong một mạng gồm một số người đang nói, nghĩa là trong một cuộc trò chuyện, người ta nhìn những người xung quanh để biết ai có vẻ như sắp nói. Nếu hai người nói cùng lúc, họ sẽ ngừng lại và bắt đầu một trò chơi nhường nhịn rắc rối gồm các câu "Không, anh nói trước đi."
* Trong Nghị viện Anh, người chủ tọa quyết định khi nào ai được nói, và chủ tọa được quyền hô "trật tự" nếu có ai đó phạm luật.

Tầng con Điều khiển Truy nhập Môi trường còn quyết định một frame dữ liệu kết thúc tại đâu và frame tiếp theo bắt đầu từ đâu. Trong mạng thư tín, mỗi lá thư là một frame dữ liệu, ta có thể biết nó bắt đầu và kết thúc ở đâu vì nó nằm trong một chiếc phong bì. Ta cũng có thể chỉ ra rằng một lá thư sẽ mở đầu bằng một ngữ như "Em thân yêu," và kết thúc bằng một câu kiểu như "Nhớ em nhiều."

Trong các mạng cục bộ theo chuẩn IEEE 802, tầng liên kết dữ liệu được chia thành hai tầng con MAC và LLC; điều đó có nghĩa là có thể dùng giao thức LLC IEEE 802.2 cùng với mọi tầng MAC IEEE 802, chẳng hạn Ethernet, Token Ring, IEEE 802.11, v.v.., cũng như các tầng MAC không theo chuẩn IEEE 802 chẳng hạn FDDI. Các giao thức liên kết dữ liệu khác, chẳng hạn HDLC, được đặc tả để bao gồm cả hai tầng con, mặc dù một số giao thức khác, chẳng hạn Cisco HDLC, sử dụng HDLC's low-level framing như là một tầng MAC khi kết hợp với các tầng LLC khác nhau.

## Ví dụ
* ARCnet
* ATM - Asynchronous Transfer Mode
* Controller Area Network (CAN)
* Econet
* Ethernet
* FDDI - Fiber Distributed Data Interface
* Frame Relay
* IEEE 802.2 (cung cấp các chức năng LLC cho các tầng MAC theo chuẩn IEEE 802)
* LocalTalk
* MPLS - Multi Protocol Label Switching
* Shortest Path Bridging (SPB)
* PPP - Point-to-Point Protocol
* SLIP - Serial Line Internet Protocol (đã lỗi thời)
* StarLan
* Token ring

## Các giao diện
Tầng liên kết dữ liệu thường được cài đặt trong phần mềm với vai trò một driver card mạng (*network card driver*). Hệ điều hành sẽ phải định nghĩa một giao diện phần mềm giữa liên kết dữ liệu và chồng giao vận mạng ở bên trên. Giao diện này không phải là một tầng mà chỉ là một định nghĩa về giao tiếp giữa các tầng. Các ví dụ:

* ODI - Open Data-Link Interface
* NDIS - Network Driver Interface Specification
* SANA II
* card mạng

## Tham khảo