Điều gì sẽ là kết quả của kịch bản kết nối sau trong mạng MQTT?


7

Trong MQTT, chính máy khách là người khởi tạo kết nối với thông báo CONNECT.

Thông số gói kết nối MQTT

Trường đầu tiên của gói là clientId:

Mã định danh máy khách (ClientId ngắn) là mã định danh của từng máy khách MQTT kết nối với nhà môi giới MQTT. Như định danh từ đã gợi ý, nó phải là duy nhất cho mỗi nhà môi giới. Người môi giới sử dụng nó để xác định khách hàng và trạng thái hiện tại của khách hàng. (Hình ảnh và trích dẫn được lấy từ đây .)

Bây giờ hãy nói rằng tôi có hai khách hàng, khách hàng X và Y trong tình huống sau.

  1. Môi giới ra mắt, chưa có khách hàng.
  2. X thành công kết nối với người môi giới với client-1id, tên người dùng là X.
  3. Bây giờ, Y cố gắng kết nối bằng client-1id, tên người dùng là Y.

Chuyện gì sẽ xảy ra?

  1. Dựa trên clientId, nhà môi giới sẽ nghĩ rằng X thực hiện một nỗ lực kết nối lặp đi lặp lại , đó là hành vi bất thường .
  2. Không có gì bất thường sẽ xảy ra. Y kết nối thành công vì nó sử dụng tên người dùng khác .
  3. Không có gì bất thường sẽ xảy ra. Nhà môi giới sẽ từ chối nỗ lực kết nối Y vì clientId đã cho đã được sử dụng.

Câu trả lời:


6

Nếu clientidgiống nhau, trong MQTT, thông số kỹ thuật nói rằng bạn phải coi họ là cùng một khách hàng! Có lẽ Y nên được kết nối bằng cách sử dụng IdXnên ngắt kết nối.

Phần này là từ các tài liệu:

Nếu xác thực thành công, Máy chủ thực hiện các bước sau.

  1. Nếu ClientId đại diện cho Máy khách đã được kết nối với Máy chủ thì Máy chủ PHẢI ngắt kết nối Máy khách hiện tại [MQTT-3.1.4-2].

  2. Máy chủ PHẢI thực hiện việc xử lý CleanSession được mô tả trong phần 3.1.2.4 [MQTT-3.1.4-3].

  3. Máy chủ PHẢI xác nhận Gói CONNECT với Gói CONNACK chứa mã trả về 0 [MQTT-3.1.4-4].

  4. Bắt đầu gửi tin nhắn và theo dõi trực tiếp.

Xem tài liệu này để biết thêm chi tiết.


2
Đây có vẻ là câu trả lời đúng, nhưng có thể hữu ích khi liên kết và trích dẫn phần có liên quan của thông số kỹ thuật (phần quan trọng là "Nếu ClientId đại diện cho Máy khách đã được kết nối với Máy chủ thì Máy chủ PHẢI ngắt kết nối Máy khách hiện tại")
Aurora0001

3
Tôi đã bỏ qua phần đó bằng cách nào đó, nhưng nó là đáng ngạc nhiên. Một khách hàng có hại có thể buộc các nhà môi giới ngắt kết nối các khách hàng khác sau đó?
Bence Kaulics
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.