Temeller

MQTT Port’ları: 1883, 8883, 8083, 8084 ve 443 Açıklaması

Hangi MQTT port’unu kullanmalısınız? 1883, 8883, 8083, 8084 ve 443’ün anlamını, tarayıcıda hangilerinin çalıştığını ve popüler broker port’larını öğrenin.

Güncellendi · 6 dk okuma

Bir MQTT bağlantısı başarısız olduğunda kontrol edilecek ilk şey port’tur. MQTT düz TCP, TLS, WebSocket ve güvenli WebSocket üzerinden çalışabilir — ve her transport genellikle farklı bir port’ta bulunur. Yanlış port’u seçmek, bir client’ın Connecting… durumunda takılı kalmasının tek başına en yaygın nedenidir. Bu rehber yaygın kullanılan her MQTT port’unu, ne zaman kullanılacağını ve test için bağlanabileceğiniz public broker’ların tam port’larını açıklıyor.

Bir bakışta MQTT port’ları

PortTransportURL şemasıŞifreliTarayıcıda çalışır
1883TCP üzerinden MQTTmqtt://HayırHayır
8883TLS üzerinden MQTTmqtts://EvetHayır
8083 / 8080 / 8000 / 80WebSocket üzerinden MQTTws://HayırYalnızca düz HTTP sayfalarından
8084 / 8081 / 8884 / 443Güvenli WebSocket üzerinden MQTTwss://EvetEvet

IANA’ya kayıtlı olan yalnızca 1883 ve 8883 port’larıdır (mqtt ve secure-mqtt olarak). WebSocket port’ları broker’dan broker’a değişen bir gelenektir; bu yüzden bağlanmadan önce her zaman broker’ın dokümantasyonunu — ya da public broker listemizi — kontrol etmelisiniz.

MQTT port 1883: düz TCP

MQTT port 1883, orijinal ve şifresiz transport’tur. Client bir TCP bağlantısı açar ve ikili CONNECT paketini doğrudan gönderir. Ek yükü en düşük olan seçenektir ve çoğu gömülü cihazın, mosquitto_pub gibi komut satırı araçlarının ve sunucu tarafı kütüphanelerin varsayılan olarak kullandığı port’tur.

Sorun şu: her şey — CONNECT içindeki kullanıcı adı ve parola dahil — düz metin olarak iletilir. 1883’ü güvenilir bir yerel ağda veya geçici testler için kullanın; kimlik bilgileri ya da internet üzerinden geçen production verileri için asla kullanmayın.

MQTT port 8883: TLS üzerinden MQTT

MQTT port 8883, TLS ile sarmalanmış aynı MQTT protokolüdür. Client önce bir TLS el sıkışması yapar, broker sertifikasını doğrular ve ancak bundan sonra CONNECT gönderir. İnternet üzerinden bir broker’la konuşan cihazlar ve backend servisleri için varsayılan tercih budur.

  • Client’ın güvenilir bir CA paketine ihtiyacı vardır (public CA’lar için sistem deposu yeterlidir; self-signed kurulumlar bir cafile gerektirir).
  • Bağlandığınız host adı sertifikayla eşleşmelidir; bu yüzden IP adresiyle değil, adla bağlanın.
  • Broker’lar bu port’ta veya ayrı bir port’ta ek olarak client sertifikası (mutual TLS) isteyebilir.

MQTT WebSocket port’ları: 8083, 8084 ve diğerleri

Tarayıcılar ham TCP soketi açamaz, bu yüzden web uygulamaları MQTT’yi bir WebSocket üzerinden tünellenir. Client, mqtt alt protokolüyle bir path’e (genellikle /mqtt) HTTP upgrade isteği yapar ve bundan sonra MQTT paketleri WebSocket frame’leri içinde akar. Tek bir standart MQTT WebSocket port’u yoktur:

  • EMQX varsayılan olarak 8083 (ws) ve 8084 (wss) kullanır.
  • HiveMQ’nun public broker’ı 8000 (ws) ve 8884 (wss) kullanır.
  • test.mosquitto.org 8080 (ws) ve 8081 (wss) kullanır.
  • Pek çok production kurulumu WebSocket’leri 80 / 443 üzerinde bir reverse proxy’nin arkasına koyar.

Port 443: güvenlik duvarlarını aşmak

Kurumsal ağlar, otel Wi-Fi’ları ve mobil operatörler çoğu zaman web port’ları dışındaki her şeyi engeller. MQTT’yi 443 port’unda güvenli WebSocket üzerinden çalıştırmak, trafiğin sıradan HTTPS gibi görünmesini sağlar; böylece neredeyse her yerden geçer. mqtt.eclipseprojects.io adresindeki Eclipse sandbox tam olarak bunu yapar. Bazı bulut IoT platformları da 443 üzerinde native TLS üzerinden MQTT kabul eder ve aynı port’taki HTTPS’ten ayırt etmek için TLS ALPN eklentisini kullanır.

Popüler public MQTT broker’larının port’ları

BrokerHostTCPTLSWSWSS
HiveMQbroker.hivemq.com188388838000 /mqtt8884 /mqtt
EMQXbroker.emqx.io188388838083 /mqtt8084 /mqtt
Mosquittotest.mosquitto.org1883888380808081
Eclipsemqtt.eclipseprojects.io1883888380 /mqtt443 /mqtt
ConnectMQ (erken erişim)broker.connectmq.com188388838083 /mqtt8084 /mqtt

