Giao thức Point-to-Point (PPP) là một giao thức lớp liên kết dữ liệu (Layer 2) được sử dụng để thiết lập kết nối trực tiếp giữa hai router mà không cần bất kỳ máy chủ (host) hoặc mạng trung gian nào. PPP cung cấp các dịch vụ quan trọng như xác thực kết nối, mã hóa đường truyền và nén dữ liệu, giúp tối ưu hóa hiệu suất truyền thông. Đặc biệt, đây là một giao thức hướng byte (byte-oriented) được sử dụng rộng rãi trong các hệ thống truyền thông băng thông rộng, nơi yêu cầu tải nặng và tốc độ cao.
Mục Lục
Các dịch vụ chính của giao thức Point-to-Point (PPP)
PPP cung cấp một loạt các dịch vụ thiết yếu cho việc truyền dữ liệu hiệu quả và an toàn:
- Xác định định dạng Frame: PPP quy định cấu trúc frame dữ liệu để đảm bảo tính toàn vẹn và khả năng tương thích trong quá trình truyền.
- Thiết lập và trao đổi dữ liệu: Xác định các bước để thiết lập liên kết giữa hai điểm, cho phép trao đổi dữ liệu một cách có trật tự và đáng tin cậy.
- Đóng gói dữ liệu lớp mạng: PPP chỉ định phương pháp đóng gói dữ liệu từ lớp mạng vào các frame PPP, tạo điều kiện thuận lợi cho việc truyền tải qua các liên kết point-to-point.
- Quy tắc xác thực: Xác định các quy tắc xác thực cho các thiết bị giao tiếp, đảm bảo chỉ các thiết bị được ủy quyền mới có thể truy cập và sử dụng dịch vụ.
- Cung cấp địa chỉ mạng: PPP cung cấp cơ chế gán địa chỉ cho các thiết bị trong mạng, cho phép chúng giao tiếp với nhau một cách hiệu quả.
- Kết nối đa liên kết: Hỗ trợ kết nối qua nhiều liên kết vật lý, tăng cường băng thông và độ tin cậy của kết nối.
- Hỗ trợ đa giao thức lớp mạng: PPP có khả năng hỗ trợ nhiều giao thức lớp mạng khác nhau, cung cấp một nền tảng linh hoạt cho các ứng dụng và dịch vụ mạng khác nhau.
Các thành phần cốt lõi của giao thức Point-to-Point
PPP là một giao thức phân lớp, bao gồm ba thành phần chính phối hợp để đảm bảo hoạt động hiệu quả:
- Thành phần đóng gói (Encapsulation Component): Thành phần này chịu trách nhiệm đóng gói các gói dữ liệu vào các frame PPP để truyền qua lớp vật lý. Quá trình đóng gói đảm bảo rằng dữ liệu được truyền đi một cách chính xác và hiệu quả.
- Giao thức điều khiển liên kết (Link Control Protocol – LCP): LCP đóng vai trò trung tâm trong việc thiết lập, cấu hình, kiểm tra, duy trì và kết thúc các liên kết PPP. Nó cũng quản lý việc thương lượng các tùy chọn và tính năng giữa hai đầu cuối (endpoint) của liên kết, đảm bảo rằng cả hai bên đều đồng ý về các tham số truyền thông.
- Giao thức xác thực (Authentication Protocol – AP): AP xác thực danh tính của các endpoint trước khi cho phép chúng sử dụng dịch vụ PPP. Điều này giúp ngăn chặn truy cập trái phép và bảo vệ mạng khỏi các mối đe dọa bảo mật.
PPP hỗ trợ hai giao thức xác thực chính:
- Giao thức xác thực mật khẩu (Password Authentication Protocol – PAP): PAP là một giao thức đơn giản, trong đó mật khẩu được gửi qua mạng dưới dạng văn bản thuần túy. Vì lý do bảo mật, PAP thường không được khuyến nghị sử dụng trong các môi trường yêu cầu bảo mật cao.
- Giao thức xác thực bắt tay thử thách (Challenge Handshake Authentication Protocol – CHAP): CHAP là một giao thức an toàn hơn PAP, sử dụng cơ chế bắt tay thử thách để xác thực danh tính của người dùng mà không cần gửi mật khẩu thực tế qua mạng.
Giao thức điều khiển mạng (Network Control Protocols – NCP): Các NCP được sử dụng để thương lượng các tham số và cơ sở vật chất cho lớp mạng. Với mỗi giao thức lớp cao hơn được PPP hỗ trợ, sẽ có một NCP tương ứng. Một số NCP phổ biến bao gồm:
- Giao thức kiểm soát giao thức Internet (Internet Protocol Control Protocol – IPCP): Được sử dụng để cấu hình và quản lý các kết nối IP qua PPP.
- Giao thức kiểm soát lớp mạng OSI (OSI Network Layer Control Protocol – OSINLCP): Hỗ trợ các giao thức lớp mạng OSI.
- Giao thức điều khiển trao đổi gói Internetwork (Internetwork Packet Exchange Control Protocol – IPXCP): Được sử dụng cho các kết nối IPX.
- Giao thức DECnet Phase IV (DECnet Phase IV Protocol – DNCP): Hỗ trợ giao thức DECnet.
- Giao thức điều khiển NetBIOS frame (NetBIOS Frames Control Protocol – NBFCP): Quản lý các kết nối NetBIOS.
- Giao thức điều khiển IPv6 (IPv6 Control Protocol – IPV6CP): Được sử dụng để cấu hình và quản lý các kết nối IPv6 qua PPP.
Cấu trúc Frame trong giao thức Point-to-Point (PPP)
PPP là một giao thức hướng byte, trong đó mỗi trường của frame bao gồm một hoặc nhiều byte. Cấu trúc frame PPP bao gồm các trường sau:
- Flag: Một byte (0x7E) đánh dấu sự bắt đầu và kết thúc của frame. Chuỗi bit của flag là
01111110. - Address: Một byte (0xFF) thường được đặt thành
11111111trong trường hợp broadcast. - Control: Một byte (0x03) được đặt thành giá trị không đổi là
11000000. - Protocol: Một hoặc hai byte xác định loại dữ liệu có trong trường payload. Ví dụ,
0x0021cho IPv4,0xC021cho LCP, và0xC023cho PAP. - Payload (Data): Mang dữ liệu từ lớp mạng. Độ dài tối đa mặc định của trường payload là 1500 byte (Maximum Transmission Unit – MTU). Tuy nhiên, giá trị này có thể được thương lượng giữa các endpoint trong quá trình thiết lập kết nối.
- FCS (Frame Check Sequence): Một chuỗi kiểm tra frame dài 2 hoặc 4 byte được sử dụng để phát hiện lỗi trong quá trình truyền. Mã tiêu chuẩn được sử dụng là CRC (Cyclic Redundancy Check).
Byte Stuffing trong Frame PPP:
Để tránh nhầm lẫn các chuỗi bit trong trường payload với flag byte, PPP sử dụng kỹ thuật byte stuffing. Bất cứ khi nào chuỗi flag xuất hiện trong thông báo, một byte escape (0x7D) sẽ được chèn vào trước nó. Khi nhận được byte escape, người nhận sẽ loại bỏ nó trước khi chuyển dữ liệu vào lớp mạng. Ví dụ:
- Nếu byte dữ liệu là
0x7E(flag byte), nó sẽ được thay thế bằng0x7D 0x5E. - Nếu byte dữ liệu là
0x7D(escape byte), nó sẽ được thay thế bằng0x7D 0x5D.
Cách thức hoạt động của giao thức Point-to-Point (PPP)
PPP cho phép truyền các gói tin mạng qua liên kết point-to-point bằng cách cung cấp một cơ chế đóng khung để đóng gói các giao thức mạng như IP, IPX hoặc NetBEUI thành các frame PPP.
Quá trình đóng gói PPP dựa trên High-Level Data Link Control (HDLC), một giao thức có nguồn gốc từ môi trường máy tính lớn. Các frame PPP có thể được truyền qua các đường truyền nối tiếp như POTS (Plain Old Telephone Service), ISDN (Integrated Services Digital Network) và các mạng chuyển mạch gói như X.25.
PPP bao gồm LCP để thiết lập, chia nhỏ và kiểm tra các kết nối WAN, cũng như một số NCP để thiết lập và cấu hình giao tiếp mạng bằng từng giao thức mạng. PPP cũng hỗ trợ các giao thức xác thực như PAP và CHAP.
Một phiên PPP điển hình diễn ra hoàn toàn tự động và thường không yêu cầu sự can thiệp của người dùng trong thời gian thực. Nó bao gồm bốn giai đoạn chính:
- Thiết lập liên kết (Link Establishment): PPP sử dụng LCP để thiết lập và duy trì liên kết PPP qua đường truyền nối tiếp. Các khung LCP được gửi qua liên kết dữ liệu để kiểm tra tính toàn vẹn và thiết lập liên kết.
- Xác thực người dùng (Authentication): PPP sử dụng một trong số các giao thức xác thực, bao gồm PAP, CHAP và MS-CHAP (Microsoft Challenge Handshake Authentication Protocol).
- Callback (tùy chọn): Nếu được cấu hình, PPP có thể sử dụng CBCP (Callback Control Protocol) để thực hiện kiểm soát gọi lại.
- Cấu hình giao thức mạng (Network-Layer Protocol Configuration): NCP được sử dụng để thiết lập kết nối mạng, thực hiện nén và mã hóa, và cấp địa chỉ IP bằng giao thức DHCP. Các khung NCP được gửi qua liên kết để thiết lập kết nối mạng giữa máy chủ PPP và máy khách PPP từ xa.
Hy vọng rằng bài viết này đã cung cấp cho bạn cái nhìn tổng quan về giao thức Point-to-Point (PPP) và cách thức hoạt động của nó. PPP vẫn là một giao thức quan trọng trong nhiều ứng dụng mạng hiện nay, đặc biệt là trong các kết nối dial-up và các liên kết point-to-point chuyên dụng.
