1. Tổng quan về các giao thức truyền thông lớp ứng dụng
TCP/UDP là giao thức truyền thông lớp vận chuyển dựa trên luồng byte. Chương trình của nó dựa trên lập trình luồng IO. Cái gọi là "luồng" là một chuỗi dữ liệu nhị phân dài không có ranh giới. Là một giao thức lớp vận chuyển, TCP/UDP không hiểu ý nghĩa cụ thể của dữ liệu nghiệp vụ lớp trên. Nó sẽ phân chia các gói dữ liệu theo tình hình thực tế của bộ đệm TCP. Do đó, khi một gói dữ liệu hoàn chỉnh được truyền đi trong kinh doanh, nó có thể được chia thành nhiều gói để truyền hoặc nhiều gói dữ liệu nhỏ có thể được gói gọn thành một gói dữ liệu lớn để truyền, đó là việc tháo rời TCP/UDP Bag và Sticky. vấn đề về túi xách. Nếu gói dữ liệu được tuần tự hóa trực tiếp và gửi đi, người nhận không thể biết thông báo hoàn chỉnh bắt đầu và kết thúc ở đâu. Vấn đề này cần được giải quyết thông qua thiết kế giao thức ứng dụng lớp trên.
2. Nghiên cứu các giao thức chính thống trong ngành
Các giải pháp giao thức chính thống hiện nay trong ngành như sau:
1. Độ dài tin nhắn cố định: Độ dài tin nhắn được cố định. Ví dụ: độ dài của mỗi tin nhắn được cố định ở mức 200 byte. Nếu không có đủ khoảng trống để điền vào chỗ trống, người nhận sẽ nhận được 200 byte mỗi lần.
2. Sử dụng các dấu phân cách đặc biệt để phân tách: Ví dụ: ký tự xuống dòng và ký tự xuống dòng được thêm vào cuối mỗi tin nhắn làm dấu phân tách tin nhắn. Khi người nhận đọc ký tự xuống dòng và ký tự xuống dòng, tin nhắn sẽ được chia.
3. Chia thành tiêu đề tin nhắn và nội dung tin nhắn: tiêu đề tin nhắn chứa độ dài của tin nhắn. Khi người nhận lấy được độ dài tin nhắn từ tiêu đề tin nhắn, nó sẽ biết tin nhắn còn lại là bao nhiêu byte.
4. Các giao thức lớp ứng dụng tùy chỉnh phức tạp hơn.
3. Cấu trúc giao thức truyền thông lớp ứng dụng tùy chỉnh
Dựa trên nội dung trên, một giao thức truyền thông lớp ứng dụng được xác định trong dự án này, với cấu trúc sau:
。
。
Như thể hiện trong hình trên, dữ liệu được gửi bao gồm một message header (tiêu đề) và phần nội dung (body).
- Loại gói: Các loại gói khác nhau thực hiện các hướng dẫn và chức năng khác nhau trong máy chủ.
- Độ dài dữ liệu: Độ dài dữ liệu bao gồm độ dài của tiêu đề thư cộng với độ dài của nội dung nội dung dữ liệu.
Nội dung tin nhắn là bộ đệm dữ liệu có độ dài cố định (nhưng độ dài của tin nhắn được truyền có thể thay đổi).
Để hiện thực hóa cấu trúc trên, hai cấu trúc được xác định, đó là cấu trúc tiêu đề thông báo và cấu trúc tiêu đề thông báo. Cấu trúc tiêu đề thông báo được lồng trong cấu trúc thông báo và một kiểu liệt kê được xác định để xác định các yêu cầu giao tiếp khác nhau.
。
。
。
Các loại tin nhắn khác nhau được mã hóa như trong bảng sau:
。
Có thể thấy, toàn bộ tin nhắn gồm một chuỗi duy nhất cách nhau bởi dấu $, và thành phần của tiêu đề tin nhắn về cơ bản giống nhau. Lấy log I n làm ví dụ, chữ số đầu tiên của tin nhắn là loại tin nhắn Log I n. và chữ số thứ hai không bao gồm tin nhắn. Độ dài tin nhắn của tiêu đề, theo sau là tên người dùng và mật khẩu. Trong Getfrdlist, ngoài tiêu đề thư và số lượng bạn bè, một chuỗi bao gồm uid, uname, usex và vai trò được mã hóa theo chu kỳ và mỗi mục được phân tách bằng #.
。
。
Giao thức được tuân thủ bởi cả máy chủ và máy khách, chia sẻ cùng một bộ chức năng mã hóa và giải mã. Encoding được ghép thành một chuỗi theo nội dung cụ thể của thỏa thuận ở trang trước. Giải mã yêu cầu đọc tiêu đề tin nhắn, trước tiên đánh giá loại tin nhắn, được sử dụng để phân biệt các tin nhắn khác nhau nhằm xác định các phương pháp giải mã khác nhau, sau đó lấy độ dài tin nhắn, được sử dụng để thực hiện xác minh độ dài trên tin nhắn nhằm đảm bảo tính bảo mật và tính toàn vẹn của truyền dữ liệu.
。
4. Tóm tắt
Theo tôi, việc thiết kế các giao thức truyền thông chủ yếu cần đáp ứng ba điểm:
- Hợp nhất: Giao thức được tuân theo bởi cả máy chủ và máy khách, chia sẻ cùng một bộ chức năng mã hóa và giải mã.
- Phân biệt: Sử dụng tiêu đề tin nhắn để phân biệt các loại tin nhắn khác nhau, dùng để xác định đó là loại tin nhắn nào và chọn cách giải mã tương ứng.
- Bảo mật: Để xác minh tính toàn vẹn của gói dữ liệu, xác minh độ dài là phương pháp xác minh cơ bản nhất bao gồm tổng kiểm tra, kiểm tra CRC và các loại khác.
。
Cuối cùng, bài viết về thiết kế các giao thức truyền thông lớp ứng dụng kết thúc ở đây. Nếu bạn muốn biết thêm về thiết kế các giao thức truyền thông lớp ứng dụng, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi. tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!