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ı
| Port | Transport | URL şeması | Şifreli | Tarayıcıda çalışır |
|---|---|---|---|---|
1883 | TCP üzerinden MQTT | mqtt:// | Hayır | Hayır |
8883 | TLS üzerinden MQTT | mqtts:// | Evet | Hayır |
8083 / 8080 / 8000 / 80 | WebSocket üzerinden MQTT | ws:// | Hayır | Yalnızca düz HTTP sayfalarından |
8084 / 8081 / 8884 / 443 | Güvenli WebSocket üzerinden MQTT | wss:// | Evet | Evet |
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
cafilegerektirir). - 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) ve8084(wss) kullanır. - HiveMQ’nun public broker’ı
8000(ws) ve8884(wss) kullanır. - test.mosquitto.org
8080(ws) ve8081(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ı
| Broker | Host | TCP | TLS | WS | WSS |
|---|---|---|---|---|---|
| HiveMQ | broker.hivemq.com | 1883 | 8883 | 8000 /mqtt | 8884 /mqtt |
| EMQX | broker.emqx.io | 1883 | 8883 | 8083 /mqtt | 8084 /mqtt |
| Mosquitto | test.mosquitto.org | 1883 | 8883 | 8080 | 8081 |
| Eclipse | mqtt.eclipseprojects.io | 1883 | 8883 | 80 /mqtt | 443 /mqtt |
| ConnectMQ (erken erişim) | broker.connectmq.com | 1883 | 8883 | 8083 /mqtt | 8084 /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:
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’tews://). 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:
# 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' -vZaman 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:
# 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/passwdAynı 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 olarak443. - Kısıtlayıcı ağ:
443üzerindewss://. - Yerel geliştirme veya hızlı bir public broker testi:
1883yeterlidir.
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.