test.mosquitto.org ayrıca belirli testler için ek listener’lar da çalıştırır; örneğin 1884 port’unda kimlik doğrulamalı bir listener (kullanıcı adı rw, parola readwrite).

EMQX’e wss port’u 8084 üzerinden bağlanın

Port’u bir bağlantı URL’sine yerleştirmek

Çoğu client kütüphanesi şemayı, host’u, port’u ve (WebSocket için) path’i birleştiren tek bir URL alır:

MQTT.js bağlantı URL’leri
import mqtt from 'mqtt';

// Node.js only — raw TCP and TLS
mqtt.connect('mqtt://broker.emqx.io:1883');
mqtt.connect('mqtts://broker.emqx.io:8883');

// Browser or Node.js — WebSockets (note the /mqtt path)
mqtt.connect('ws://broker.emqx.io:8083/mqtt');
mqtt.connect('wss://broker.emqx.io:8084/mqtt');

Sık yapılan port hataları

  • Bir WebSocket port’unda mqtt:// kullanmak (ya da 1883’te ws://). Client’ın hangi protokolü konuşacağını şema belirler; port’un da buna uyması gerekir.
  • WebSocket path’ini unutmak. Pek çok broker upgrade isteğini yalnızca /mqtt üzerinde kabul eder; path olmadan 404 alırsınız ya da bağlantı sessizce başarısız olur.
  • Düz bir port’ta TLS kullanmak. 1883’te mqtts:// kullanmak, wrong version number gibi bir TLS el sıkışma hatasıyla sonuçlanır.
  • Yalnızca kendi ağınızdan test etmek. Ofiste çalışan bir port mobil veride veya misafir Wi-Fi’ında engellenmiş olabilir. Cihazlarınızın gerçekten kullanacağı ağdan test edin.
  • 1883’ü anonim erişimle internete açmak. İnterneti tarayan botlar açık MQTT broker’larını çok hızlı bulur. Bir broker’ın erişilebilir olması gerekiyorsa kimlik bilgisi zorunlu tutun ve TLS’i tercih edin.

Bir MQTT port’unun açık olup olmadığı nasıl kontrol edilir

Suçu kodunuza atmadan önce port’un ağınızdan erişilebilir olduğunu doğrulayın:

Port kontrolleri
# Is the TCP port open?
nc -vz broker.hivemq.com 1883

# Does the TLS port complete a handshake with a valid certificate?
openssl s_client -connect broker.hivemq.com:8883 -servername broker.hivemq.com </dev/null

# Full MQTT round trip over TLS
mosquitto_sub -h broker.hivemq.com -p 8883 --capath /etc/ssl/certs -t 'testmqtt/port-check' -v

Zaman aşımı genellikle bir güvenlik duvarının trafiği düşürdüğü anlamına gelir; connection refused ise o port’u dinleyen hiçbir şey olmadığını gösterir. MQTT bağlantı hataları rehberimiz her iki durumu da ele alıyor.

Kendi broker’ınızda port açmak

Mosquitto’yu kendiniz çalıştırıyorsanız her port ayrı bir listener’dır. Tipik bir kurulum 1883’ü localhost’a bağlı tutar ve dışarıya yalnızca şifreli listener’ları açar:

mosquitto.conf
# Plain MQTT, local clients only
listener 1883 127.0.0.1

# MQTT over TLS
listener 8883
certfile /etc/mosquitto/certs/server.crt
keyfile  /etc/mosquitto/certs/server.key

# Secure WebSockets for browsers
listener 8084
protocol websockets
certfile /etc/mosquitto/certs/server.crt
keyfile  /etc/mosquitto/certs/server.key

allow_anonymous false
password_file /etc/mosquitto/passwd

Aynı port’ları bulut güvenlik duvarınızda veya security group’unuzda da açmayı unutmayın.

Hangi MQTT port’unu kullanmalısınız?

  • İnternet üzerinden cihaz veya backend: 8883 (TLS).
  • Tarayıcı uygulaması: broker’ın wss:// port’u, ideal olarak 443.
  • Kısıtlayıcı ağ: 443 üzerinde wss://.
  • Yerel geliştirme veya hızlı bir public broker testi: 1883 yeterlidir.

Denemeye hazır mısınız? Online MQTT client’ı açın, bir broker seçin; güvenli WebSocket port’u sizin için otomatik olarak doldurulur.

Sıkça sorulan sorular

Varsayılan MQTT port’u nedir?

TCP üzerinden şifresiz MQTT için varsayılan port 1883, TLS üzerinden MQTT için varsayılan port 8883’tür. Her ikisi de IANA’ya kayıtlıdır. WebSocket port’ları standartlaştırılmamıştır ve broker’a göre değişir.

Web tarayıcısından hangi MQTT port’unu kullanmalıyım?

Tarayıcı ham TCP bağlantısı açamaz, bu yüzden broker’ın WebSocket listener’ını kullanmak zorundadır. HTTPS bir sayfadan güvenli WebSocket (wss) port’una ihtiyacınız vardır; örneğin EMQX’te 8084, HiveMQ’da 8884 veya Eclipse sandbox’ında 443.

MQTT 443 port’unda çalışabilir mi?

Evet. Pek çok broker, güvenlik duvarları veya proxy’ler tarafından neredeyse hiç engellenmediği için güvenli WebSocket üzerinden MQTT’yi 443’te sunar. Bazı bulut IoT servisleri de ALPN kullanarak 443 üzerinde TLS üzerinden MQTT kabul eder.